From 97bb74a114d4da221f26194110c76124928b7d34 Mon Sep 17 00:00:00 2001 From: Bastien Wirtz Date: Sun, 24 Nov 2024 09:30:09 +0100 Subject: [PATCH 001/161] doc(docker): remove deprecated docker compose section fix #836 --- README.md | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/README.md b/README.md index d9e45f0..1997e90 100644 --- a/README.md +++ b/README.md @@ -121,17 +121,6 @@ If you would like to change internal port of Homer from default `8080` to your p - **`IPV6_DISABLE`** (default: 0) Set to `1` to disable listening on IPv6. -#### With docker-compose - -A [`docker-compose.yml`](docker-compose.yml) file is available as an example. It must be edited to match your needs. You probably want to adjust the port mapping and volume binding (equivalent to `-p` and `-v` arguments). - -Then launch the container: - -```sh -cd /path/to/docker-compose.yml/ -docker-compose up -d -``` - ### Using the release tarball (prebuilt, ready to use) Download and extract the latest release (`homer.zip`) from the [release page](https://github.com/bastienwirtz/homer/releases), rename the `assets/config.yml.dist` file to `assets/config.yml`, and put it behind a web server. From 7909bd10547f78f1e7de8551fd673356e1dbc8bf Mon Sep 17 00:00:00 2001 From: Bastien Wirtz Date: Sun, 24 Nov 2024 09:30:55 +0100 Subject: [PATCH 002/161] doc(smartcards): fix incomplete sentence. Fix #834 --- docs/customservices.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/customservices.md b/docs/customservices.md index d8af4c5..1a072ac 100644 --- a/docs/customservices.md +++ b/docs/customservices.md @@ -49,7 +49,11 @@ within Homer: - [What's Up Docker](#whats-up-docker) > [!IMPORTANT] -> Using smart cards will probably requires +> Using smart cards, which interact with other services, will require either that: +> +> - All services are exposed on the **same domain** as homer (mydomain,tld/pihole, mydomain,tld/proxmox), avoiding any cross domain request issues (CORS). +> - All services **accecpt cross site requests** (= send the necessary CORS headers, either set directly in the service configuration if possible, or using a proxy to set the headers) +> > If you experiencing any issue, please have a look to the [troubleshooting](troubleshooting.md#my-service-card-doesnt-work-nothing-appears-or-offline-status-is-displayed-pi-hole-sonarr-ping-) page. ## Common options From f150c6c037a0e9cd47f5e9ec9ba154ad8b266298 Mon Sep 17 00:00:00 2001 From: Adam Monsen Date: Sun, 1 Dec 2024 05:29:36 -0800 Subject: [PATCH 003/161] Add Traefik, Wallabag, Olivetin (#838) * Add Traefik, Wallabag, Olivetin * allow subtitle override * add dummy data for olivetin, traefik, wallabag --- docs/customservices.md | 36 ++++++++++ dummy-data/olivetin/webUiSettings.json | 18 +++++ dummy-data/traefik/api/version | 5 ++ dummy-data/wallabag/api/version | 1 + src/components/services/Olivetin.vue | 87 ++++++++++++++++++++++++ src/components/services/Traefik.vue | 92 ++++++++++++++++++++++++++ src/components/services/Wallabag.vue | 87 ++++++++++++++++++++++++ 7 files changed, 326 insertions(+) create mode 100644 dummy-data/olivetin/webUiSettings.json create mode 100644 dummy-data/traefik/api/version create mode 100644 dummy-data/wallabag/api/version create mode 100644 src/components/services/Olivetin.vue create mode 100644 src/components/services/Traefik.vue create mode 100644 src/components/services/Wallabag.vue diff --git a/docs/customservices.md b/docs/customservices.md index 1a072ac..781ee3c 100644 --- a/docs/customservices.md +++ b/docs/customservices.md @@ -28,6 +28,7 @@ within Homer: - [Medusa](#medusa) - [Nextcloud](#nextcloud) - [OctoPrint / Moonraker](#octoprintmoonraker) +- [Olivetin](#olivetin) - [OpenHAB](#openhab) - [OpenWeatherMap](#openweathermap) - [PaperlessNG](#paperlessng) @@ -45,7 +46,9 @@ within Homer: - [Speedtest Tracker](#speedtesttracker) - [Tautulli](#tautulli) - [Tdarr](#tdarr) +- [Traefik](#traefik) - [Uptime Kuma](#uptime-kuma) +- [Wallabag](#wallabag) - [What's Up Docker](#whats-up-docker) > [!IMPORTANT] @@ -307,6 +310,17 @@ Moonraker's API mimmicks a few of OctoPrint's endpoints which makes these servic type: "OctoPrint" ``` +## Olivetin + +This service displays a version string instead of a subtitle. Example configuration: + +```yaml +- name: Olivetin + type: Olivetin + logo: assets/tools/sample.png + url: https://olivetin.example.com +``` + ## OpenHAB You need to set the type to OpenHAB, provide an api key and enable cors on OpenHAB. @@ -594,6 +608,17 @@ for transcoding on your Tdarr instance as well as the number of errored items. checkInterval: 5000 # (Optional) Interval (in ms) for updating the queue & error counts ``` +## Traefik + +This service displays a version string instead of a subtitle. Example configuration: + +```yaml +- name: Traefik + type: Traefik + logo: assets/tools/sample.png + url: http://traefik.example.com +``` + ## Uptime Kuma Using the Uptime Kuma service you can display info about your instance uptime right on your Homer dashboard. @@ -609,6 +634,17 @@ The following configuration is available for the UptimeKuma service. Needs v1.13 type: "UptimeKuma" ``` +## Wallabag + +This service displays a version string instead of a subtitle. Example configuration: + +```yaml +- name: Wallabag + type: Wallabag + logo: assets/tools/sample.png + url: https://wallabag.example.com +``` + ## What's up Docker What's up Docker allow to display info about the number of container running and the number for which an update is available on your Homer dashboard. diff --git a/dummy-data/olivetin/webUiSettings.json b/dummy-data/olivetin/webUiSettings.json new file mode 100644 index 0000000..581769a --- /dev/null +++ b/dummy-data/olivetin/webUiSettings.json @@ -0,0 +1,18 @@ +{ + "Rest": "./api/", + "ShowFooter": true, + "ShowNavigation": true, + "ShowNewVersions": true, + "AvailableVersion": "none", + "CurrentVersion": "2024.11.24", + "PageTitle": "OliveTin", + "SectionNavigationStyle": "sidebar", + "DefaultIconForBack": "«", + "SshFoundKey": "not found at /home/user/.ssh/id_rsa", + "SshFoundConfig": "not found at /home/user/.ssh/config", + "EnableCustomJs": false, + "AuthLoginUrl": "", + "AuthLocalLogin": false, + "AuthOAuth2Providers": null, + "AdditionalLinks": null +} diff --git a/dummy-data/traefik/api/version b/dummy-data/traefik/api/version new file mode 100644 index 0000000..ddf8cd4 --- /dev/null +++ b/dummy-data/traefik/api/version @@ -0,0 +1,5 @@ +{ + "Version": "3.1.7", + "Codename": "comte", + "startDate": "2024-11-20T05:55:46.259506879Z" +} diff --git a/dummy-data/wallabag/api/version b/dummy-data/wallabag/api/version new file mode 100644 index 0000000..dd7d687 --- /dev/null +++ b/dummy-data/wallabag/api/version @@ -0,0 +1 @@ +"2.6.10" \ No newline at end of file diff --git a/src/components/services/Olivetin.vue b/src/components/services/Olivetin.vue new file mode 100644 index 0000000..f0a022b --- /dev/null +++ b/src/components/services/Olivetin.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/src/components/services/Traefik.vue b/src/components/services/Traefik.vue new file mode 100644 index 0000000..c043813 --- /dev/null +++ b/src/components/services/Traefik.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/src/components/services/Wallabag.vue b/src/components/services/Wallabag.vue new file mode 100644 index 0000000..1c2b3c4 --- /dev/null +++ b/src/components/services/Wallabag.vue @@ -0,0 +1,87 @@ + + + + + From 103168544d44aaea7168c24e3853984a2b6b33a7 Mon Sep 17 00:00:00 2001 From: Adam Monsen Date: Sun, 1 Dec 2024 05:29:57 -0800 Subject: [PATCH 004/161] add Gitea subtitle fallback and dummy data (#839) I omitted most of the 0.5MiB Gitea/Foregejo API reponse for brevity. --- dummy-data/gitea/swagger.v1.json | 11 +++++++++++ src/components/services/Gitea.vue | 5 ++++- 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 dummy-data/gitea/swagger.v1.json diff --git a/dummy-data/gitea/swagger.v1.json b/dummy-data/gitea/swagger.v1.json new file mode 100644 index 0000000..0c92ac8 --- /dev/null +++ b/dummy-data/gitea/swagger.v1.json @@ -0,0 +1,11 @@ +{ + "info": { + "description": "This documentation describes the Forgejo API.", + "title": "Forgejo API", + "license": { + "name": "MIT", + "url": "http://opensource.org/licenses/MIT" + }, + "version": "8.0.3+gitea-1.22.0" + } +} diff --git a/src/components/services/Gitea.vue b/src/components/services/Gitea.vue index f4f2160..e5eeb51 100644 --- a/src/components/services/Gitea.vue +++ b/src/components/services/Gitea.vue @@ -3,7 +3,10 @@ - + - + \ No newline at end of file + diff --git a/src/components/services/Generic.vue b/src/components/services/Generic.vue index c95e319..9b67310 100644 --- a/src/components/services/Generic.vue +++ b/src/components/services/Generic.vue @@ -20,16 +20,21 @@

