]> git.immae.eu Git - github/bastienwirtz/homer.git/blob - docs/customservices.md
Adds custom service for Proxmox
[github/bastienwirtz/homer.git] / docs / customservices.md
1 # Custom Services
2
3 Some service can use a specific a component that provides some extra features by adding a `type` key to the service yaml
4 configuration and, where applicable, an apikey. Note that config.yml is exposed at /assets/config.yml via HTTP and any
5 apikey included in the configuration file is exposed to anyone who can access the homer instance. Only include an apikey
6 if your homer instance is secured behind some form of authentication or access restriction.
7
8 Available services are in `src/components/`. Here is an overview of all custom services that are available
9 within Homer:
10 + [PiHole](#pihole)
11 + [OpenWeatherMap](#openweathermap)
12 + [Medusa](#medusa)
13 + [Lidarr, Prowlarr, Sonarr and Radarr](#lidarr-prowlarr-sonarr-and-radarr)
14 + [PaperlessNG](#paperlessng)
15 + [Ping](#ping)
16 + [Prometheus](#prometheus)
17 + [AdGuard Home](#adguard-home)
18 + [Portainer](#portainer)
19 + [Emby / Jellyfin](#emby--jellyfin)
20 + [Uptime Kuma](#uptime-kuma)
21 + [Tautulli](#tautulli)
22 + [Mealie](#mealie)
23 + [Healthchecks](#healthchecks)
24 + [Proxmox](#proxmox)
25
26 If you experiencing any issue, please have a look to the [troubleshooting](troubleshooting.md) page.
27
28
29 ## Common options
30
31 ```yaml
32 - name: "My Service"
33 logo: "assets/tools/sample.png"
34 url: "http://my-service-link"
35 endpoint: "http://my-service-endpoint" # Optional: alternative base URL used to fetch service data is necessary.
36 useCredentials: false # Optional: Override global proxy.useCredentials configuration.
37 type: "<type>"
38 ```
39
40 ## PiHole
41
42 Using the PiHole service you can display info about your local PiHole instance right on your Homer dashboard.
43
44 The following configuration is available for the PiHole service.
45
46 ```yaml
47 - name: "Pi-hole"
48 logo: "assets/tools/sample.png"
49 # subtitle: "Network-wide Ad Blocking" # optional, if no subtitle is defined, PiHole statistics will be shown
50 url: "http://192.168.0.151/admin"
51 type: "PiHole"
52 ```
53
54 ## OpenWeatherMap
55
56 Using the OpenWeatherMap service you can display weather information about a given location.
57 The following configuration is available for the OpenWeatherMap service:
58
59 ```yaml
60 - name: "Weather"
61 location: "Amsterdam" # your location.
62 locationId: "2759794" # Optional: Specify OpenWeatherMap city ID for better accuracy
63 apikey: "<---insert-api-key-here--->" # insert your own API key here. Request one from https://openweathermap.org/api.
64 units: "metric" # units to display temperature. Can be one of: metric, imperial, kelvin. Defaults to kelvin.
65 background: "square" # choose which type of background you want behind the image. Can be one of: square, circle, none. Defaults to none.
66 type: "OpenWeather"
67 ```
68
69 **Remarks:**
70 If 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).
71
72 ## Medusa
73
74 This service displays News (grey), Warning (orange) or Error (red) notifications bubbles from the Medusa application.
75 Two lines are needed in the config.yml :
76
77 ```yaml
78 type: "Medusa"
79 apikey: "01234deb70424befb1f4ef6a23456789"
80 ```
81
82 The url must be the root url of Medusa application.
83 The Medusa API key can be found in General configuration > Interface. It is needed to access Medusa API.
84
85 ## Lidarr, Prowlarr, Sonarr and Radarr
86
87 This service displays Activity (blue), Warning (orange) or Error (red) notifications bubbles from the Lidarr, Radarr or Sonarr application.
88 Two lines are needed in the config.yml :
89
90 ```yaml
91 type: "Lidarr", "Prowlarr", "Radarr" or "Sonarr"
92 apikey: "01234deb70424befb1f4ef6a23456789"
93 ```
94
95 The url must be the root url of Lidarr, Prowlarr, Radarr or Sonarr application.
96 The Lidarr, Prowlarr, Radarr or Sonarr API key can be found in Settings > General. It is needed to access the API.
97 If 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:
98
99 ```yaml
100 - name: "Radarr"
101 type: "Radarr"
102 url: "http://localhost:7878/"
103 apikey: "MY-SUPER-SECRET-API-KEY"
104 target: "_blank"
105 legacyApi: true
106 ```
107
108 ## PaperlessNG
109
110 This service displays total number of documents stored. Two lines are required:
111
112 ```yaml
113 type: "PaperlessNG"
114 apikey: "0123456789abcdef123456789abcdef"
115 ```
116
117 API key can be generated in Settings > Administration > Auth Tokens
118
119 ## Ping
120
121 For 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.
122
123 ```yaml
124 - name: "Awesome app"
125 type: Ping
126 logo: "assets/tools/sample.png"
127 subtitle: "Bookmark example"
128 tag: "app"
129 url: "https://www.reddit.com/r/selfhosted/"
130 method: "head"
131 ```
132
133 ## Prometheus
134
135 For Prometheus you need to set the type to Prometheus and provide a url.
136
137 ```yaml
138 - name: "Prometheus"
139 type: Prometheus
140 logo: "assets/tools/sample.png"
141 url: "http://192.168.0.151/"
142 # subtitle: "Monitor data server"
143 ```
144
145 ## AdGuard Home
146 For 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.
147
148 ```yaml
149 - name: "Adguard"
150 logo: "assets/tools/adguardhome.png"
151 url: "https://adguard.exemple.com"
152 target: "_blank"
153 type: "AdGuardHome"
154 ```
155
156 ## Portainer
157
158 This service displays info about the total number of containers managed by your Portainer instance.
159 In order to use it, you must be using Portainer version 1.11 or later. Generate an access token from the UI and pass
160 it to the apikey field.
161 By 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.
162
163 See https://docs.portainer.io/v/ce-2.11/user/account-settings#access-tokens
164
165 ```yaml
166 - name: "Portainer"
167 logo: "assets/tools/sample.png"
168 url: "http://192.168.0.151/"
169 type: "Portainer"
170 apikey: "MY-SUPER-SECRET-API-KEY"
171 # environments:
172 # - "raspberry"
173 # - "local"
174 ```
175
176 ## Emby / Jellyfin
177
178 You need to set the type to Emby, provide an api key and choose which stats to show if the subtitle is disabled.
179
180 ```yaml
181 - name: "Emby"
182 logo: "assets/tools/sample.png"
183 url: "http://192.168.0.151/"
184 type: "Emby"
185 apikey: "MY-SUPER-SECRET-API-KEY"
186 libraryType: "music" #Choose which stats to show. Can be one of: music, series or movies.
187 ```
188
189 ## Uptime Kuma
190
191 Using the Uptime Kuma service you can display info about your instance uptime right on your Homer dashboard.
192
193 The 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).
194
195 ```yaml
196 - name: "Uptime Kuma"
197 logo: "assets/tools/sample.png"
198 # subtitle: "A fancy self-hosted monitoring tool" # optional, if no subtitle is defined, Uptime Kuma incidents, if any, will be shown
199 url: "http://192.168.0.151:3001"
200 slug: "myCustomDashboard" # Defaults to "default" if not provided.
201 type: "UptimeKuma"
202 ```
203
204 ## Tautulli
205
206 The Tautulli service can allow you to show the number of currently active
207 streams on you Plex instance. An API key is required, and can be obtained from
208 the "Web Interface" section of settings on the Tautulli web UI.
209
210 ```yaml
211 - name: "Tautulli"
212 logo: "assets/tools/sample.png"
213 url: "http://192.168.0.151:8181"
214 type: "Tautulli"
215 apikey: "MY-SUPER-SECRET-API-KEY"
216 ```
217
218 Because the service type and link don't necessarily have to match, you could
219 even make the service type Tautulli on your Plex card and provide a separate
220 endpoint pointing to Tautulli!
221
222 ```yaml
223 - name: "Plex"
224 logo: "assets/tools/sample.png"
225 url: "http://192.168.0.151:32400/web" # Plex
226 endpoint: "http://192.168.0.151:8181" # Tautulli
227 type: "Tautulli"
228 apikey: "MY-SUPER-SECRET-API-KEY"
229 ```
230
231 ## Mealie
232
233 First off make sure to remove an existing `subtitle` as it will take precedence if set.
234 Setting `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.
235
236 ## Healthchecks
237
238 This service displays information about the configured status checks from the Healthchecks application.
239 Two lines are needed in the config.yml :
240
241 ```yaml
242 type: "Healthchecks"
243 apikey: "01234deb70424befb1f4ef6a23456789"
244 ```
245
246 The url must be the root url of the Healthchecks application.
247 The Healthchecks API key can be found in Settings > API Access > API key (read-only). The key is needed to access Healthchecks API.
248
249 ## Proxmox
250
251 This 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).
252
253 Configuration example:
254
255 ```yaml
256 - name: "Proxmox - Node"
257 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"
258 type: "Proxmox"
259 url: "https://your.proxmox.server"
260 node: "your-node-name"
261 warning_value: 50
262 danger_value: 80
263 api_token: "PVEAPIToken=root@pam!your-api-token-name=your-api-token-key"
264 ```