
Metabase auf Ubuntu 24.04 mit PostgreSQL selbst hosten
Atakan ÖztarakDu willst Metabase für Business Intelligence nutzen, aber lieber alles auf deiner eigenen Infrastruktur behalten? Indem du Metabase auf Ubuntu 24.04 mit PostgreSQL selbst hostest, bekommst du unbegrenzte User, volle Datenkontrolle und keine Per-Seat-Gebühren!
Du suchst etwas Einfacheres? Wenn du lieber auf Server-Management verzichten und Metabase in unter 2 Minuten für 9€/Monat deployen möchtest, schau dir unseren Guide zum einfachen Selbst-Hosten von Metabase mit Sliplane an.
Was ist Metabase?
Metabase ist eins der beliebtesten Open-Source Business Intelligence (BI) Tools. Jeder in deinem Team kann Fragen an die Daten stellen und bekommt Antworten in visuellen Formaten wie Charts, Grafiken und Dashboards. Keine SQL-Kenntnisse nötig. Schau dir das Metabase GitHub Repository an, um den Source Code selbst zu sehen; es hat über 40.000 Stars.
Wofür wird Metabase verwendet?
Teams nutzen Metabase, um rohe Datenbankdaten in umsetzbare Insights zu verwandeln. Typische Anwendungsfälle:
- Sales Dashboards: Umsatz, Conversion Rates und Pipeline Health tracken
- Product Analytics: User-Verhalten, Feature-Adoption und Retention verstehen
- Financial Reporting: Ausgaben, Margen und Prognosen überwachen
- Customer Support Metrics: Antwortzeiten, Ticketvolumen und Zufriedenheit messen
- Marketing Analytics: Kampagnen-Performance und Akquisitionskosten analysieren
Wenn dein Team regelmäßig fragt "wie viele User haben sich letzte Woche angemeldet?" oder "wie sieht unser monatlicher Umsatztrend aus?", ist Metabase genau dafür gebaut.
Metabase Pricing: Warum selbst hosten?
Metabase Cloud startet bei €85/Monat für 5 User. Das summiert sich schnell, wenn dein Team wächst. So viel geben Unternehmen typischerweise für Metabase und Alternativen aus:
| Service | Startpreis | User inklusive | Open Source |
|---|---|---|---|
| Metabase Cloud | €85/Monat | 5 | Ja (OSS) |
| Tableau Cloud | €70/User/Monat | Pro Seat | Nein |
| Power BI Pro | €10/User/Monat | Pro Seat | Nein |
| Looker | Custom Pricing | Pro Seat | Nein |
| Self-hosted | ~€3-5/Monat | Unbegrenzt | Ja |
Beim Self-Hosting zahlst du nur für den Server, typischerweise €3-5/Monat bei Hetzner, und bekommst unbegrenzte User, unbegrenzte Dashboards und die volle Kontrolle über deine Daten.
Metabase Alternativen
Bevor du dich festlegst, lohnt sich ein Vergleich mit anderen beliebten Alternativen:
- Apache Superset: ein weiteres Open-Source BI Tool, technischer und SQL-lastiger, aber sehr mächtig für Data Engineers
- Redash: leichtgewichtig, super für SQL-affine Teams, die einfach schnelle Dashboards brauchen
- Grafana: am besten für Zeitreihen-Daten und Infrastruktur-Monitoring, nicht ideal für Business Analytics
- Power BI: Microsofts Angebot, starke Excel-Integration aber nicht self-hostable und teuer bei Skalierung
Metabase sticht heraus, weil nicht-technische Teammitglieder es sofort nutzen können. Der "Question" Builder lässt jeden Charts erstellen, ohne eine einzige Query zu schreiben.
Voraussetzungen
Folge dieser Anleitung, um deine eigene Metabase-Instanz auf Ubuntu 24.04 mit Docker, PostgreSQL und dem Caddy Webserver für automatisches HTTPS zu deployen.
Bevor wir starten, achte drauf, dass du folgendes hast:
- Einen Hetzner Account (oder einen anderen Cloud Provider)
- Grundlegende SSH-Erfahrung
- Ein SSH Key Pair auf deinem lokalen Rechner
Schritt 0: Server bei Hetzner erstellen
Zuerst brauchen wir einen Ubuntu Server. Log dich in deine Hetzner Cloud Console ein und klick auf den Create Resource Button oben rechts.
Klick auf "Create Resource" um deinen Server zu erstellen
Server-Typ auswählen
Wähl Shared Resources und dann Cost-Optimized. Für Metabase ist der CX23 Server (2 vCPU, 4GB RAM, 40GB SSD) eine gute Wahl für nur €2,99/Monat. Metabase kann speicherhungrig sein, deshalb sind 4GB RAM empfohlen.
Wähl Cost-Optimized und den CX23 Server-Typ
Standort und OS auswählen
Wähl einen Standort in der Nähe deiner User (z.B. Nürnberg für EU) und Ubuntu 24.04 als Betriebssystem.
Wähl deinen bevorzugten Standort und Ubuntu 24.04
SSH Key hinzufügen
Du brauchst deinen öffentlichen SSH Key, um auf den Server zuzugreifen. Kopier auf deinem lokalen Rechner deinen Public Key in die Zwischenablage:
# On macOS
pbcopy < ~/.ssh/id_ed25519.pub
# On Linux
cat ~/.ssh/id_ed25519.pub
# Then copy the output
Kopier deinen öffentlichen SSH Key aus dem Terminal
In der Hetzner Console klick auf Add SSH Key und füg deinen Public Key ein. Gib ihm einen erkennbaren Namen.
Füg deinen SSH Key ein und gib ihm einen Namen
Server erstellen
Gib deinem Server einen Namen und klick auf Create & Buy now.
Gib deinem Server einen Namen und klick auf Create & Buy now
Server-IP holen
Sobald erstellt, siehst du die IP-Adresse deines Servers in der Übersicht. Kopier diese IP, du brauchst sie für die SSH-Verbindung.
Kopier die IP-Adresse deines Servers
Per SSH verbinden
Verbinde dich jetzt per SSH mit deinem Server:
ssh root@YOUR_SERVER_IP
Erfolgreich mit deinem Ubuntu Server verbunden
Schritt 1: Server updaten
Sobald eingeloggt, update das System, damit die neuesten Security Patches und Updates installiert sind.
sudo apt-get update
sudo apt-get upgrade -y
Wenn das fertig ist, ist dein Server bereit für die Software-Installation.
Schritt 2: UFW Firewall installieren und konfigurieren
Halte nur die nötigen Ports offen: SSH (22), HTTP (80), HTTPS (443).
Installier 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
Hinweis: Docker kann UFW-Regeln manchmal ignorieren. Prüf dazu die Extra-Einstellungen wie hier erklärt.
Schritt 3: Docker Installation
Docker wird das Container-System sein, das Metabase ausführt. Installier Docker mit diesen Commands:
Dependencies und Dockers 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 from Docker!" Nachricht siehst, ist Docker bereit.
Schritt 4: Caddy für automatisches HTTPS installieren
Caddy vereinfacht die HTTPS-Konfiguration, weil es SSL-Zertifikate automatisch von Let's Encrypt holt.
Wichtig: Bevor du Caddy mit deiner Domain konfigurierst, achte drauf, dass du den A Record (für IPv4) und AAAA Record (für IPv6) deiner Domain auf die IP-Adressen deines Servers zeigen lässt. Ohne korrekte DNS-Konfiguration kann Caddy keine SSL-Zertifikate ausstellen.
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
Caddyfile-Konfiguration bearbeiten:
sudo nano /etc/caddy/Caddyfile
Ersetze den Inhalt mit deinem Domainnamen für automatisches HTTPS:
yourdomain.com {
reverse_proxy localhost:3000
}
Speicher die Datei (Ctrl+O, Enter, Ctrl+X) und starte Caddy neu:
sudo systemctl restart caddy
Schritt 5: Metabase mit Docker Compose starten
Wir nutzen Docker Compose mit PostgreSQL als Anwendungsdatenbank. Erstell zuerst ein Verzeichnis für Metabase und wechsle rein:
mkdir ~/metabase
cd ~/metabase
Erstell compose.yml:
nano compose.yml
Füg folgenden Inhalt ein:
services:
metabase:
image: metabase/metabase:v0.59.x
container_name: metabase
restart: always
ports:
- "3000:3000"
environment:
MB_DB_TYPE: postgres
MB_DB_DBNAME: metabaseappdb
MB_DB_PORT: 5432
MB_DB_USER: metabase
MB_DB_PASS: CHANGE_ME_TO_A_SECURE_PASSWORD
MB_DB_HOST: postgres
depends_on:
- postgres
postgres:
image: postgres:16
container_name: metabase_postgres
restart: always
volumes:
- metabase_postgres_data:/var/lib/postgresql/data
environment:
POSTGRES_USER: metabase
POSTGRES_PASSWORD: CHANGE_ME_TO_A_SECURE_PASSWORD
POSTGRES_DB: metabaseappdb
volumes:
metabase_postgres_data:
Hinweis: Die Image-Version
v0.59.xwar zum Zeitpunkt des Schreibens das neueste stabile Release. Prüf auf Metabases DockerHub-Seite die aktuellste stabile Version vor dem Deployen.
Achte drauf, CHANGE_ME_TO_A_SECURE_PASSWORD in beiden Services (metabase und postgres) durch ein sicheres Passwort zu ersetzen.
Speicher die Datei und deploye Metabase:
sudo docker compose up -d
Docker zieht das Metabase-Image und startet es im Hintergrund. Metabase braucht ein bis zwei Minuten zum vollständigen Hochfahren, weil beim ersten Start Datenbank-Migrationen laufen.
Du kannst den Startfortschritt beobachten mit:
sudo docker compose logs -f metabase
Warte, bis du eine Nachricht wie Metabase Initialization COMPLETE siehst, bevor du weitermachst.
Schritt 6: Auf deine selbst gehostete Metabase-Instanz zugreifen
Öffne deine Domain (oder Server-IP) in einem beliebigen Browser. Deine Metabase-Instanz sollte jetzt den Setup-Wizard laden. Folge den Schritten auf dem Bildschirm, um deinen Admin-Account zu erstellen, deine bevorzugte Sprache einzustellen und deine erste Datenquelle zu verbinden.
Metabase Setup-Wizard: Erstell deinen Admin-Account
Nach dem Setup wirst du zum Metabase Home Screen weitergeleitet, wo du anfangen kannst, deine Daten zu erkunden!
Metabase ist einsatzbereit! Fang an, deine Daten zu erkunden
Sicherheitsempfehlungen
Öffentliche Server sollten immer abgesichert sein. Folgende Maßnahmen werden empfohlen:
- Regelmäßig Updates und Security Patches einspielen.
- Starke Passwörter setzen und User-Zugriff kontrollieren.
- Server-Logs auf verdächtige Aktivitäten überwachen.
- Docker Images aktuell halten.
- Regelmäßige Backups deines PostgreSQL Volumes einrichten. Schau dir unseren Guide zu 4 einfachen Wegen, Docker Volumes zu sichern für Backup-Strategien an.
Metabase updaten
Da wir einen spezifischen Version-Tag (v0.59.x) nutzen, musst du den Tag manuell updaten, wenn eine neue Version erscheint.
- Prüf auf Metabases DockerHub-Seite ob es neue Versionen gibt
- Update den Image-Tag in deiner
compose.ymlDatei (z.B.v0.59.xauf die neue Version ändern) - Pullen und neu starten:
cd ~/metabase
sudo docker compose pull
sudo docker compose up -d
Docker lädt die neue Version runter und ersetzt deinen aktuellen Container. Deine Daten sind sicher im PostgreSQL Volume.
Tipp: Wenn du automatische Updates bevorzugst und potentielle Breaking Changes in Kauf nimmst, kannst du den
latestTag statt einer spezifischen Version nutzen. Für Produktionsumgebungen sind spezifische Version-Tags aber empfohlen, weil sie dir mehr Kontrolle über Updates geben.
Kostenvergleich mit Cloud BI Tools
Metabase selbst zu hosten bringt typischerweise massive Einsparungen im Vergleich zu Cloud BI Services:
| Service | Monatliche Kosten | User inklusive | Self-Hostable | Datenstandort |
|---|---|---|---|---|
| Metabase Cloud | €85+ | 5 | Ja (OSS) | US/EU Server |
| Tableau Cloud | €70/User/Mo+ | Pro Seat | Komplex | Vendor Server |
| Power BI Pro | €10/User/Mo+ | Pro Seat | Nein | Azure |
| Hetzner (self-hosted) | ~€3-5 | Unbegrenzt | Ja | Deine Server |
Kostenvergleich mit Managed Hosting Plattformen
Wenn du Managed Hosting gegenüber Self-Hosting bevorzugst, so sehen die Kosten im Vergleich aus:
| Provider | vCPU Cores | RAM | Disk | Geschätzte monatliche Kosten |
|---|---|---|---|---|
| Render.com | 1 | 2 GB | 40 GB | ~€35-€45 |
| Fly.io | 2 | 2 GB | 40 GB | ~€20-€25 |
| Railway | 2 | 2 GB | 40 GB | ~€15-€66* |
| sliplane.io | 2 | 2 GB | 40 GB | ~€9/Monat flat |
*Hinweis: Railway berechnet nach tatsächlich genutztem Speicher und CPU-Zeit. €66 ist der Maximalpreis, der tatsächliche Preis kann variieren.
Beim Self-Hosting auf Hetzner (wie in diesem Guide gezeigt) bekommst du vergleichbare Specs für nur ~€3/Monat, aber du bist für das gesamte Setup und die Wartung verantwortlich. Managed Plattformen nehmen dir das ab, zu einem höheren Preis.
Troubleshooting
Metabase Container startet nicht
Prüf die Logs auf Fehler:
sudo docker compose logs metabase
Häufige Probleme sind zu wenig Arbeitsspeicher (Metabase braucht mindestens 2GB RAM) und falsche Datenbank-Credentials.
Metabase im Browser nicht erreichbar
- Achte drauf, dass deine Firewall Ports 80 und 443 erlaubt
- Prüf ob Caddy läuft:
sudo systemctl status caddy - Prüf ob Metabase läuft:
sudo docker compose ps - Achte drauf, dass dein DNS auf die IP-Adresse deines Servers zeigt
- Gib Metabase ein paar Minuten zum Hochfahren. Der erste Start kann etwas dauern
SSL-Zertifikat-Probleme
Caddy verwaltet SSL-Zertifikate automatisch, aber wenn es Probleme gibt:
- Achte drauf, dass dein Domain-DNS richtig konfiguriert ist
- Prüf die Caddy Logs:
sudo journalctl -u caddy - Achte drauf, dass Ports 80 und 443 offen und nicht von deinem Hosting-Provider blockiert sind
FAQ
Ist Metabase kostenlos?
Ja! Die Open Source Edition ist komplett kostenlos zum Selbst-Hosten. Du zahlst nur für die Server-Infrastruktur. Metabase bietet auch kostenpflichtige "Pro" (€85/Monat) und "Enterprise" (Custom Pricing) Pläne mit Features wie Advanced Embedding, Audit Logs, SSO und offiziellem Support.
Ist Metabase down? Wie prüfe ich das?
Wenn du selbst hostest, hängt die Verfügbarkeit von Metabase komplett von deiner eigenen Infrastruktur ab. Prüf den Container-Status mit sudo docker compose ps und die Logs mit sudo docker compose logs metabase. Wenn du Metabase Cloud nutzt, prüf deren Status-Seite.
Wie viel geben Unternehmen für Metabase aus?
Das kommt auf die Deployment-Methode an. Metabase Cloud startet bei €85/Monat für 5 User und steigt von da. Self-Hosting auf einem VPS wie Hetzner kostet nur €3-5/Monat für unbegrenzte User. Mit einer Managed Plattform wie Sliplane bekommst du Metabase für €9/Monat flat.
Kann ich Metabase mit PostgreSQL nutzen?
Auf jeden Fall, und genau das behandelt dieser Guide. PostgreSQL ist die empfohlene Datenbank für Metabases Anwendungsdaten in Produktionsumgebungen. Es ist zuverlässiger und performanter als die Standard-H2-Datenbank. Metabase kann sich auch als Datenquelle mit PostgreSQL (und vielen anderen Datenbanken) verbinden für deine Dashboards.
Warum PostgreSQL statt der Standard-H2-Datenbank?
Die Standard-H2-Datenbank ist okay zum Testen, aber nicht für Produktion geeignet. Sie kann unter hoher Last beschädigt werden und unterstützt keine einfachen Backups. PostgreSQL gibt dir Daten-Durabilität, bessere Performance und unkomplizierte Backup-Strategien mit Tools wie pg_dump oder Docker Volume Backups.
Jetzt hast du deine eigene selbst gehostete Metabase-Instanz auf Ubuntu 24.04 mit PostgreSQL! Verbinde deine Datenquellen und fang an, Dashboards zu bauen.
Wenn dir das Verwalten und Absichern deines eigenen Servers zu viel ist, schau dir an, wie einfach es ist, eine Managed Metabase-Instanz auf Sliplane zu deployen - es dauert nur 2 Minuten!
Nicht sicher, ob Metabase das richtige Tool für dein Team ist? Schau dir unseren Vergleich von 5 Open-Source Metabase Alternativen an und sieh, wie es sich gegen Apache Superset, Redash, Lightdash und mehr schlägt.
Cheers, Atakan