Metabase auf Ubuntu 24.04 mit PostgreSQL selbst hosten

Metabase auf Ubuntu 24.04 mit PostgreSQL selbst hosten

Atakan Öztarak - Content Engineer @sliplane.ioAtakan Öztarak
13 min

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

ServiceStartpreisUser inklusiveOpen Source
Metabase Cloud€85/Monat5Ja (OSS)
Tableau Cloud€70/User/MonatPro SeatNein
Power BI Pro€10/User/MonatPro SeatNein
LookerCustom PricingPro SeatNein
Self-hosted~€3-5/MonatUnbegrenztJa

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.

Hetzner Dashboard - Create ResourceKlick 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.

Server-Typ auswählenWä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.

Standort und Ubuntu auswählenWä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

SSH Key kopierenKopier 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.

SSH Key in Hetzner hinzufügenFüg deinen SSH Key ein und gib ihm einen Namen

Server erstellen

Gib deinem Server einen Namen und klick auf Create & Buy now.

Server erstellenGib 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.

Server IP-AdresseKopier die IP-Adresse deines Servers

Per SSH verbinden

Verbinde dich jetzt per SSH mit deinem Server:

ssh root@YOUR_SERVER_IP

SSH LoginErfolgreich 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:

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

compose.yml
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.x war 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 ScreenMetabase 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 Home ScreenMetabase 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.

  1. Prüf auf Metabases DockerHub-Seite ob es neue Versionen gibt
  2. Update den Image-Tag in deiner compose.yml Datei (z.B. v0.59.x auf die neue Version ändern)
  3. 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 latest Tag 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:

ServiceMonatliche KostenUser inklusiveSelf-HostableDatenstandort
Metabase Cloud€85+5Ja (OSS)US/EU Server
Tableau Cloud€70/User/Mo+Pro SeatKomplexVendor Server
Power BI Pro€10/User/Mo+Pro SeatNeinAzure
Hetzner (self-hosted)~€3-5UnbegrenztJaDeine Server

Kostenvergleich mit Managed Hosting Plattformen

Wenn du Managed Hosting gegenüber Self-Hosting bevorzugst, so sehen die Kosten im Vergleich aus:

ProvidervCPU CoresRAMDiskGeschätzte monatliche Kosten
Render.com12 GB40 GB~€35-€45
Fly.io22 GB40 GB~€20-€25
Railway22 GB40 GB~€15-€66*
sliplane.io22 GB40 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

  1. Achte drauf, dass deine Firewall Ports 80 und 443 erlaubt
  2. Prüf ob Caddy läuft: sudo systemctl status caddy
  3. Prüf ob Metabase läuft: sudo docker compose ps
  4. Achte drauf, dass dein DNS auf die IP-Adresse deines Servers zeigt
  5. 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:

  1. Achte drauf, dass dein Domain-DNS richtig konfiguriert ist
  2. Prüf die Caddy Logs: sudo journalctl -u caddy
  3. 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

Metabase selbst hosten - ganz einfach!

Sliplane gibt dir alles, was du brauchst, um Metabase einfach selbst zu hosten.