
Grafana auf einem Hetzner Ubuntu-Server selbst hosten
Yulei ChenVolle Kontrolle über Dashboards, Metriken und Alerts? Mit Grafana auf einem Ubuntu-Server behältst du vorhersehbare Kosten und die volle Hoheit über deine Monitoring-Daten.
Suchst du nach etwas Einfacherem? Wenn du lieber die Serververwaltung überspringen und Grafana in wenigen Minuten deployen möchtest, schau dir Sliplane an—Deploy mit einem Klick, HTTPS und persistentem Storage:
Folge dieser leicht verständlichen Anleitung, um zu lernen, wie du deine eigene Grafana-Instanz mit Docker und dem Caddy-Webserver für automatische HTTPS bereitstellst.
Für diesen Beitrag verwenden wir einen günstigen Server von Hetzner. Hetzner ist bekannt für großartigen Service zu einem außergewöhnlichen Preis-Leistungs-Verhältnis und eignet sich perfekt für das Hosten von Grafana.
Voraussetzungen
Bevor wir beginnen, achte drauf, dass du ein Hetzner Cloud-Konto hast (oder bereit bist, eines zu erstellen).
Schritt 1: Deinen Hetzner-Server einrichten
Wenn du noch keinen Hetzner-Server hast, folge diesen Schritten, um einen zu erstellen:
- Geh zur Hetzner Cloud Console, wähle ein Projekt aus oder erstelle ein neues, dann gehe zu Servers → Add Server

- Folge Hetzners Richtlinien, um zu wählen:
- Server type: Wähl einen Server-Typ, der deinen Bedürfnissen entspricht.

- Location: Wähl einen Rechenzentrumsstandort, der dir oder deinen Nutzern am nächsten ist.

- Image: Wähl Ubuntu (neueste LTS-Version empfohlen).

- Add SSH key: Füg deinen öffentlichen SSH-Schlüssel für sicheren Zugriff hinzu. Wenn du noch keinen SSH-Schlüssel hast, kannst du einen mit
ssh-keygengenerieren:
ssh-keygen -t ed25519 -C "your_email@example.com"
Prüf ihn mit cat ~/.ssh/id_ed25519.pub und füg ihn bei deinem Server ein.

- Konfiguriere das Networking bei Bedarf, dann klick auf Create & Pay, um deinen Server bereitzustellen.

Sobald dein Server erstellt wurde, notier dir seine IP-Adresse. Du brauchst sie, um dich im nächsten Schritt per SSH zu verbinden.

