Installation · 10 min read · Dec 20, 2025
Metabase auf Ubuntu 22.04 mit Docker installieren

Metabase ist ein auf Java basierendes Open-Source-Tool für Business Intelligence (BI). Es verbindet sich mit einer Reihe von Datenbanken und verwendet einen Fragen-Builder, um die Komplexität großer SQL-Abfragen zu verbergen, die es Ihnen ermöglichen, Kundendaten in einem lesbaren Format zu visualisieren und zu analysieren. Sie können Fragen zu Ihren Daten stellen oder sie in Ihre App einbetten, damit Ihre Kunden ihre Daten selbst erkunden können. Es kann Dashboards und Visualisierungen erstellen und Benachrichtigungen an Ihren Slack-Kanal senden. Es kann sich mit vielen Datenbankplattformen und Datenquellen verbinden, darunter MySQL, Google Analytics, MongoDB, PostgreSQL, ClickHouse, Amazon Athena, Amazon Redshift und viele mehr.
Mit Docker lernen Sie, wie Sie Metabase auf einem Ubuntu 22.04-Server installieren.
Voraussetzungen
- Ein Server, der Ubuntu 22.04 mit mindestens 2 CPU-Kernen und 2 GB RAM ausführt. Sie müssen den Server gemäß den Anforderungen aufrüsten.
- Ein Nicht-Root-Benutzer mit Sudo-Rechten.
- Ein vollständig qualifizierter Domainname (FQDN), der auf Ihren Server verweist. Für unsere Zwecke verwenden wir
metabase.example.comals Domainnamen. - Metabase sendet E-Mail-Benachrichtigungen an Benutzer. Wir empfehlen, einen Drittanbieter-Transaktionsmaildienst wie Mailgun, Sendgrid, Amazon SES oder Sparkpost zu verwenden. Die Anweisungen in diesem Leitfaden verwenden Amazon SES.
- Stellen Sie sicher, dass alles aktualisiert ist.
$ sudo apt update - Installieren Sie grundlegende Dienstprogramme. Einige davon sind möglicherweise bereits installiert.
$ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y
Schritt 1 - Firewall konfigurieren
Der erste Schritt besteht darin, die Firewall zu konfigurieren. Ubuntu wird standardmäßig mit ufw (Uncomplicated Firewall) geliefert.
Überprüfen Sie, ob die Firewall aktiv ist.
$ sudo ufw statusSie sollten die folgende Ausgabe erhalten.
Status: inactiveErlauben Sie den SSH-Port, damit die Firewall die aktuelle Verbindung beim Aktivieren nicht unterbricht.
$ sudo ufw allow OpenSSHErlauben Sie auch die HTTP- und HTTPS-Ports.
$ sudo ufw allow http
$ sudo ufw allow httpsAktivieren Sie die Firewall
$ sudo ufw enable
Befehl kann bestehende SSH-Verbindungen stören. Mit der Operation fortfahren (y|n)? y
Firewall ist aktiv und beim Systemstart aktiviertÜberprüfen Sie den Status der Firewall erneut.
$ sudo ufw statusSie sollten eine ähnliche Ausgabe sehen.
Status: active
Zu Aktion Von
-- ------ ----
OpenSSH ERLAUBEN Überall
80/tcp ERLAUBEN Überall
443 ERLAUBEN Überall
OpenSSH (v6) ERLAUBEN Überall (v6)
80/tcp (v6) ERLAUBEN Überall (v6)
443 (v6) ERLAUBEN Überall (v6)Schritt 2 - Docker und Docker Compose installieren
Ubuntu 22.04 wird mit einer älteren Version von Docker ausgeliefert. Um die neueste Version zu installieren, importieren Sie zuerst den Docker GPG-Schlüssel.
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpgErstellen Sie eine Docker-Repository-Datei.
$ echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullAktualisieren Sie die System-Repository-Liste.
$ sudo apt updateInstallieren Sie die neueste Version von Docker.
$ sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-pluginÜberprüfen Sie, ob es läuft.
$ sudo systemctl status docker
? docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2023-01-05 05:55:23 UTC; 2min 16s ago
TriggeredBy: ? docker.socket
Docs: https://docs.docker.com
Main PID: 2116 (dockerd)
Tasks: 8
Memory: 22.5M
CPU: 252ms
CGroup: /system.slice/docker.service
??2116 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sockStandardmäßig benötigt Docker Root-Rechte. Wenn Sie vermeiden möchten, bei jedem Ausführen des docker-Befehls sudo zu verwenden, fügen Sie Ihren Benutzernamen zur docker-Gruppe hinzu.
$ sudo usermod -aG docker $(whoami)Sie müssen sich vom Server abmelden und wieder als derselbe Benutzer anmelden, um diese Änderung zu aktivieren, oder den folgenden Befehl verwenden.
$ su - ${USER}Bestätigen Sie, dass Ihr Benutzer zur Docker-Gruppe hinzugefügt wurde.
$ groups
navjot wheel dockerSchritt 3 - Docker Compose-Datei für Metabase erstellen
Erstellen Sie ein Verzeichnis für Metabase.
$ mkdir ~/metabaseErstellen und öffnen Sie die Docker-Compose-Datei zur Bearbeitung.
$ nano docker-compose.ymlFügen Sie den folgenden Code ein.
version: '3.9'
services:
metabase:
image: metabase/metabase:latest
container_name: metabase
hostname: metabase
volumes:
- /dev/urandom:/dev/random:ro
ports:
- 3000:3000
environment:
MB_DB_TYPE: postgres
MB_DB_DBNAME: metabase
MB_DB_PORT: 5432
MB_DB_USER_FILE: /run/secrets/db_user
MB_DB_PASS_FILE: /run/secrets/db_password
MB_DB_HOST: postgres
env_file:
- metabase.env
healthcheck:
test: curl --fail -I http://localhost:3000/api/health || exit 1
interval: 15s
retries: 5
start_period: 10s
timeout: 5s
networks:
- metanet1
depends_on:
- postgres
secrets:
- db_password
- db_user
postgres:
image: postgres:latest
container_name: postgres
hostname: postgres
environment:
POSTGRES_USER_FILE: /run/secrets/db_user
POSTGRES_DB: metabase
POSTGRES_PASSWORD_FILE: /run/secrets/db_password
healthcheck:
test: ['CMD', 'pg_isready', '-U', 'postgres']
volumes:
- ./postgresql:/var/lib/postgresql/data
networks:
- metanet1
secrets:
- db_password
- db_user
networks:
metanet1:
driver: bridge
secrets:
db_password:
file: db_password.txt
db_user:
file: db_user.txtSpeichern Sie die Datei, indem Sie Ctrl + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.
Die obige Docker-Compose-Datei lädt die neueste Version des Metabase-Docker-Images und stellt die App über Port 3000 zur Verfügung. Sie ist mit dem PostgreSQL-Image verbunden. Der Benutzername und das Passwort der PostgreSQL-Datenbank werden in den Dateien db_user.txt und db_password.txt gespeichert.
Erstellen und öffnen Sie die Datei db_user.txt zur Bearbeitung.
$ nano db_user.txtFügen Sie Ihren Benutzernamen ein und speichern Sie die Datei, indem Sie Ctrl + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.
Erstellen und öffnen Sie die Datei db_password.txt zur Bearbeitung.
$ nano db_password.txtFügen Sie Ihr Passwort ein und speichern Sie die Datei, indem Sie Ctrl + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.
Schritt 4 - Umgebungsdateien konfigurieren und Metabase starten
Generieren Sie einen Verschlüsselungsschlüssel mit dem folgenden Befehl.
$ openssl rand -base64 32
aWPk99bIjkG7NvWYVqR5NIAojhW1Idk0OvTH1xWVMbY=Kopieren Sie den Schlüssel zur späteren Verwendung.
Erstellen und öffnen Sie die Datei metabase.env zur Bearbeitung.
$ nano metabase.envFügen Sie den folgenden Code ein. Fügen Sie den geheimen Schlüssel, den Sie generiert haben, der Variablen MB_ENCRYPTION_SECRET_KEY hinzu. Geben Sie Ihre Metabase-Domain einschließlich des HTTPS-Protokolls an. Geben Sie Ihre SMTP-Details mit dem Anbieter an, den Sie verwenden. Wir verwenden Amazon SES. Die Variable MB_PASSWORD_COMPLEXITY ist auf stark gesetzt, was bedeutet, dass Ihr Metabase-Passwort mindestens 8 Zeichen lang sein sollte, mit 2 Kleinbuchstaben, 2 Großbuchstaben, 1 Ziffer und 1 Sonderzeichen.
MB_SITE_URL=https://metabase.example.com
MB_SITE_NAME="Howtoforge"
[email protected]
[email protected]
MB_EMAIL_FROM_NAME=Howtoforge
MB_EMAIL_SMTP_HOST=email-smtp.us-west-2.amazonaws.com
MB_EMAIL_SMTP_USERNAME=AWS_USERID
MB_EMAIL_SMTP_PASSWORD=AWS_KEY
MB_EMAIL_SMTP_PORT=587
MB_EMAIL_SMTP_SECURITY=starttls
MB_ENCRYPTION_SECRET_KEY=aWPk99bIjkG7NvWYVqR5NIAojhW1Idk0OvTH1xWVMbY=
MB_ANON_TRACKING_ENABLED=false
MB_APPLICATION_NAME=Howtoforge Metabase
MB_PASSWORD_COMPLEXITY=strongSpeichern Sie die Datei, indem Sie Ctrl + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.
Starten Sie den Docker-Container.
$ docker compose up -dSie können den Status der Container mit dem folgenden Befehl überwachen.
$ watch docker psSie erhalten eine ähnliche Ausgabe. Warten Sie, bis der Status beider Container gesund wird, und drücken Sie dann Ctrl + C, um den Bildschirm zu verlassen.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
15698ae2de6a metabase/metabase:latest "/app/run_metabase.sh" 2 minutes ago Up 2 minutes (healthy) 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp metabase
ee2d03dc3a00 postgres:latest "docker-entrypoint.s…" 2 minutes ago Up 2 minutes (healthy) 5432/tcp postgresSchritt 5 - Nginx installieren
Ubuntu 22.04 wird mit einer älteren Version von Nginx ausgeliefert. Um die neueste Version zu installieren, müssen Sie das offizielle Nginx-Repository herunterladen.
Importieren Sie den Signaturschlüssel von Nginx.
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/nullFügen Sie das Repository für die stabile Version von Nginx hinzu.
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.listAktualisieren Sie die System-Repositories.
$ sudo apt updateInstallieren Sie Nginx.
$ sudo apt install nginxÜberprüfen Sie die Installation.
$ nginx -v
nginx version: nginx/1.22.1Starten Sie den Nginx-Server.
$ sudo systemctl start nginxÜberprüfen Sie den Status des Servers.
$ sudo systemctl status nginx
? nginx.service - nginx - Hochleistungs-Webserver
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2023-01-05 07:21:46 UTC; 1s ago
Docs: https://nginx.org/en/docs/
Process: 13197 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
Main PID: 13198 (nginx)
Tasks: 3 (limit: 2237)
Memory: 2.6M
CPU: 7ms
CGroup: /system.slice/nginx.service
??13198 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
??13199 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
??13200 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
Jan 05 07:21:46 metabase systemd[1]: Starting nginx - Hochleistungs-Webserver...
Jan 05 07:21:46 metabase systemd[1]: Started nginx - Hochleistungs-Webserver.Schritt 6 - SSL installieren
Wir müssen Certbot installieren, um das SSL-Zertifikat zu generieren. Sie können Certbot entweder über das Repository von Ubuntu installieren oder die neueste Version mit dem Snapd-Tool herunterladen. Wir werden die Snapd-Version verwenden.
Ubuntu 22.04 wird standardmäßig mit Snapd installiert. Führen Sie die folgenden Befehle aus, um sicherzustellen, dass Ihre Version von Snapd auf dem neuesten Stand ist. Stellen Sie sicher, dass Ihre Version von Snapd auf dem neuesten Stand ist.
$ sudo snap install core
$ sudo snap refresh coreInstallieren Sie Certbot.
$ sudo snap install --classic certbotVerwenden Sie den folgenden Befehl, um sicherzustellen, dass der Certbot-Befehl ausgeführt wird, indem Sie einen symbolischen Link zum Verzeichnis /usr/bin erstellen.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbotFühren Sie den folgenden Befehl aus, um ein SSL-Zertifikat zu generieren.
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d metabase.example.comDer obige Befehl lädt ein Zertifikat in das Verzeichnis /etc/letsencrypt/live/metabase.example.com auf Ihrem Server herunter.
Generieren Sie ein Diffie-Hellman-Gruppen-Zertifikat.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096Führen Sie einen Testlauf des Prozesses durch, um zu überprüfen, ob die SSL-Erneuerung einwandfrei funktioniert.
$ sudo certbot renew --dry-runWenn Sie keine Fehler sehen, sind Sie bereit. Ihr Zertifikat wird automatisch erneuert.
Schritt 7 - Nginx konfigurieren
Öffnen Sie die Datei /etc/nginx/nginx.conf zur Bearbeitung.
$ sudo nano /etc/nginx/nginx.confFügen Sie die folgende Zeile vor der Zeile include /etc/nginx/conf.d/*.conf; hinzu.
server_names_hash_bucket_size 64;Speichern Sie die Datei, indem Sie Ctrl + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.
Erstellen und öffnen Sie die Datei /etc/nginx/conf.d/metabase.conf zur Bearbeitung.
$ sudo nano /etc/nginx/conf.d/metabase.confFügen Sie den folgenden Code ein.
server {
# Leiten Sie alle http-Anfragen zu https um
listen 80;
listen [::]:80;
server_name metabase.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name metabase.example.com;
access_log /var/log/nginx/metabase.access.log;
error_log /var/log/nginx/metabase.error.log;
# TLS-Konfiguration
ssl_certificate /etc/letsencrypt/live/metabase.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/metabase.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/metabase.example.com/chain.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 1d;
# OCSP Stapling ---
# Holen Sie sich OCSP-Daten von der URL im ssl_certificate und cachen Sie sie
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:3000;
}
}Sobald Sie fertig sind, speichern Sie die Datei, indem Sie Ctrl + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.
Überprüfen Sie die Syntax der Nginx-Konfigurationsdatei.
$ sudo nginx -t
nginx: die Konfigurationsdatei /etc/nginx/nginx.conf hat die Syntax ok
nginx: Konfigurationsdatei /etc/nginx/nginx.conf Test war erfolgreichStarten Sie den Nginx-Server neu.
$ sudo systemctl restart nginxSchritt 8 - Metabase installieren und darauf zugreifen
Öffnen Sie die URL https://metabase.example.com, um den Metabase-Setup-Assistenten zu starten.

Klicken Sie auf die Schaltfläche Loslegen, um zum nächsten Schritt zu gelangen. Die nächste Seite zeigt mehrere Schritte an. Wählen Sie Ihre Sprache aus und klicken Sie auf Weiter, um fortzufahren.

Geben Sie Ihre Metabase-Administratordaten ein.

Als Nächstes werden Sie aufgefordert, Daten zu Metabase hinzuzufügen, um sie zu erkunden. Sie können die Daten entweder jetzt hinzufügen oder später.

Klicken Sie auf Ich werde meine Daten später hinzufügen, um fortzufahren.

Deaktivieren Sie das Kontrollkästchen Erlauben Sie Metabase, anonym Nutzungsereignisse zu sammeln und klicken Sie auf die Schaltfläche Fertigstellen, um den Vorgang abzuschließen.

Klicken Sie auf die Schaltfläche Nehmen Sie mich zu Metabase, um das Metabase-Dashboard zu starten.

Sie können Metabase jetzt verwenden.
Schritt 9 - Metabase sichern
Wenn Sie die Metabase-Datenbank sichern möchten, verwenden Sie den folgenden Befehl.
$ docker exec -t postgres pg_dumpall -c -U navjot > dump_`date +%d-%m-%YErhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.