]> git.immae.eu Git - github/bastienwirtz/homer.git/blame - docs/customservices.md
Apply lint fixes
[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)
7129af3b 30
cfd31b86 31If you experiencing any issue, please have a look to the [troubleshooting](troubleshooting.md) page.
80ba98cf 32
3acfb01d
BW
33## Common options
34
35```yaml
80ba98cf
AB
36- name: "My Service"
37 logo: "assets/tools/sample.png"
38 url: "http://my-service-link"
39 endpoint: "http://my-service-endpoint" # Optional: alternative base URL used to fetch service data is necessary.
66a434e7 40 useCredentials: false # Optional: Override global proxy.useCredentials configuration.
80ba98cf 41 type: "<type>"
3acfb01d
BW
42```
43
fd12de9e
DW
44## PiHole
45
46Using the PiHole service you can display info about your local PiHole instance right on your Homer dashboard.
47
48The following configuration is available for the PiHole service.
49
1d3287dc 50```yaml
3acfb01d
BW
51- name: "Pi-hole"
52 logo: "assets/tools/sample.png"
53 # subtitle: "Network-wide Ad Blocking" # optional, if no subtitle is defined, PiHole statistics will be shown
54 url: "http://192.168.0.151/admin"
55 type: "PiHole"
fd12de9e
DW
56```
57
58## OpenWeatherMap
59
60Using the OpenWeatherMap service you can display weather information about a given location.
f11b1c9d 61The following configuration is available for the OpenWeatherMap service:
fd12de9e 62
1d3287dc 63```yaml
3acfb01d
BW
64- name: "Weather"
65 location: "Amsterdam" # your location.
66 locationId: "2759794" # Optional: Specify OpenWeatherMap city ID for better accuracy
487f954a 67 apikey: "<---insert-api-key-here--->" # insert your own API key here. Request one from https://openweathermap.org/api.
3acfb01d 68 units: "metric" # units to display temperature. Can be one of: metric, imperial, kelvin. Defaults to kelvin.
fdf6d428 69 background: "square" # choose which type of background you want behind the image. Can be one of: square, circle, none. Defaults to none.
3acfb01d 70 type: "OpenWeather"
fd12de9e 71```
97f0c43c
DW
72
73**Remarks:**
92d5b8d4
BW
74If 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).
75
4399f5fa 76## Medusa
77
78This service displays News (grey), Warning (orange) or Error (red) notifications bubbles from the Medusa application.
79Two lines are needed in the config.yml :
1d3287dc
BW
80
81```yaml
3acfb01d
BW
82 type: "Medusa"
83 apikey: "01234deb70424befb1f4ef6a23456789"
4399f5fa 84```
1d3287dc 85
4399f5fa 86The url must be the root url of Medusa application.
87The Medusa API key can be found in General configuration > Interface. It is needed to access Medusa API.
88
50b3bddf 89## Lidarr, Prowlarr, Sonarr and Radarr
4399f5fa 90
0121fa80 91This service displays Activity (blue), Warning (orange) or Error (red) notifications bubbles from the Lidarr, Radarr or Sonarr application.
4399f5fa 92Two lines are needed in the config.yml :
1d3287dc
BW
93
94```yaml
50b3bddf 95 type: "Lidarr", "Prowlarr", "Radarr" or "Sonarr"
3acfb01d 96 apikey: "01234deb70424befb1f4ef6a23456789"
4399f5fa 97```
1d3287dc 98
50b3bddf
RC
99The url must be the root url of Lidarr, Prowlarr, Radarr or Sonarr application.
100The Lidarr, Prowlarr, Radarr or Sonarr API key can be found in Settings > General. It is needed to access the API.
db281423 101If 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
102
103```yaml
104- name: "Radarr"
105 type: "Radarr"
f7f4ebdf 106 url: "http://localhost:7878/"
8ede3041 107 apikey: "MY-SUPER-SECRET-API-KEY"
f7f4ebdf 108 target: "_blank"
8ede3041
DN
109 legacyApi: true
110```
92d899bd 111
92d899bd
BW
112## PaperlessNG
113
168f157c
A
114This service displays total number of documents stored. Two lines are required:
115
116```yaml
117 type: "PaperlessNG"
118 apikey: "0123456789abcdef123456789abcdef"
119```
120
121API key can be generated in Settings > Administration > Auth Tokens
92d899bd 122
92d899bd
BW
123## Ping
124
db281423 125For 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 126
e58461ff 127```yaml
3acfb01d
BW
128- name: "Awesome app"
129 type: Ping
130 logo: "assets/tools/sample.png"
400cdb8f
H
131 subtitle: "Bookmark example"
132 tag: "app"
133 url: "https://www.reddit.com/r/selfhosted/"
db281423 134 method: "head"
e58461ff 135```
277dafaf
AB
136
137## Prometheus
138
139For Prometheus you need to set the type to Prometheus and provide a url.
140
141```yaml
142- name: "Prometheus"
143 type: Prometheus
144 logo: "assets/tools/sample.png"
145 url: "http://192.168.0.151/"
146 # subtitle: "Monitor data server"
147```
6e6efc7d
D
148
149## AdGuard Home
150For 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 151
6e6efc7d
D
152```yaml
153- name: "Adguard"
154 logo: "assets/tools/adguardhome.png"
155 url: "https://adguard.exemple.com"
156 target: "_blank"
157 type: "AdGuardHome"
158```
7341d763 159
a1a70d4a
ES
160## Portainer
161
162This service displays info about the total number of containers managed by your Portainer instance.
163In order to use it, you must be using Portainer version 1.11 or later. Generate an access token from the UI and pass
164it to the apikey field.
e2ebf997 165By 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
166
167See https://docs.portainer.io/v/ce-2.11/user/account-settings#access-tokens
168
169```yaml
170- name: "Portainer"
171 logo: "assets/tools/sample.png"
172 url: "http://192.168.0.151/"
173 type: "Portainer"
174 apikey: "MY-SUPER-SECRET-API-KEY"
e2ebf997
RC
175 # environments:
176 # - "raspberry"
177 # - "local"
a1a70d4a 178```
345dd6c1 179
bf6b543b 180## Emby / Jellyfin
345dd6c1
S
181
182You need to set the type to Emby, provide an api key and choose which stats to show if the subtitle is disabled.
183
184```yaml
185- name: "Emby"
186 logo: "assets/tools/sample.png"
187 url: "http://192.168.0.151/"
6dc8fa20 188 type: "Emby"
345dd6c1
S
189 apikey: "MY-SUPER-SECRET-API-KEY"
190 libraryType: "music" #Choose which stats to show. Can be one of: music, series or movies.
191```
847d1ba3
A
192
193## Uptime Kuma
194
195Using the Uptime Kuma service you can display info about your instance uptime right on your Homer dashboard.
196
197The 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).
198
199```yaml
200- name: "Uptime Kuma"
201 logo: "assets/tools/sample.png"
202 # subtitle: "A fancy self-hosted monitoring tool" # optional, if no subtitle is defined, Uptime Kuma incidents, if any, will be shown
203 url: "http://192.168.0.151:3001"
204 slug: "myCustomDashboard" # Defaults to "default" if not provided.
205 type: "UptimeKuma"
206```
e6c106eb
ES
207
208## Tautulli
209
210The Tautulli service can allow you to show the number of currently active
211streams on you Plex instance. An API key is required, and can be obtained from
212the "Web Interface" section of settings on the Tautulli web UI.
213
214```yaml
215- name: "Tautulli"
216 logo: "assets/tools/sample.png"
217 url: "http://192.168.0.151:8181"
218 type: "Tautulli"
219 apikey: "MY-SUPER-SECRET-API-KEY"
220```
221
222Because the service type and link don't necessarily have to match, you could
223even make the service type Tautulli on your Plex card and provide a separate
224endpoint pointing to Tautulli!
225
226```yaml
227- name: "Plex"
228 logo: "assets/tools/sample.png"
229 url: "http://192.168.0.151:32400/web" # Plex
230 endpoint: "http://192.168.0.151:8181" # Tautulli
231 type: "Tautulli"
232 apikey: "MY-SUPER-SECRET-API-KEY"
233```
ce391840
BW
234
235## Mealie
236
237First off make sure to remove an existing `subtitle` as it will take precedence if set.
238Setting `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 239
1b9a3f19 240## Healthchecks
241
242This service displays information about the configured status checks from the Healthchecks application.
243Two lines are needed in the config.yml :
244
245```yaml
246 type: "Healthchecks"
247 apikey: "01234deb70424befb1f4ef6a23456789"
248```
249
250The url must be the root url of the Healthchecks application.
251The Healthchecks API key can be found in Settings > API Access > API key (read-only). The key is needed to access Healthchecks API.
10f4cca6 252
51ba5ff5 253## rTorrent
254
255This service displays the global upload and download rates, as well as the number of torrents
256listed in rTorrent. The service communicates with the rTorrent XML-RPC interface which needs
257to be accessible from the browser. Please consult
258[the instructions](https://github.com/rakshasa/rtorrent-doc/blob/master/RPC-Setup-XMLRPC.md)
259for setting up rTorrent and make sure the correct CORS-settings are applied. Examples for various
260servers can be found at https://enable-cors.org/server.html.
261
262```yaml
263- name: "rTorrent"
264 logo: "assets/tools/sample.png"
265 url: "http://192.168.0.151" # Your rTorrent web UI, f.e. ruTorrent or Flood.
266 xmlrpc: "http://192.168.0.151:8081" # Reverse proxy for rTorrent's XML-RPC.
267 type: "Rtorrent"
268 rateInterval: 5000 # Interval for updating the download and upload rates.
269 torrentInterval: 60000 # Interval for updating the torrent count.
270 username: "username" # Username for logging into rTorrent (if applicable).
271 password: "password" # Password for logging into rTorrent (if applicable).
272
273
10f4cca6 274## Proxmox
275
276This 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).
277
13069da1 278The API Token (or the user asigned to that token if not separated permissions is checked) are this:
279
280| Path | Permission | Comments |
7edcfe07 281|--------------------|------------|-------------------------------------------------------------------|
13069da1 282| /nodes/<your-node> | Sys.Audit | |
283| /vms/<id-vm> | VM.Audit | You need to have this permission on any VM you want to be counted |
284
285It is highly recommended that you create and API Token with only these permissions on a read-only mode.
286
96da0c7c 287If 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 288
10f4cca6 289Configuration example:
290
291```yaml
292- name: "Proxmox - Node"
293 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"
294 type: "Proxmox"
295 url: "https://your.proxmox.server"
296 node: "your-node-name"
297 warning_value: 50
298 danger_value: 80
299 api_token: "PVEAPIToken=root@pam!your-api-token-name=your-api-token-key"
cfd31b86
S
300```
301
302## qBittorrent
303
304This service displays the global upload and download rates, as well as the number of torrents
305listed. The service communicates with the qBittorrent API interface which needs
306to be accessible from the browser. Please consult
307[the instructions](https://github.com/qbittorrent/qBittorrent/pull/12579)
308for setting up qBittorrent and make sure the correct CORS-settings are applied. Examples for various
309servers can be found at [enable-cors.org](https://enable-cors.org/server.html).
310
311```yaml
312- name: "qBittorrent"
313 logo: "assets/tools/sample.png"
314 url: "http://192.168.1.2:8080" # Your rTorrent web UI, f.e. ruTorrent or Flood.
315 type: "qBittorrent"
316 rateInterval: 2000 # Interval for updating the download and upload rates.
317 torrentInterval: 5000 # Interval for updating the torrent count.
318 target: "_blank" # optional html a tag target attribute
319```