From 2bc1ce5a299259c9c9811d328afc891aa80c560f Mon Sep 17 00:00:00 2001 From: Erik Grobecker Date: Sun, 29 Dec 2024 14:14:54 +0100 Subject: [PATCH] reworked gatus --- .vscode/extensions.json | 5 ++ docker/gatus/compose.yml | 8 +++ docker/gatus/config/config.yaml | 123 ++++++++++++++++++-------------- docs/gatus.md | 53 ++++++++++++++ updates/2024-12-29.md | 5 ++ 5 files changed, 139 insertions(+), 55 deletions(-) create mode 100644 .vscode/extensions.json create mode 100644 docs/gatus.md diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..c707294 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,5 @@ +{ + "recommendations": [ + "gruntfuggly.todo-tree" + ] +} diff --git a/docker/gatus/compose.yml b/docker/gatus/compose.yml index 6d1e7e2..0396151 100644 --- a/docker/gatus/compose.yml +++ b/docker/gatus/compose.yml @@ -10,3 +10,11 @@ services: labels: - "diun.enable=true" restart: always + networks: + - proxy + +networks: + proxy: + external: true + minio: + external: true diff --git a/docker/gatus/config/config.yaml b/docker/gatus/config/config.yaml index 57c4a49..3084d83 100644 --- a/docker/gatus/config/config.yaml +++ b/docker/gatus/config/config.yaml @@ -3,103 +3,118 @@ storage: path: /data/data.db endpoints: - - name: dashy - group: core + - name: homepage + group: exposed url: "https://grobecker.me" - interval: 5m conditions: - "[STATUS] == 200" - "[CERTIFICATE_EXPIRATION] > 48h" - - name: forgejo - group: microservices + group: exposed url: "https://git.grobecker.me" conditions: - "[STATUS] == 200" - "[CERTIFICATE_EXPIRATION] > 48h" - alerts: - - type: ntfy - - name: stirling - group: microservices + - name: stirling-pdf + group: exposed url: "https://pdf.grobecker.me" conditions: - "[STATUS] == 200" - "[CERTIFICATE_EXPIRATION] > 48h" - alerts: - - type: ntfy - name: memos - group: microservices + group: exposed url: "https://memos.grobecker.me" conditions: - "[STATUS] == 200" - "[CERTIFICATE_EXPIRATION] > 48h" - alerts: - - type: ntfy - - name: Seafile - group: microservices + - name: seafile + group: exposed url: "https://files.grobecker.me" conditions: - "[STATUS] == 200" - "[CERTIFICATE_EXPIRATION] > 48h" - alerts: - - type: ntfy - name: archivebox - group: microservices + group: exposed url: "https://archive.grobecker.me" conditions: - "[STATUS] == 200" - "[CERTIFICATE_EXPIRATION] > 48h" - alerts: - - type: ntfy - name: hedgedoc - group: microservices + group: exposed url: "https://md.grobecker.me" conditions: - "[STATUS] == 200" - "[CERTIFICATE_EXPIRATION] > 48h" - alerts: - - type: ntfy - - name: nextcloud - group: microservices - url: "https://nx41088.your-storageshare.de" - conditions: - - "[STATUS] == 200" - - "[CERTIFICATE_EXPIRATION] > 48h" - alerts: - - type: ntfy - name: it-tools - group: microservices + group: exposed url: "https://tools.grobecker.me" conditions: - "[STATUS] == 200" - "[CERTIFICATE_EXPIRATION] > 48h" - alerts: - - type: ntfy - name: ntfy - group: microservices + group: exposed url: "https://ntfy.grobecker.me" conditions: - "[STATUS] == 200" - "[CERTIFICATE_EXPIRATION] > 48h" - alerts: - - type: ntfy - name: vaultwarden - group: microservices + group: exposed url: "https://vault.grobecker.me" conditions: - "[STATUS] == 200" - "[CERTIFICATE_EXPIRATION] > 48h" - alerts: - - type: ntfy + - name: mealie + group: exposed + url: "https://rezepte.grobecker.me" + conditions: + - "[STATUS] == 200" + - "[CERTIFICATE_EXPIRATION] > 48h" + - name: actual-budget + group: exposed + url: "https://actual.grobecker.me" + conditions: + - "[STATUS] == 200" + - "[CERTIFICATE_EXPIRATION] > 48h" + + - name: nextcloud + group: external + url: "https://nx41088.your-storageshare.de" + conditions: + - "[STATUS] == 200" + - "[CERTIFICATE_EXPIRATION] > 48h" + + # - name: minio + # group: internal + # url: "http://minio:9001" + # conditions: + # - "[STATUS] == 200" + # - name: beszel + # group: exposed + # url: "https://beszel.grobecker.me" + # conditions: + # - "[STATUS] == 200" + # - "[CERTIFICATE_EXPIRATION] > 48h" + # - name: dozzle + # group: exposed + # url: "https://dozzle.grobecker.me" + # conditions: + # - "[STATUS] == 200" + # - "[CERTIFICATE_EXPIRATION] > 48h" + - name: authelia + group: exposed + url: "https://auth.grobecker.me" + conditions: + - "[STATUS] == 200" + - "[CERTIFICATE_EXPIRATION] > 48h" - name: webui - group: mail + group: mail-stack url: "https://mail.grobecker.me" conditions: - "[STATUS] == 200" - "[CERTIFICATE_EXPIRATION] > 48h" - name: starttls-smtp - group: mail + group: mail-stack url: "starttls://mail.grobecker.me:587" interval: 30m client: @@ -110,7 +125,7 @@ endpoints: alerts: - type: ntfy - name: tls-imap - group: mail + group: mail-stack url: "tls://mail.grobecker.me:993" interval: 30m client: @@ -122,7 +137,7 @@ endpoints: - type: ntfy - name: mail-ipv4-dns-query url: "8.8.8.8" # Address of the DNS server to use - group: mail + group: mail-stack dns: query-name: "mail.grobecker.me" query-type: "A" @@ -133,7 +148,7 @@ endpoints: - type: ntfy - name: mail-ipv6-dns-query url: "8.8.8.8" # Address of the DNS server to use - group: mail + group: mail-stack dns: query-name: "mail.grobecker.me" query-type: "AAAA" @@ -144,7 +159,7 @@ endpoints: - type: ntfy - name: mail-mx-dns-query url: "8.8.8.8" # Address of the DNS server to use - group: mail + group: mail-stack dns: query-name: "grobecker.me" query-type: "MX" @@ -154,11 +169,9 @@ endpoints: alerts: - type: ntfy -alerting: - ntfy: - url: "https://ntfy.grobecker.me" - topic: "status" - priority: 2 - default-alert: - failure-threshold: 3 - send-on-resolved: true + - name: navidrome + group: media + url: "https://music.grobecker.me" + conditions: + - "[STATUS] == 200" + - "[CERTIFICATE_EXPIRATION] > 48h" diff --git a/docs/gatus.md b/docs/gatus.md new file mode 100644 index 0000000..e197070 --- /dev/null +++ b/docs/gatus.md @@ -0,0 +1,53 @@ +# Gatus + +## Currently monitored services + +- homepage +- forgejo +- stirling-pdf +- memos +- seafile +- archivebox +- hedgedoc +- it-tools +- ntfy +- vaultwarden +- minio +- mealie +- beszel +- dozzle +- actual-budget +- navidrome +- authelia +- nextcloud +- mailcow (several checks) + +## Categories + +old: + +- core +- microservices +- mail + +reworked: + +- exposed (like what the user can access) +- internal (what the user can't _directly_ access or is meant for admins) +- external (what isn't hosted by me directly) +- mail-stack (an extra category for my mail stuff) +- media (services that are media-related and are only accessible by certain people → **not public**) + +## Templates + +website: + +```yaml +endpoints: + - name: webui + group: mail + url: "https://mail.grobecker.me" + conditions: + - "[STATUS] == 200" + - "[CERTIFICATE_EXPIRATION] > 48h" +``` diff --git a/updates/2024-12-29.md b/updates/2024-12-29.md index 7755eae..7a4f1e6 100644 --- a/updates/2024-12-29.md +++ b/updates/2024-12-29.md @@ -14,3 +14,8 @@ - memcached updated (project) - postgres updated (mealie) - removed miniflux +- minio: + - removed ports + - added gatus to network +- gatus: + - reworked config (see [here](/docs/gatus.md))