]> git.immae.eu Git - github/bastienwirtz/homer.git/blame - docs/customservices.md
New Copy to clipboard custom service
[github/bastienwirtz/homer.git] / docs / customservices.md
CommitLineData
dfb0b146 1# Custom Services
fd12de9e 2
92d899bd 3Some service can use a specific a component that provides some extra features by adding a `type` key to the service yaml
ad8efdc7
MK
4configuration and, where applicable, an apikey. Note that config.yml is exposed at /assets/config.yml via HTTP and any
5apikey included in the configuration file is exposed to anyone who can access the homer instance. Only include an apikey
6if your homer instance is secured behind some form of authentication or access restriction.
7
8Available services are in `src/components/`. Here is an overview of all custom services that are available
345dd6c1 9within Homer:
fd12de9e 10
cfd31b86
S
11- [Custom Services](#custom-services)
12 - [Common options](#common-options)
13 - [PiHole](#pihole)
14 - [OpenWeatherMap](#openweathermap)
15 - [Medusa](#medusa)
16 - [Lidarr, Prowlarr, Sonarr and Radarr](#lidarr-prowlarr-sonarr-and-radarr)
17 - [PaperlessNG](#paperlessng)
18 - [Ping](#ping)
19 - [Prometheus](#prometheus)
20 - [AdGuard Home](#adguard-home)
21 - [Portainer](#portainer)
22 - [Emby / Jellyfin](#emby--jellyfin)
23 - [Uptime Kuma](#uptime-kuma)
24 - [Tautulli](#tautulli)
25 - [Mealie](#mealie)
26 - [Healthchecks](#healthchecks)
27 - [Proxmox](#proxmox)
51ba5ff5 28 - [rTorrent](#rtorrent)
cfd31b86 29 - [qBittorrent](#qbittorrent)
f72c0bc7 30 - [CopyToClipboard](#copy-to-clipboard)
7129af3b 31
cfd31b86 32If you experiencing any issue, please have a look to the [troubleshooting](troubleshooting.md) page.
80ba98cf 33
3acfb01d
BW
34## Common options
35
36```yaml
80ba98cf
AB
37- name: "My Service"
38 logo: "assets/tools/sample.png"
39 url: "http://my-service-link"
40 endpoint: "http://my-service-endpoint" # Optional: alternative base URL used to fetch service data is necessary.
66a434e7 41 useCredentials: false # Optional: Override global proxy.useCredentials configuration.
80ba98cf 42 type: "<type>"
3acfb01d
BW
43```
44
fd12de9e
DW
45## PiHole
46
47Using the PiHole service you can display info about your local PiHole instance right on your Homer dashboard.
48
49The following configuration is available for the PiHole service.
50
1d3287dc 51```yaml
3acfb01d
BW
52- name: "Pi-hole"
53 logo: "assets/tools/sample.png"
54 # subtitle: "Network-wide Ad Blocking" # optional, if no subtitle is defined, PiHole statistics will be shown
55 url: "http://192.168.0.151/admin"
56 type: "PiHole"
fd12de9e
DW
57```
58
59## OpenWeatherMap
60
61Using the OpenWeatherMap service you can display weather information about a given location.
f11b1c9d 62The following configuration is available for the OpenWeatherMap service:
fd12de9e 63
1d3287dc 64```yaml
3acfb01d
BW
65- name: "Weather"
66 location: "Amsterdam" # your location.
67 locationId: "2759794" # Optional: Specify OpenWeatherMap city ID for better accuracy
487f954a 68 apikey: "<---insert-api-key-here--->" # insert your own API key here. Request one from https://openweathermap.org/api.
3acfb01d 69 units: "metric" # units to display temperature. Can be one of: metric, imperial, kelvin. Defaults to kelvin.
fdf6d428 70 background: "square" # choose which type of background you want behind the image. Can be one of: square, circle, none. Defaults to none.
3acfb01d 71 type: "OpenWeather"
fd12de9e 72```
97f0c43c
DW
73
74**Remarks:**
92d5b8d4
BW
75If for some reason your city can't be found by entering the name in the `location` property, you could also try to configure the OWM city ID in the `locationId` property. To retrieve your specific City ID, go to the [OWM website](https://openweathermap.org), search for your city and retrieve the ID from the URL (for example, the City ID of Amsterdam is 2759794).
76
4399f5fa 77## Medusa
78
79This service displays News (grey), Warning (orange) or Error (red) notifications bubbles from the Medusa application.
80Two lines are needed in the config.yml :
1d3287dc
BW
81
82```yaml
3acfb01d
BW
83 type: "Medusa"
84 apikey: "01234deb70424befb1f4ef6a23456789"
4399f5fa 85```
1d3287dc 86
4399f5fa 87The url must be the root url of Medusa application.
88The Medusa API key can be found in General configuration > Interface. It is needed to access Medusa API.
89
50b3bddf 90## Lidarr, Prowlarr, Sonarr and Radarr
4399f5fa 91
0121fa80 92This service displays Activity (blue), Warning (orange) or Error (red) notifications bubbles from the Lidarr, Radarr or Sonarr application.
4399f5fa 93Two lines are needed in the config.yml :
1d3287dc
BW
94
95```yaml
50b3bddf 96 type: "Lidarr", "Prowlarr", "Radarr" or "Sonarr"
3acfb01d 97 apikey: "01234deb70424befb1f4ef6a23456789"
4399f5fa 98```
1d3287dc 99
50b3bddf
RC
100The url must be the root url of Lidarr, Prowlarr, Radarr or Sonarr application.
101The Lidarr, Prowlarr, Radarr or Sonarr API key can be found in Settings > General. It is needed to access the API.
db281423 102If you are using an older version of Radarr or Sonarr which don't support the new V3 api endpoints, add the following line to your service config "legacyApi: true", example:
8ede3041
DN
103
104```yaml
105- name: "Radarr"
106 type: "Radarr"
f7f4ebdf 107 url: "http://localhost:7878/"
8ede3041 108 apikey: "MY-SUPER-SECRET-API-KEY"
f7f4ebdf 109 target: "_blank"
8ede3041
DN
110 legacyApi: true
111```
92d899bd 112
92d899bd
BW
113## PaperlessNG
114
168f157c
A
115This service displays total number of documents stored. Two lines are required:
116
117```yaml
118 type: "PaperlessNG"
119 apikey: "0123456789abcdef123456789abcdef"
120```
121
122API key can be generated in Settings > Administration > Auth Tokens
92d899bd 123
92d899bd
BW
124## Ping
125
db281423 126For Ping you need to set the type to Ping and provide a url. By default the HEAD method is used but it can be configured to use GET using the optional `method` property.
b2f6da03 127
e58461ff 128```yaml
3acfb01d
BW
129- name: "Awesome app"
130 type: Ping
131 logo: "assets/tools/sample.png"
400cdb8f
H
132 subtitle: "Bookmark example"
133 tag: "app"
134 url: "https://www.reddit.com/r/selfhosted/"
db281423 135 method: "head"
e58461ff 136```
277dafaf
AB
137
138## Prometheus
139
140For Prometheus you need to set the type to Prometheus and provide a url.
141
142```yaml
143- name: "Prometheus"
144 type: Prometheus
145 logo: "assets/tools/sample.png"
146 url: "http://192.168.0.151/"
147 # subtitle: "Monitor data server"
148```
6e6efc7d
D
149
150## AdGuard Home
151For AdGuard Home you need to set the type to AdGuard, if you have somes issues as 403 responses on requests you need to provide authentification in headers for locations needed as below.
b2a41400 152
6e6efc7d
D
153```yaml
154- name: "Adguard"
155 logo: "assets/tools/adguardhome.png"
156 url: "https://adguard.exemple.com"
157 target: "_blank"
158 type: "AdGuardHome"
159```
7341d763 160
a1a70d4a
ES
161## Portainer
162
163This service displays info about the total number of containers managed by your Portainer instance.
164In order to use it, you must be using Portainer version 1.11 or later. Generate an access token from the UI and pass
165it to the apikey field.
e2ebf997 166By default, every connected environments will be checked. To select specific ones,add an "environments" entry which can be a simple string or an array containing all the selected environments name.
a1a70d4a
ES
167
168See https://docs.portainer.io/v/ce-2.11/user/account-settings#access-tokens
169
170```yaml
171- name: "Portainer"
172 logo: "assets/tools/sample.png"
173 url: "http://192.168.0.151/"
174 type: "Portainer"
175 apikey: "MY-SUPER-SECRET-API-KEY"
e2ebf997
RC
176 # environments:
177 # - "raspberry"
178 # - "local"
a1a70d4a 179```
345dd6c1 180
bf6b543b 181## Emby / Jellyfin
345dd6c1
S
182
183You need to set the type to Emby, provide an api key and choose which stats to show if the subtitle is disabled.
184
185```yaml
186- name: "Emby"
187 logo: "assets/tools/sample.png"
188 url: "http://192.168.0.151/"
6dc8fa20 189 type: "Emby"
345dd6c1
S
190 apikey: "MY-SUPER-SECRET-API-KEY"
191 libraryType: "music" #Choose which stats to show. Can be one of: music, series or movies.
192```
847d1ba3
A
193
194## Uptime Kuma
195
196Using the Uptime Kuma service you can display info about your instance uptime right on your Homer dashboard.
197
198The following configuration is available for the UptimeKuma service. Needs v1.13.1 or later because of the change in APIs due to [multiple status pages support](https://github.com/louislam/uptime-kuma/releases/tag/1.13.1).
199
200```yaml
201- name: "Uptime Kuma"
202 logo: "assets/tools/sample.png"
203 # subtitle: "A fancy self-hosted monitoring tool" # optional, if no subtitle is defined, Uptime Kuma incidents, if any, will be shown
204 url: "http://192.168.0.151:3001"
205 slug: "myCustomDashboard" # Defaults to "default" if not provided.
206 type: "UptimeKuma"
207```
e6c106eb
ES
208
209## Tautulli
210
211The Tautulli service can allow you to show the number of currently active
212streams on you Plex instance. An API key is required, and can be obtained from
213the "Web Interface" section of settings on the Tautulli web UI.
214
215```yaml
216- name: "Tautulli"
217 logo: "assets/tools/sample.png"
218 url: "http://192.168.0.151:8181"
219 type: "Tautulli"
220 apikey: "MY-SUPER-SECRET-API-KEY"
221```
222
223Because the service type and link don't necessarily have to match, you could
224even make the service type Tautulli on your Plex card and provide a separate
225endpoint pointing to Tautulli!
226
227```yaml
228- name: "Plex"
229 logo: "assets/tools/sample.png"
230 url: "http://192.168.0.151:32400/web" # Plex
231 endpoint: "http://192.168.0.151:8181" # Tautulli
232 type: "Tautulli"
233 apikey: "MY-SUPER-SECRET-API-KEY"
234```
ce391840
BW
235
236## Mealie
237
238First off make sure to remove an existing `subtitle` as it will take precedence if set.
239Setting `type: "Mealie"` will then show the number of recipes Mealie is keeping organized or the planned meal for today if one is planned. You will have to set an API key in the field `apikey` which can be created in your Mealie installation.
0eca982f 240
1b9a3f19 241## Healthchecks
242
243This service displays information about the configured status checks from the Healthchecks application.
244Two lines are needed in the config.yml :
245
246```yaml
247 type: "Healthchecks"
248 apikey: "01234deb70424befb1f4ef6a23456789"
249```
250
251The url must be the root url of the Healthchecks application.
252The Healthchecks API key can be found in Settings > API Access > API key (read-only). The key is needed to access Healthchecks API.
10f4cca6 253
51ba5ff5 254## rTorrent
255
256This service displays the global upload and download rates, as well as the number of torrents
257listed in rTorrent. The service communicates with the rTorrent XML-RPC interface which needs
258to be accessible from the browser. Please consult
259[the instructions](https://github.com/rakshasa/rtorrent-doc/blob/master/RPC-Setup-XMLRPC.md)
260for setting up rTorrent and make sure the correct CORS-settings are applied. Examples for various
261servers can be found at https://enable-cors.org/server.html.
262
263```yaml
264- name: "rTorrent"
265 logo: "assets/tools/sample.png"
266 url: "http://192.168.0.151" # Your rTorrent web UI, f.e. ruTorrent or Flood.
267 xmlrpc: "http://192.168.0.151:8081" # Reverse proxy for rTorrent's XML-RPC.
268 type: "Rtorrent"
269 rateInterval: 5000 # Interval for updating the download and upload rates.
270 torrentInterval: 60000 # Interval for updating the torrent count.
271 username: "username" # Username for logging into rTorrent (if applicable).
272 password: "password" # Password for logging into rTorrent (if applicable).
273
274
10f4cca6 275## Proxmox
276
277This service displays status information of a Proxmox node (VMs running and disk, memory and cpu used). It uses the proxmox API and [API Tokens](https://pve.proxmox.com/pve-docs/pveum-plain.html) for authorization so you need to generate one to set in the yaml config. You can set it up in Proxmox under Permissions > API Tokens. You also need to know the realm the user of the API Token is assigned to (by default pam).
278
13069da1 279The API Token (or the user asigned to that token if not separated permissions is checked) are this:
280
281| Path | Permission | Comments |
7edcfe07 282|--------------------|------------|-------------------------------------------------------------------|
13069da1 283| /nodes/<your-node> | Sys.Audit | |
284| /vms/<id-vm> | VM.Audit | You need to have this permission on any VM you want to be counted |
285
286It is highly recommended that you create and API Token with only these permissions on a read-only mode.
287
96da0c7c 288If you get errors, they will be shown on browser's dev console. Main issues tend to be CORS related as Proxmox does not include CORS headers and you have to deploy it behind a reverse proxy and make the proxy add this headers.
13069da1 289
10f4cca6 290Configuration example:
291
292```yaml
293- name: "Proxmox - Node"
294 logo: "https://www.google.com/url?sa=i&url=https%3A%2F%2Fgithub.com%2FandOTP%2FandOTP%2Fissues%2F337&psig=AOvVaw2YKVuEUIBeTUikr7kAjm8D&ust=1665323538747000&source=images&cd=vfe&ved=0CAkQjRxqFwoTCPCTruLj0PoCFQAAAAAdAAAAABAN"
295 type: "Proxmox"
296 url: "https://your.proxmox.server"
297 node: "your-node-name"
298 warning_value: 50
299 danger_value: 80
300 api_token: "PVEAPIToken=root@pam!your-api-token-name=your-api-token-key"
cfd31b86
S
301```
302
303## qBittorrent
304
305This service displays the global upload and download rates, as well as the number of torrents
306listed. The service communicates with the qBittorrent API interface which needs
307to be accessible from the browser. Please consult
308[the instructions](https://github.com/qbittorrent/qBittorrent/pull/12579)
309for setting up qBittorrent and make sure the correct CORS-settings are applied. Examples for various
310servers can be found at [enable-cors.org](https://enable-cors.org/server.html).
311
312```yaml
313- name: "qBittorrent"
314 logo: "assets/tools/sample.png"
315 url: "http://192.168.1.2:8080" # Your rTorrent web UI, f.e. ruTorrent or Flood.
316 type: "qBittorrent"
317 rateInterval: 2000 # Interval for updating the download and upload rates.
318 torrentInterval: 5000 # Interval for updating the torrent count.
319 target: "_blank" # optional html a tag target attribute
320```
f72c0bc7
BW
321
322## Copy to Clipboard
323
324This service displays the same information of a generic one, but shows an icon button on the indicator place (right side) you can click to get the content of the `clipboard` field copied to your clipboard.
325
326You can still provide an `url` that would be open when clicked anywhere but on the icon button.
327
328Configuration example:
329
330```yaml
331- name: "Copy me!"
332 logo: "assets/tools/sample.png"
333 subtitle: "Subtitle text goes here"
334 url: "#"
335 type: "CopyToClipboard"
336 clipboard: "this text will be copied to your clipboard"
337```