Ghostboard pixel

Statusseite meiner Services einrichten mit Docker und Nginx

Statusseite meiner Services einrichten mit Docker und Nginx

Guten Morgen,

Gestern kam ich auf die Idee, inspiriert von Olaf der Administrator von Bachgau.social, eine Statusseite einzurichten. Auf dieser werden alle Webseiten dargestellt und angezeigt ob diese gerade online sind, oder nicht.

Zu finden ist die Seite unter https://stats.dasnetzundich.de
. Die Webseiten werden alle 60 Sekunden angepingt und somit überprüft ob diese online sind.

Wie alles, was ich so betreibe ist selbst eingerichtet. Die Statusseite läuft mit Uptime kuma.

Das Setup

Zuerst muss, wenn noch nicht vorhanden, überprüft werden ob Docker und Docker-compose installiert ist. Wenn nicht, muss das zuerst gemacht werden.

sudo apt update && apt install docker python3-certbot-nginx
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Uptime Kuma herunterladen

Wenn dieser Schritt erledigt ist, muss der Quellcode von Github geladen werden. Dies geschieht mit git clone

cd /opt
sudo git clone https://github.com/louislam/uptime-kuma

Dann in das enstandene Verzeichnis wechseln.

cd uptime-kuma

Im original Repository werden die Container gestartet mit einer Befehlzeile. Ich habe aber eine Docker-compose Variante erstellt.

sudo nano docker-compose.yml
version: '3'
services:
uptime:
image: louislam/uptime-kuma:latest
container_name: uptime
restart: always
ports:
- 127.0.0.1:3001:3001
volumes:
- uptime-kuma:/app/data

volumes:
uptime-kuma:

Mit docker-compose up -d wird dann alles gestartet.

Nginx Setup

nun mit Certbot ein neues SSL Zertifikat erstellen.

sudo certbot -certonly -d stats.domain.tld

Nun fehlt noch ein Setup für Nginx.

sudo nano /etc/nginx/sites-available/uptime
server {
listen 80;
listen [::]:80;
server_name stats.domain.tld;
location / {
return 301 https://stats.domain.tld;
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name stats.domain.tld;
ssl_certificate_key /etc/letsencrypt/live/stats.domain.tld/privkey.pem;
ssl_certificate /etc/letsencrypt/live/stats.domain.tld/fullchain.pem;
ssl_trusted_certificate /etc/letsencrypt/live/stats.domain.tld/chain.pem;

location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:3001/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
ln -s /etc/nginx/sites-available/uptime /etc/nginx/sites-enabled/uptime

Konfiguration überprüfen und Nginx neu starten.

sudo ngin -t && sudo service nginx restart

Einrichten der Webseiten

Zunächst die die erstellte Seite aufrufen. Es folgt ein Fenster zum einrichten eines Administrations-Accounts. Beim Abschluss damit dann einloggen und die erste Seite einrichten.

Abspeichern und die Statusseite einrichten.

Danach sollte alles laufen und die Überwachung beginnt.