53 Commits

Author SHA1 Message Date
Jon Seager
ca396ce96b
Override config directory with env var.
Until this change, the config directory was assumed
to be located at '/config'. This patch retains that
default behaviour, but enables users/devs to override
that behaviour by setting the HOMEPAGE_CONFIG_DIR
variable.
2023-07-10 15:48:51 +01:00
shamoon
a2fe1eef7a Handle invalid fields syntax in service labels 2023-06-28 08:49:25 -07:00
Dan5py
4a97fce841 Support old traefik CRD group 2023-06-13 22:04:56 +02:00
Dan5py
fce680d981 Fixes #1606 2023-06-13 21:02:06 +02:00
shamoon
1fb7be7457 Retrieve ping url from config rather than as query parameter 2023-06-11 09:50:41 -07:00
shamoon
27958c9f69
Merge pull request #1571 from rkokkelk/issue/1496
Fix: use service labels instead of container for service discovery with Docker Swarm
2023-06-08 00:35:22 -07:00
shamoon
4245f1070a fix docker service discovery, code styling 2023-06-07 14:06:23 -07:00
Matteo Bossi
5b3d1cc6e0 Make styling more consistent and add toggle to opt-in instead of opting out 2023-06-06 01:14:10 +02:00
RoyK
f656c2b46d
fix(service-helper): service detection with Docker Swarm
The current implementation of service detection focusses on containers.
However when using Docker Swarm this limits automatic service detection
to the containers running on the same node as homepage (or
docker-proxy). Detecting other services in the docker swarm is with the
current implementation not possible.

This commit fixes this by getting the appropriate labels from services
when Docker swarm is configured in the config file. This ensures that
the appropriate labels are gathered from the service definition instead
of the container definiation, thus allowing for automatic service
detection for the entire Docker swarm. Please note that in order for
this to function the homepage (or dockerproxy) should be running on a
manager node. Only the manager node is able to gather all the relevant
service labels.

