Uptime Kuma - Monitoring für Services, Websites und Docker Container

Hier gehe ich auf das Monitoring Tool Uptime Kuma ein, welches sich bestens eignet wenn man selbst seine Webseite, laufende Docker Container oder andere Services überwachen möchte. Uptime Kuma lässt sich bequem als Docker Container starten und super schnell konfigurieren.
Warum Uptime Kuma
Ich war auf der Suche nach einem Monitoring Tool um meine Webseite hier zu überwachen, oder besser die SSL Zertifikate und deren Ablaufdatum. Ich hatte bereits ein Monitoring bei Uptime Robot am laufen. Beim suchen im Netz bin ich dann über Uptime Kuma gestoßen, habe es kurzer Hand hochgefahren und sofort gemerkt das es super durchdacht ist. Das Setup geht super schnell von der Hand und das Konfigurieren des Monitore, samt Benachrichtigungen ebenfalls. Die Liste der Benachrichtungs Methoden ist super lang und reicht von klassischen eMails, über NTFY bis hin zu Telegram. Die Liste der Monitoring Möglichkeiten ist ebenfalls lang:
Am besten schaut ihr es euch selbst an!
Docker Setup
Um Uptime Kuma schnell zu starten benötigt ihr lediglich ein docker compose Projekt und die beiden files hier. Ich habe das Ganze in meinen Tools Docker Compose Stack mit eingebaut, in dem unter anderem auch fail2ban, AdGuard Home und watchtower läuft. Legt oder erweitert als erstes die .env Datei:
.env
# Docker Compose Project Name
# max length 11 characters
PROJECT_NAME=tools
# Uptime Kuma Port
UPTIME_KUMA_PORT=3001
# Uptime Kuma Version
UPTIME_KUMA_VERSION=2
# Timezone
TZ=Europe/Berlin
Dann noch den Service, das volume und ggf. Netzwerk via compose.yml konfigurieren:
compose.yml
services:
uptime-kuma:
image: louislam/uptime-kuma:${UPTIME_KUMA_VERSION:-2}
restart: unless-stopped
volumes:
- data_uptime-kuma:/app/data
- /var/run/docker.sock:/var/run/docker.sock
ports:
- ${UPTIME_KUMA_PORT:-3001}:3001
environment:
- TZ=${TZ:-UTC}
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3001"]
interval: 30s
retries: 3
start_period: 10s
timeout: 5s
networks:
- app-nw
volumes:
data_uptime-kuma:
networks:
app-nw:
internal: false
driver: bridge
driver_opts:
com.docker.network.bridge.name: app-${PROJECT_NAME}
dann einfach das Ganze starten:
docker compose up -d
Dann greift einfach via http://<yourservername>:3001 zu.
Konfiguration
Beim ersten Aufrufen der Uptime Kuma UI, erscheint der Setup Assistent bei dem ihr als erstes den Datenbank Typ auswählen könnt:
Ein Guter Start ist sicherlich die Embedded MariaDB. Man kann aber auch ohne weiters für kleine Installationen SQLite nutzen. Nur bei MariDB/MySQL müsst ihr schon vorher eine Datenbank hochgefahren haben. Dann heißt es ein wenig warten...
legt einen User an und vergebt ein Passwort. Und das war es schon, euch begrüßt das Dashboard.
Next Steps:
- Benachrichtigungen konfigurieren -
Usersymbol --> Einstellungen --> Benachrichtigungen - Monitor konfigurieren -
Neuer Monitor hinzufügen
Da alles meines Erachtens nach sehr intuitiv und einfach ist gehe ich hier nicht weiter darauf ein.
MariaDB als Datenbank
Möchtet ihr eine bestehende oder besser noch einen eigenen Datenbank Container nutzen, so fahrt am besten in eurem Docker Compose Stack eine Datenbank mit hoch. hier ein Beispiel für Uptime Kuma mit einer MariaDB.
.env
# Docker Compose Project Name
# max length 11 characters
PROJECT_NAME=tools
# Uptime Kuma Port
UPTIME_KUMA_PORT=3001
# Uptime Kuma Version
UPTIME_KUMA_VERSION=2
# Maria DB Configuration
MARIADB_ROOT_PASSWORD=R00tPassword
MARIADB_DATABASE=kuma
MARIADB_USER=uptimekuma
MARIADB_PASSWORD=us3rpa$$word
compose.yml
services:
uptime-kuma:
image: louislam/uptime-kuma:${UPTIME_KUMA_VERSION:-2}
restart: unless-stopped
depends_on:
database:
condition: service_healthy
volumes:
- data_uptime-kuma:/app/data
- /var/run/docker.sock:/var/run/docker.sock
ports:
- ${UPTIME_KUMA_PORT:-3001}:3001
environment:
- TZ=${TZ:-UTC}
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3001"]
interval: 30s
retries: 3
start_period: 10s
timeout: 5s
networks:
- app-nw
- backend-nw
database:
image: mariadb:${MARIADB_VERSION:-11.8}
volumes:
- data_uptime-kuma_db:/var/lib/mysql
restart: unless-stopped
environment:
- MARIADB_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD:-R00tPassword}
- MARIADB_DATABASE
- MARIADB_USER
- MARIADB_PASSWORD
- TZ=${TZ:-UTC}
labels:
com.centurylinklabs.watchtower.enable: true
healthcheck:
test:
[
"CMD-SHELL",
"mariadb -u root -p$${MARIADB_ROOT_PASSWORD} -e 'SELECT 1'",
]
interval: 10s
timeout: 5s
retries: 5
networks:
backend-nw:
aliases:
- db
volumes:
data_uptime-kuma:
data_uptime-kuma_db:
networks:
app-nw:
internal: false
driver: bridge
driver_opts:
com.docker.network.bridge.name: app-${PROJECT_NAME:-mw}
backend-nw:
internal: true
driver: bridge
driver_opts:
com.docker.network.bridge.name: be-${PROJECT_NAME:-mw}
Dann wieder einfach die Startseite öffne http://<yourservername>:3001 und MariaDB/MySQL auswählen und eure Datenbank credentials, die ihr in der .env konfiguriert habt, eingeben.
Dann wie gehabt einen Benutzer samt Passwort einrichten und loslegen!
Next Steps:
Backup der Datenbank, des Volumes und des Compose Projektes einrichten: