reworked gatus

This commit is contained in:
Erik Grobecker 2024-12-29 14:14:54 +01:00
parent c8b263f67e
commit 2bc1ce5a29
Signed by: Erik
GPG key ID: 80D020D0ABBD3FB2
5 changed files with 139 additions and 55 deletions

5
.vscode/extensions.json vendored Normal file
View file

@ -0,0 +1,5 @@
{
"recommendations": [
"gruntfuggly.todo-tree"
]
}

View file

@ -10,3 +10,11 @@ services:
labels: labels:
- "diun.enable=true" - "diun.enable=true"
restart: always restart: always
networks:
- proxy
networks:
proxy:
external: true
minio:
external: true

View file

@ -3,103 +3,118 @@ storage:
path: /data/data.db path: /data/data.db
endpoints: endpoints:
- name: dashy - name: homepage
group: core group: exposed
url: "https://grobecker.me" url: "https://grobecker.me"
interval: 5m
conditions: conditions:
- "[STATUS] == 200" - "[STATUS] == 200"
- "[CERTIFICATE_EXPIRATION] > 48h" - "[CERTIFICATE_EXPIRATION] > 48h"
- name: forgejo - name: forgejo
group: microservices group: exposed
url: "https://git.grobecker.me" url: "https://git.grobecker.me"
conditions: conditions:
- "[STATUS] == 200" - "[STATUS] == 200"
- "[CERTIFICATE_EXPIRATION] > 48h" - "[CERTIFICATE_EXPIRATION] > 48h"
alerts: - name: stirling-pdf
- type: ntfy group: exposed
- name: stirling
group: microservices
url: "https://pdf.grobecker.me" url: "https://pdf.grobecker.me"
conditions: conditions:
- "[STATUS] == 200" - "[STATUS] == 200"
- "[CERTIFICATE_EXPIRATION] > 48h" - "[CERTIFICATE_EXPIRATION] > 48h"
alerts:
- type: ntfy
- name: memos - name: memos
group: microservices group: exposed
url: "https://memos.grobecker.me" url: "https://memos.grobecker.me"
conditions: conditions:
- "[STATUS] == 200" - "[STATUS] == 200"
- "[CERTIFICATE_EXPIRATION] > 48h" - "[CERTIFICATE_EXPIRATION] > 48h"
alerts: - name: seafile
- type: ntfy group: exposed
- name: Seafile
group: microservices
url: "https://files.grobecker.me" url: "https://files.grobecker.me"
conditions: conditions:
- "[STATUS] == 200" - "[STATUS] == 200"
- "[CERTIFICATE_EXPIRATION] > 48h" - "[CERTIFICATE_EXPIRATION] > 48h"
alerts:
- type: ntfy
- name: archivebox - name: archivebox
group: microservices group: exposed
url: "https://archive.grobecker.me" url: "https://archive.grobecker.me"
conditions: conditions:
- "[STATUS] == 200" - "[STATUS] == 200"
- "[CERTIFICATE_EXPIRATION] > 48h" - "[CERTIFICATE_EXPIRATION] > 48h"
alerts:
- type: ntfy
- name: hedgedoc - name: hedgedoc
group: microservices group: exposed
url: "https://md.grobecker.me" url: "https://md.grobecker.me"
conditions: conditions:
- "[STATUS] == 200" - "[STATUS] == 200"
- "[CERTIFICATE_EXPIRATION] > 48h" - "[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 - name: it-tools
group: microservices group: exposed
url: "https://tools.grobecker.me" url: "https://tools.grobecker.me"
conditions: conditions:
- "[STATUS] == 200" - "[STATUS] == 200"
- "[CERTIFICATE_EXPIRATION] > 48h" - "[CERTIFICATE_EXPIRATION] > 48h"
alerts:
- type: ntfy
- name: ntfy - name: ntfy
group: microservices group: exposed
url: "https://ntfy.grobecker.me" url: "https://ntfy.grobecker.me"
conditions: conditions:
- "[STATUS] == 200" - "[STATUS] == 200"
- "[CERTIFICATE_EXPIRATION] > 48h" - "[CERTIFICATE_EXPIRATION] > 48h"
alerts:
- type: ntfy
- name: vaultwarden - name: vaultwarden
group: microservices group: exposed
url: "https://vault.grobecker.me" url: "https://vault.grobecker.me"
conditions: conditions:
- "[STATUS] == 200" - "[STATUS] == 200"
- "[CERTIFICATE_EXPIRATION] > 48h" - "[CERTIFICATE_EXPIRATION] > 48h"
alerts: - name: mealie
- type: ntfy 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 - name: webui
group: mail group: mail-stack
url: "https://mail.grobecker.me" url: "https://mail.grobecker.me"
conditions: conditions:
- "[STATUS] == 200" - "[STATUS] == 200"
- "[CERTIFICATE_EXPIRATION] > 48h" - "[CERTIFICATE_EXPIRATION] > 48h"
- name: starttls-smtp - name: starttls-smtp
group: mail group: mail-stack
url: "starttls://mail.grobecker.me:587" url: "starttls://mail.grobecker.me:587"
interval: 30m interval: 30m
client: client:
@ -110,7 +125,7 @@ endpoints:
alerts: alerts:
- type: ntfy - type: ntfy
- name: tls-imap - name: tls-imap
group: mail group: mail-stack
url: "tls://mail.grobecker.me:993" url: "tls://mail.grobecker.me:993"
interval: 30m interval: 30m
client: client:
@ -122,7 +137,7 @@ endpoints:
- type: ntfy - type: ntfy
- name: mail-ipv4-dns-query - name: mail-ipv4-dns-query
url: "8.8.8.8" # Address of the DNS server to use url: "8.8.8.8" # Address of the DNS server to use
group: mail group: mail-stack
dns: dns:
query-name: "mail.grobecker.me" query-name: "mail.grobecker.me"
query-type: "A" query-type: "A"
@ -133,7 +148,7 @@ endpoints:
- type: ntfy - type: ntfy
- name: mail-ipv6-dns-query - name: mail-ipv6-dns-query
url: "8.8.8.8" # Address of the DNS server to use url: "8.8.8.8" # Address of the DNS server to use
group: mail group: mail-stack
dns: dns:
query-name: "mail.grobecker.me" query-name: "mail.grobecker.me"
query-type: "AAAA" query-type: "AAAA"
@ -144,7 +159,7 @@ endpoints:
- type: ntfy - type: ntfy
- name: mail-mx-dns-query - name: mail-mx-dns-query
url: "8.8.8.8" # Address of the DNS server to use url: "8.8.8.8" # Address of the DNS server to use
group: mail group: mail-stack
dns: dns:
query-name: "grobecker.me" query-name: "grobecker.me"
query-type: "MX" query-type: "MX"
@ -154,11 +169,9 @@ endpoints:
alerts: alerts:
- type: ntfy - type: ntfy
alerting: - name: navidrome
ntfy: group: media
url: "https://ntfy.grobecker.me" url: "https://music.grobecker.me"
topic: "status" conditions:
priority: 2 - "[STATUS] == 200"
default-alert: - "[CERTIFICATE_EXPIRATION] > 48h"
failure-threshold: 3
send-on-resolved: true

53
docs/gatus.md Normal file
View file

@ -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"
```

View file

@ -14,3 +14,8 @@
- memcached updated (project) - memcached updated (project)
- postgres updated (mealie) - postgres updated (mealie)
- removed miniflux - removed miniflux
- minio:
- removed ports
- added gatus to network
- gatus:
- reworked config (see [here](/docs/gatus.md))