Schritt 2: Deinen Server aktualisieren
Öffne dein Terminal und melde dich per SSH auf deinem Ubuntu-Server an:
ssh root@your-server-ip
und aktualisiere das System, damit es die neuesten Sicherheitspatches und Updates hat:
sudo apt-get update
sudo apt-get upgrade -y
Sobald das durch ist, ist dein Server bereit für die Installation der Software.
Schritt 3: UFW-Firewall installieren und konfigurieren
Halte nur notwendige Ports offen: SSH (22), HTTP (80), HTTPS (443).
Installiere UFW und konfiguriere die Firewall wie folgt:
sudo apt install ufw -y
sudo ufw allow 22 # SSH
sudo ufw allow 80 # HTTP
sudo ufw allow 443 # HTTPS
sudo ufw enable
Prüf deine Firewall-Konfiguration:
sudo ufw status verbose
Docker kann manchmal UFW-Regeln ignorieren. Mehr dazu und wie du das behebst, findest du hier erklärt.
Schritt 4: Docker installieren
Docker läuft Grafana in einem Container. Installiere Docker mit diesen Befehlen:
Dependencies und Docker GPG-Key einrichten:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
| sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
Docker-Repository hinzufügen:
echo \
"deb [arch=$(dpkg --print-architecture) \
signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo $VERSION_CODENAME) stable" \
| sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
Docker Engine und compose-plugin installieren:
sudo apt-get install docker-ce docker-ce-cli \
containerd.io docker-buildx-plugin docker-compose-plugin -y
Installation prüfen:
sudo docker run hello-world
Wenn du die "hello-world"-Meldung siehst, ist Docker bereit.
Schritt 5: Caddy für automatisches HTTPS installieren
Caddy vereinfacht die HTTPS-Konfiguration, weil es SSL-Zertifikate automatisch von Let's Encrypt holt.
Caddy installieren:
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' \
| sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' \
| sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy -y
Bevor du Caddy konfigurierst, musst du deine Domain auf die IP-Adresse deines Servers zeigen. Wenn du DNS noch nicht eingerichtet hast, folge diesen Schritten:
DNS für deine Domain konfigurieren
- Melde dich im Dashboard deines Domain-Registrars an (wo du die Domain gekauft hast)
- Geh zu den DNS-Einstellungen oder dem DNS-Management-Bereich
- Füg einen A-Record mit diesen Einstellungen hinzu:
- Type:
A - Name:
@(für Root-Domain) oder eine Subdomain wiegrafana(fürgrafana.yourdomain.com) - Value/Target: Die IPv4-Adresse deines Hetzner-Servers
- Type:
- Füg einen AAAA-Record für IPv6-Support hinzu:
- Type:
AAAA - Name:
@(für Root-Domain) oder dieselbe Subdomain wie beim A-Record - Value/Target: Die IPv6-Adresse deines Hetzner-Servers
- Type:
DNS-Änderungen können ein paar Minuten bis mehrere Stunden brauchen, bis sie propagiert sind. Du kannst mit Tools wie dig oder Online-DNS-Checkern prüfen, ob dein DNS korrekt konfiguriert ist. Sobald der DNS-Record aktiv ist, kannst du mit der Caddy-Konfiguration weitermachen.
Caddy konfigurieren
Bearbeite die Caddyfile-Konfigurationsdatei:
sudo nano /etc/caddy/Caddyfile
Trag deine Domain ein und konfiguriere den Reverse Proxy. Ersetze "yourdomain.com" durch deine echte Domain:
yourdomain.com {
reverse_proxy localhost:3000
}
Wenn du noch keine Domain hast, nutze vorübergehend diese Variante:
:80 {
reverse_proxy localhost:3000
}
Starte Caddy neu, damit die Config geladen wird:
sudo systemctl restart caddy
Schritt 6: Grafana mit Docker Compose starten
Wir nutzen Docker Compose für einfacheres Setup.
Erstell zuerst ein Verzeichnis für Grafana, wechsle dorthin und leg die compose-Datei an:
mkdir -p ~/grafana
cd ~/grafana
sudo nano compose.yml
Kopier den folgenden Inhalt in compose.yml:
services:
grafana:
image: grafana/grafana:12.4.0-ubuntu
container_name: grafana
restart: unless-stopped
ports:
- "3000:3000"
volumes:
- "grafana_storage:/var/lib/grafana"
volumes:
grafana_storage: {}
Für die Enterprise-Edition ändere das Image zu grafana/grafana-enterprise:<version>-ubuntu. Mehr dazu unter Configure a Grafana Docker image.
Grafana starten:
sudo docker compose up -d
Docker lädt das Grafana-Image und startet es im Hintergrund auf Port 3000.
Schritt 7: Auf deine selbst gehostete Grafana-Instanz zugreifen
Deine Grafana-Instanz sollte jetzt unter https://yourdomain.com erreichbar sein. Bei temporärem HTTP-Setup öffne http://your-server-ip:3000.
Grafanas Standard-Login:
- Username:
admin - Password:
admin
Beim ersten Login wirst du aufgefordert, das Passwort zu ändern. Setz ein starkes Passwort und bewahr es sicher auf.
Sicherheitsempfehlungen
Öffentliche Server sollten immer abgesichert sein. Diese Praktiken empfehlen wir:
- Regelmäßig Updates und Sicherheitspatches einspielen.
- Starke Passwörter setzen und Benutzerzugriff kontrollieren.
- Server-Logs auf verdächtige Aktivitäten überwachen.
- Tools wie Fail2ban für zusätzliche Sicherheit installieren.
Grafana-Installation aktualisieren
Wenn du deine Grafana-Instanz aktualisieren willst, prüf zuerst die neueste Version auf Docker Hub, aktualisiere dann die Image-Version in deiner compose.yml und führe aus:
cd ~/grafana
sudo docker compose pull
sudo docker compose up -d
Docker lädt die aktualisierten Versionen automatisch und ersetzt deine aktuellen Container.
Kostenvergleich mit anderen Anbietern
Selbst gehostetes Grafana ist meist günstiger als gehostete Dashboards:
| Provider | vCPU Cores | RAM | Disk | Geschätzte monatliche Kosten | Hinweise |
|---|---|---|---|---|---|
| Sliplane | 2 | 2 GB | 40 GB | €9 | Abrechnung pro Server |
| Render | 1 | 2 GB | 40 GB | ~$35–$45 | VM Small |
| Fly.io | 2 | 2 GB | 40 GB | ~$20–$25 | VM + Volume |
| Railway | 2 | 2 GB | 40 GB | ~$15–$66 | Nutzungsbasiert |
Fazit
Du hast jetzt eine selbst gehostete Grafana-Instanz auf Hetzner mit Docker und HTTPS. Wenn du weniger Wartung und schnelleres Setup willst, bringt dich Sliplane in wenigen Minuten ans Ziel—ohne den Server-Overhead.