Fixes: #752, #970, #955, #1255, #1045, #1496
2023-06-05 16:06:14 +02:00
shamoon
56644ac487 Support env substitution for k8s 2023-05-28 23:03:04 -07:00
Jon
e6d95e29ee
Translate environment vars in labels 2023-05-29 01:14:03 -04:00
Shaun Walker
cf7c68261f
Add support for QNAP instances with multiple volumes (#1528)
* Add support for pfSense API

* Fix linting issues

* remove a line

* rename cpu to load in default block

* Re-order container blocks to ensure defaults show

* clean up

* Add support for multiple volumes as well as defining the volume you want to track

* QNAP widget syntax corrections, translate invalid

---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2023-05-21 08:13:40 -07:00
Shaun Walker
77f4c8bf54
Add pfSense API widget (#1491)
* Add support for pfSense API

* Fix linting issues

* remove a line

* rename cpu to load in default block

* Re-order container blocks to ensure defaults show

* simplify pfsense widget, rename, limit blocks

---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2023-05-13 13:44:33 -07:00
Georges-Antoine Assi
bd1c2b1881
Add setting to hide widgets on failure 2023-04-30 19:09:37 -04:00
shamoon
b5ada5ef11 Add type field to services from api 2023-04-21 08:50:15 -07:00
shamoon
7e012993d8 Support per-service stats control 2023-04-07 21:34:33 -07:00
shamoon
e4788cc7f6 Fix widget option boolean parsing with docker labels 2023-04-06 20:18:06 -07:00
shamoon
a42c50f1cc fix emby widget options interpolation 2023-04-04 19:08:52 -07:00
shamoon
a0fa6367ca
Merge pull request #1161 from MrLemur/add-traefik-ingressroute
Feature: Add Traefik IngressRoute support for Kubernetes
2023-04-04 15:56:38 -07:00
shamoon
48180604f9 Fix jellyfin / emby blocks boolean evaluation 2023-04-04 00:55:05 -07:00
Sebastian Osiński
f55ba3b67a Add option to specify volume in Diskstation widget 2023-04-03 22:10:56 +02:00
Kassim Benhaddad
df714c7556 feat: add Traefik IngressRoute support for k8s 2023-03-29 23:19:56 +01:00
shamoon
eaf7ba608b Fix blocks for emby/jellyfin, support enable/disable 2023-03-12 16:50:28 -07:00
James Wynn
e0f1aae4d5 Added support for environment variable substitution
* Only environment variables starting with HOMEPAGE_VAR_ and HOMEPAGE_FILE_
  are supported
* The value of env var HOMEPAGE_VAR_XXX will replace {{HOMEPAGE_VAR_XXX}}
  in any config
* The value of env var HOMEPAGE_FILE_XXX must be a file path, the contents
  of which will be used to replace {{HOMEPAGE_FILE_XXX}} in any config
* If a substituted value contains a variable reference it may also be
  replaced, but the behavior is non-deterministic
2023-02-23 08:50:25 -06:00
James Wynn
f8f96645b0 Added "external" boolean annotation to specify external services
External services define a kubernetes service pointing to an application
hosted outside of the cluster. These services should not attempt to get
the status based on kubernetes deployments. The new boolean flag disables
this functionality. Since this is an edge case, the default value is "false".
2023-02-22 09:05:26 -06:00
James Wynn
b4cdb03228 Added support for "ping" configuration in kubernetes ingress annotations 2023-02-09 17:09:59 -06:00
shamoon
17ebdd8226 Unifi widgets support sites other than default 2023-02-03 01:19:42 -08:00
Jason Fischer
e96036e076
Merge pull request #873 from jameswynn/sort-services-by-weight
Services are now sorted by a new 'weight' field
2023-01-24 17:52:08 -08:00
James Wynn
8d016629d3 Services are now sorted by the 'weight' field.
* Default for discovered services is 0
* Default weight for configured services is their index within their
  group scaled by 100, i.e. (index + 1) * 100
* Should be backwards compatible with current loose ordering
2023-01-24 12:48:49 -06:00
James Wynn
02e9df8f28 Parse widget field list if is a string 2023-01-24 09:31:20 -06:00
Michael Shamoon
ca4b5b131d Allow specifying wan interface on opnsense widget 2023-01-22 11:02:52 -08:00
James Wynn
4d6ce1f7e2 Widgets in discovered services now work correctly 2023-01-09 08:30:50 -06:00
James Wynn
36ed1022e3 detection now uses annotation "gethomepage.dev/enabled" instead of label 2023-01-03 16:15:08 -06:00
James Wynn
e15ba1c82c Merge branch 'main' into kubernetes 2022-12-31 11:19:42 -06:00
Michael Shamoon
ee729a7e6a remove error on no discovered services 2022-12-30 20:31:25 -08:00
Michael Shamoon
6b90d3ef28 Handle docker server failures if others succeed 2022-12-22 21:16:52 -08:00
Vinay Dawani
9188f5cdd9 cleanup 2022-12-11 12:49:23 -05:00
Vinay Dawani
fb883c7b27 added yaml file variable for swarm mode checks 2022-12-11 03:03:20 -05:00
James Wynn
ec08535204 fixed podSelector discovery 2022-12-09 07:56:51 -06:00
James Wynn
a146c13c4f fixed unintentional blank default podSelector from discovery 2022-12-09 07:52:32 -06:00
James Wynn
8543118607 updated ingress selector label, added href override annotation 2022-12-09 07:43:52 -06:00
James Wynn
09eb172079 new status format, new podSelector field, more accurate pod stats
* renamed pod label prefix from "homepage" to "gethomepage.dev"
  which is more inline with typical kubernetes practices
2022-12-08 16:04:33 -06:00
James Wynn
174cb651b4 Merge branch 'main' into kubernetes 2022-12-08 09:57:51 -06:00
shamoon
9d2f1ab8c8 Add default interval setting for coinmarketcap 2022-12-01 06:36:51 -08:00
James Wynn
056e26dfd3 Improved handling of empty or disabled kubernetes configuration 2022-11-06 06:58:52 -06:00
James Wynn
0c6f7dbee1 Cleaned up some variable names 2022-11-06 06:58:52 -06:00
James Wynn
4fc6db49ca Improved kubernetes error handling 2022-11-06 06:58:52 -06:00
James Wynn
c4333fd2dc Kubernetes support
* Total CPU and Memory usage for the entire cluster
* Total CPU and Memory usage for kubernetes pods
* Service discovery via annotations on ingress
* No storage stats yet
* No network stats yet
2022-11-06 06:58:52 -06:00
Michael Shamoon
48a09e5a99 Refactor info widget sanitizing / privateOptions 2022-10-12 01:53:57 -07:00
Michael Shamoon
7c39cd8960 Private widget options API 2022-10-11 12:16:18 -07:00