Grafana auf einem Hetzner Ubuntu-Server selbst hosten

Grafana auf einem Hetzner Ubuntu-Server selbst hosten

Yulei Chen - Content-Engineerin bei sliplane.ioYulei Chen
8 min

Volle 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:

  1. Geh zur Hetzner Cloud Console, wähle ein Projekt aus oder erstelle ein neues, dann gehe zu ServersAdd Server

Hetzner Cloud Console

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

Select Server Type

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

Select Location

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

Select Ubuntu Image

  1. 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-keygen generieren:
Terminal
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.

SSH Connection

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

Networking Options

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

Server IP Address

Schritt 2: Deinen Server aktualisieren

Öffne dein Terminal und melde dich per SSH auf deinem Ubuntu-Server an:

Terminal
ssh root@your-server-ip

und aktualisiere das System, damit es die neuesten Sicherheitspatches und Updates hat:

Terminal
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:

Terminal
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:

Terminal
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:

Terminal
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:

Terminal
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:

Terminal
sudo apt-get install docker-ce docker-ce-cli \
containerd.io docker-buildx-plugin docker-compose-plugin -y

Installation prüfen:

Terminal
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:

Terminal
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

  1. Melde dich im Dashboard deines Domain-Registrars an (wo du die Domain gekauft hast)
  2. Geh zu den DNS-Einstellungen oder dem DNS-Management-Bereich
  3. Füg einen A-Record mit diesen Einstellungen hinzu:
    • Type: A
    • Name: @ (für Root-Domain) oder eine Subdomain wie grafana (für grafana.yourdomain.com)
    • Value/Target: Die IPv4-Adresse deines Hetzner-Servers
  4. 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

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:

Terminal
sudo nano /etc/caddy/Caddyfile

Trag deine Domain ein und konfiguriere den Reverse Proxy. Ersetze "yourdomain.com" durch deine echte Domain:

Caddyfile
yourdomain.com {
    reverse_proxy localhost:3000
}

Wenn du noch keine Domain hast, nutze vorübergehend diese Variante:

Caddyfile
:80 {
    reverse_proxy localhost:3000
}

Starte Caddy neu, damit die Config geladen wird:

Terminal
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:

Terminal
mkdir -p ~/grafana
cd ~/grafana
sudo nano compose.yml

Kopier den folgenden Inhalt in compose.yml:

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:

Terminal
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:

Terminal
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:

ProvidervCPU CoresRAMDiskGeschätzte monatliche KostenHinweise
Sliplane22 GB40 GB€9Abrechnung pro Server
Render12 GB40 GB~$35–$45VM Small
Fly.io22 GB40 GB~$20–$25VM + Volume
Railway22 GB40 GB~$15–$66Nutzungsbasiert

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.

Deploy Grafana in Minuten

Überspring Server-Setup und starte Grafana auf Sliplane mit einem Klick, HTTPS und persistentem Storage.