{{ item.name }}

@@ -92,5 +97,4 @@ a[href=""] { pointer-events: all; } } - diff --git a/src/components/services/Glances.vue b/src/components/services/Glances.vue index fb2c6ad..92eaf10 100644 --- a/src/components/services/Glances.vue +++ b/src/components/services/Glances.vue @@ -5,8 +5,9 @@

@@ -18,7 +19,6 @@ import service from "@/mixins/service.js"; import Generic from "./Generic.vue"; - export default { name: "Glances", components: { @@ -48,25 +48,25 @@ export default { label: "System load", icon: "fa-solid fa-bolt", unit: "%", - } + }; this.stats["cpu"] = { value: response.cpu, label: `CPU usage (${response.cpu_name})`, icon: "fa-solid fa-microchip", unit: "%", - } + }; this.stats["mem"] = { value: response.mem, label: `RAM usage`, icon: "fa-solid fa-memory", unit: "%", - } + }; this.stats["swap"] = { value: response.swap, label: `Swap usage`, icon: "fa-solid fa-file-arrow-down", unit: "%", - } + }; }) .catch((e) => { console.log(e); diff --git a/src/components/services/Gotify.vue b/src/components/services/Gotify.vue index 16a8717..161d648 100644 --- a/src/components/services/Gotify.vue +++ b/src/components/services/Gotify.vue @@ -31,7 +31,7 @@ export default { item: Object, }, data: () => ({ - health: {}, + health: {}, messages: 0, }), computed: { @@ -45,7 +45,7 @@ export default { } return "green"; - } + }, }, created() { this.fetchStatus(); @@ -55,7 +55,7 @@ export default { fetchStatus: async function () { await this.fetch(`/health`) .catch((e) => console.log(e)) - .then((resp) => this.health = resp); + .then((resp) => (this.health = resp)); }, fetchMessages: async function () { const headers = { @@ -63,7 +63,7 @@ export default { }; await this.fetch(`/message?limit=100`, { headers }) .catch((e) => console.log(e)) - .then((resp) => this.messages = resp.messages.length); + .then((resp) => (this.messages = resp.messages.length)); }, }, }; diff --git a/src/components/services/Mealie.vue b/src/components/services/Mealie.vue index 0df8c17..8b1e212 100644 --- a/src/components/services/Mealie.vue +++ b/src/components/services/Mealie.vue @@ -46,7 +46,7 @@ export default { return `Happily keeping ${this.stats.totalRecipes} recipes organized`; } return null; - } + }, }, created() { this.fetchStatus(); @@ -60,9 +60,9 @@ export default { if (this.item.subtitle != null) return; - this.meal = await this.fetch("/api/groups/mealplans/today", { headers }).catch( - (e) => console.log(e), - ); + this.meal = await this.fetch("/api/groups/mealplans/today", { + headers, + }).catch((e) => console.log(e)); this.stats = await this.fetch("/api/admin/about/statistics", { headers, }).catch((e) => console.log(e)); diff --git a/src/components/services/Nextcloud.vue b/src/components/services/Nextcloud.vue index 4086bc3..ac732f5 100644 --- a/src/components/services/Nextcloud.vue +++ b/src/components/services/Nextcloud.vue @@ -3,9 +3,7 @@