Metabase auf dem Synology NAS installieren: Business-Intelligence-Dashboards für KMU
Metabase auf dem Synology NAS mit PostgreSQL als Anwendungsdatenbank im Container Manager betreiben: Compose-Datei mit fester Version, Einrichtung, erste Datenquelle, Dashboards, HTTPS per Reverse Proxy und sicheres Teilen.
Neue Version verfügbar: metabase 0.65.2.1. Diese Anleitung wird überarbeitet. Beschrieben ist metabase 0.64.1.5.
WerbelinksMit * markierte Links sind Werbelinks: Bei einem Kauf erhalten wir eine Provision, der Preis bleibt gleich. Als Amazon-Partner verdiene ich an qualifizierten Verkäufen. Mehr dazu

Metabase ist ein Open-Source-Werkzeug für Business Intelligence: visuelle Dashboards, Ad-hoc-Abfragen und das Teilen von Auswertungen per Link oder Einbettung. Auf einem Synology NAS betrieben, bleiben Ihre Daten dort, wo sie ohnehin liegen. Diese Anleitung richtet Metabase mit PostgreSQL als Anwendungsdatenbank im Container Manager ein.
Voraussetzungen
| Komponente | Anforderung |
|---|---|
| NAS | Synology mit x86-64-CPU, DSM 7.2 oder höher und Container Manager |
| RAM | mindestens 2 GB frei für Metabase (Java) plus Datenbank |
| Ordnerstruktur | /volume1/docker/metabase mit Unterordnern db und plugins |
| Subdomain | z. B. metabase.example.synology.me für HTTPS via Reverse-Proxy |
| SMTP-Zugang | optional, für E-Mail-Benachrichtigungen und Einladungen |
Ermitteln Sie vorab Benutzer-ID und Gruppen-ID Ihres Synology-Benutzers per SSH mit id (häufig uid=1026, gid=100). Metabase legt Dateien im Plugin-Ordner damit an.
Schritt 1: Ordnerstruktur und Berechtigungen anlegen
Öffnen Sie die File Station und erstellen Sie unter /volume1/docker den Ordner metabase mit zwei Unterordnern:
dbfür die PostgreSQL-Datenbankpluginsfür zusätzliche Metabase-Treiber
Klicken Sie den Ordner plugins mit der rechten Maustaste an, wählen Sie Eigenschaften → Berechtigungen und gewähren Sie Ihrem Benutzer Lese- und Schreibrechte, angewendet auf diesen Ordner, Unterordner und Dateien. Den Ordner db lassen Sie unverändert: PostgreSQL setzt dort beim ersten Start selbst passende Rechte.
Verifizieren: ls -ld /volume1/docker/metabase/* per SSH listet beide Ordner; der Pfad lautet exakt /volume1/docker/metabase/db sowie /volume1/docker/metabase/plugins.
Schritt 2: Compose-Datei mit Metabase und PostgreSQL erstellen
Metabase läuft im offiziellen Image metabase/metabase auf Port 3000; diese Anleitung legt die Version fest (Stand Oktober 2026: v0.64.1.5). Für den Produktivbetrieb empfiehlt die Dokumentation PostgreSQL als Anwendungsdatenbank; die eingebettete H2-Datenbank ist nur für Tests gedacht.
Erstellen Sie im Ordner /volume1/docker/metabase die Datei compose.yaml. Passen Sie Benutzer-ID, Gruppen-ID, Passwörter und die Site-URL an.
services:
db:
image: postgres:16
container_name: metabase-db
hostname: metabase-db
restart: unless-stopped
security_opt:
- no-new-privileges:true
healthcheck:
test: ["CMD-SHELL", "pg_isready -U metabaseuser -d metabase"]
interval: 10s
timeout: 5s
retries: 10
volumes:
- /volume1/docker/metabase/db:/var/lib/postgresql/data
environment:
POSTGRES_DB: metabase
POSTGRES_USER: metabaseuser
POSTGRES_PASSWORD: "IHR_STARKES_DB_PASSWORT"
metabase:
image: metabase/metabase:v0.64.1.5
container_name: metabase
hostname: metabase
restart: unless-stopped
security_opt:
- no-new-privileges:true
depends_on:
db:
condition: service_healthy
ports:
- "6400:3000"
volumes:
- /volume1/docker/metabase/plugins:/plugins:rw
environment:
TZ: Europe/Berlin
JAVA_TIMEZONE: Europe/Berlin
MUID: "1026" # Ihre uid; nicht zusätzlich user: setzen
MGID: "100"
MB_DB_TYPE: postgres
MB_DB_DBNAME: metabase
MB_DB_PORT: "5432"
MB_DB_USER: metabaseuser
MB_DB_PASS: "IHR_STARKES_DB_PASSWORT"
MB_DB_HOST: metabase-db
MB_SITE_URL: "https://metabase.example.synology.me"
# erst nach Schritt 7 aktivieren, sonst ist http://NAS-IP:6400 nicht nutzbar
# MB_REDIRECT_ALL_REQUESTS_TO_HTTPS: "true"
MB_ENCRYPTION_SECRET_KEY: "IHR_32_ZEICHEN_BASE64_SCHLUESSEL"
MB_EMAIL_FROM_ADDRESS: "metabase@example.de"
MB_EMAIL_FROM_NAME: "Metabase"
MB_EMAIL_REPLY_TO: '["support@example.de"]'
MB_EMAIL_SMTP_HOST: "smtp.example.de"
MB_EMAIL_SMTP_PORT: "587"
MB_EMAIL_SMTP_SECURITY: "starttls"
MB_EMAIL_SMTP_USERNAME: "metabase@example.de"
MB_EMAIL_SMTP_PASSWORD: "IHR_SMTP_PASSWORT"
healthcheck:
test: curl --fail -I http://localhost:3000/api/health || exit 1
interval: 15s
timeout: 5s
retries: 5Erzeugen Sie den Verschlüsselungsschlüssel per SSH mit openssl rand -base64 32 und bewahren Sie ihn dauerhaft auf (z. B. im Passwortmanager). Metabase verschlüsselt damit die gespeicherten Zugangsdaten Ihrer Datenquellen; geht er verloren, lassen sich diese nicht mehr entschlüsseln und müssen neu eingegeben werden. MB_SITE_URL muss das Protokoll enthalten, also https://.... Den Abschnitt MB_EMAIL_* können Sie weglassen, wenn Sie keinen SMTP-Zugang haben. MB_EMAIL_REPLY_TO erwartet eine JSON-Liste, also '["support@example.de"]' in einfachen Anführungszeichen. Eine einfache Adresse ohne Klammern bricht den Start mit Metabase Initialization FAILED: Invalid JSON configuration for setting: email-reply-to ab, und der Container startet in einer Schleife neu. MUID/MGID übernimmt das Image selbst; ein zusätzliches user: verhindert, dass das Startskript die Benutzerrechte korrekt setzt.
Verifizieren: cd /volume1/docker/metabase && sudo docker compose config --quiet gibt keine Meldung aus; grep IHR_ compose.yaml findet keine Platzhalter mehr.
Schritt 3: Stack im Container Manager starten
Öffnen Sie im Container Manager Projekt und klicken Sie auf Erstellen. Wählen Sie als Pfad den Ordner /volume1/docker/metabase. Container Manager erkennt die compose.yaml automatisch. Starten Sie das Projekt und warten Sie, bis beide Container als „fehlerfrei“ angezeigt werden.
Beim ersten Start initialisiert PostgreSQL ihr Datenverzeichnis und Metabase erstellt die nötigen Tabellen. Das kann je nach NAS-Leistung mehrere Minuten dauern. Die Protokollansicht zeigt Fortschritt und Fehler.
Verifizieren: Beide Container laufen, der Health-Check für metabase zeigt grün, und curl http://NAS-IP:6400/api/health liefert {"status":"ok"}.
Update auf eine neue Version: Sichern Sie zuerst /volume1/docker/metabase (vor allem den Ordner db), stoppen Sie das Projekt, ändern Sie den Tag in der Compose-Datei und erstellen Sie das Projekt neu. Metabase migriert die Anwendungsdatenbank beim Start selbst; ein Zurück auf die alte Version gelingt danach nur mit der Sicherung. Beim Wechsel von 63 auf 64 entfallen einige Umgebungsvariablen für Metabot (zum Beispiel MB_METABOT_CHAT_SYSTEM_PROMPT und MB_METABOT_LIMIT_UNIT); diese Einstellungen setzen Sie jetzt in der Admin-Oberfläche. Eigene Visualisierungen aus dem Custom-Visualization-SDK 1.x laufen nur bis Version 63 sicher. Für die Compose-Datei dieser Anleitung ist außer dem Tag nichts zu ändern. Im Test lief der Stack zuerst mit v0.63.18.5 samt abgeschlossener Ersteinrichtung, danach mit v0.64.1.5: Metabase spielte die Migrationen für Version 64 ein, meldete Metabase Initialization COMPLETE, der Health-Check wurde grün, und die Anmeldung mit dem vorhandenen Admin-Konto funktionierte.
Schritt 4: Setup-Wizard abschließen
Rufen Sie Metabase im LAN über http://NAS-IP:6400 auf. Der erste Start zeigt den Einrichtungsassistenten. Wählen Sie als Sprache „Deutsch“, legen Sie ein Administratorkonto mit sicherem Passwort an und tragen Sie den Firmennamen ein. Schließen Sie den Assistenten zügig ab: Bis dahin kann jeder im Netz das erste Admin-Konto anlegen. Diese Angaben lassen sich später ändern, aber das Admin-Konto bildet die Basis für alle Berechtigungen.
Nach dem Assistenten erscheint die Startseite. Legen Sie direkt eine Sammlung für Ihr Team an, damit Fragen und Dashboards nicht unorganisiert im persönlichen Ordner des Admins landen.
Verifizieren: Sie können sich mit dem neuen Admin-Konto anmelden, die Oberfläche ist deutsch, und unter Admin → Personen ist das Konto als Administrator sichtbar.
Schritt 5: Erste Datenquelle verbinden
Klicken Sie auf das Zahnrad oben rechts und wählen Sie Admin → Datenbanken → Datenbank hinzufügen. Metabase unterstützt unter anderem PostgreSQL, MySQL, MariaDB, MongoDB, SQLite, BigQuery, Snowflake, SQL Server, Oracle und Google Sheets. Für einen ersten Test eignet sich eine bestehende MariaDB oder PostgreSQL auf dem NAS. Legen Sie dafür einen Datenbankbenutzer mit reinen Leserechten an.
Geben Sie Host, Port, Datenbankname, Benutzer und Passwort ein; als Host für MariaDB auf dem NAS selbst dient die LAN-IP des NAS, nicht localhost. Aktivieren Sie SSL verwenden, wenn die Datenbank dies erfordert.
Verifizieren: Die neue Datenbank erscheint unter Admin → Datenbanken, und beim Erstellen einer neuen Frage sind ihre Tabellen auswählbar.
Schritt 6: Erste Frage und erstes Dashboard erstellen
Klicken Sie auf + Neu → Frage und wählen Sie die Datenbank und eine Tabelle. Die grafische Oberfläche filtert und gruppiert per Mausklick; alternativ schreiben Sie unter + Neu → SQL-Abfrage direkt SQL. Speichern Sie die Frage unter einem aussagekräftigen Namen in einer Sammlung.
Erstellen Sie anschließend unter + Neu → Dashboard ein Dashboard, fügen Sie die gespeicherte Frage als Karte hinzu, ordnen Sie sie per Drag-and-drop an und speichern Sie.
Verifizieren: Das Dashboard ist unter dem gewählten Namen aufrufbar, die Kachel zeigt aktuelle Daten, und ein Klick auf die Kachel führt zur zugrundeliegenden Frage zurück.
Schritt 7: HTTPS, Reverse-Proxy und optionale E-Mail
Für den produktiven Betrieb richten Sie einen Reverse Proxy in DSM ein: Systemsteuerung → Anmeldeportal → Erweitert → Reverse Proxy. Leiten Sie HTTPS-Anfragen für metabase.example.synology.me:443 an http://localhost:6400 weiter und weisen Sie unter Sicherheit → Zertifikat ein gültiges Zertifikat zu. Danach aktivieren Sie in der compose.yaml die Zeile MB_REDIRECT_ALL_REQUESTS_TO_HTTPS: "true" und erstellen das Projekt neu. Geben Sie Port 6400 in der DSM-Firewall höchstens für das LAN frei und leiten Sie am Router nur Port 443 weiter.
Mit den SMTP-Einstellungen kann Metabase Benutzer einladen, Passwörter zurücksetzen und Abonnements versenden. MB_EMAIL_REPLY_TO muss eine gültige E-Mail-Adresse enthalten.
Verifizieren: Die Subdomain ist per HTTPS mit gültigem Zertifikat erreichbar, http://-Aufrufe der Subdomain werden auf HTTPS umgeleitet, und die Test-E-Mail unter Admin → Einstellungen → E-Mail kommt an.
Schritt 8: Dashboards teilen und einbetten
Zum Teilen gibt es mehrere Wege:
- Sammlungen und Berechtigungen: Ordnen Sie Benutzer Gruppen zu und vergeben Sie Lese- oder Schreibrechte auf Sammlungen. Das ist der sauberste Weg für interne Teams.
- Öffentliche Links: Nach Aktivieren unter Admin → Einstellungen → Öffentliches Teilen sind Dashboards per Link ohne Anmeldung abrufbar. Jeder mit dem Link sieht die Daten; nutzen Sie das nur für unkritische Inhalte.
- E-Mail- und Slack-Abonnements: Benutzer erhalten Dashboards regelmäßig automatisch; erfordert eingerichtetes SMTP bzw. Slack.
- Einbettung: Die Open-Source-Edition bietet öffentliche Einbettung per iFrame und statische Einbettung mit signiertem JWT aus Ihrer Anwendung. Interaktive Einbettung mit Benutzeranmeldung ist den kostenpflichtigen Editionen vorbehalten.
Daten aus internen Werkzeugen wie NocoDB als Airtable-Alternative auf Synology oder Odoo als ERP/CRM für KMU auf Synology binden Sie als weitere Datenquelle an.
Verifizieren: Ein Testbenutzer sieht nur die für ihn freigegebenen Dashboards; ein geteilter Link öffnet das Dashboard korrekt; bei Einbettung erscheint das Dashboard im iFrame ohne Fehlermeldung.
Troubleshooting / Typische Fehler
| Fehlerbild | Ursache und Lösung |
|---|---|
| Datenquellen melden Verbindungsfehler, Protokoll zeigt Entschlüsselungsfehler | MB_ENCRYPTION_SECRET_KEY wurde geändert oder entfernt. Ursprünglichen Schlüssel wieder eintragen. |
| H2-Datenbank korrupt | In Produktion PostgreSQL verwenden. H2 ist nur für Tests gedacht. |
| E-Mail-Links funktionieren nicht | MB_SITE_URL muss Protokoll enthalten, also https://.... |
| PostgreSQL startet nicht | Bei Postgres 16/17 auf /var/lib/postgresql/data mounten, bei Postgres 18+ auf /var/lib/postgresql. |
| Plugins werden nicht geschrieben | MUID/MGID müssen zur Synology-Benutzer-ID und -Gruppe passen; kein user: in der Compose-Datei. |
Container startet ständig neu, Protokoll zeigt Invalid JSON configuration for setting: email-reply-to | MB_EMAIL_REPLY_TO als JSON-Liste angeben: '["support@example.de"]', oder die Zeile entfernen. |
| Reverse Proxy zeigt Fehler 502 | Container läuft nicht oder Ziel ist falsch; Ziel muss http://localhost:6400 sein. |
| Umleitungsschleife oder Umleitung auf nicht erreichbare Domain | MB_REDIRECT_ALL_REQUESTS_TO_HTTPS ist aktiv, bevor der Reverse Proxy funktioniert; Zeile auskommentieren, Projekt neu erstellen. |
Häufige Fragen
Brauche ich zwingend PostgreSQL?
Nein, Metabase startet auch mit der eingebetteten H2-Datenbank. Für den Produktivbetrieb empfiehlt die Dokumentation PostgreSQL, um Datenverluste zu vermeiden.
Kann ich Metabase direkt auf Port 3000 betreiben?
Ja, aber auf Synology ist Port 3000 oft belegt; deshalb nutzt diese Anleitung Host-Port 6400.
Welche Datenquellen lassen sich anbinden?
PostgreSQL, MySQL, MariaDB, MongoDB, SQLite, BigQuery, Snowflake, SQL Server, Oracle, Google Sheets, CSV-Upload und viele weitere über offizielle oder Community-Treiber.
Wie teile ich Dashboards im Team?
Über Sammlungen mit Berechtigungen, öffentliche Links, eingebettete iFrames oder Abonnements per E-Mail und Slack.
Was ist der Unterschied zwischen H2- und Produktiv-Setup?
H2 speichert alles in einer einzelnen Datei und ist für Tests gedacht. PostgreSQL ist eine robuste Datenbank für mehrere Benutzer, Backups und Dauerbetrieb.
Fazit
Mit PostgreSQL als Anwendungsdatenbank, festgelegter Image-Version, gesichertem Verschlüsselungsschlüssel und HTTPS über den Reverse Proxy ist Metabase auf dem Synology NAS betriebsbereit. Sichern Sie /volume1/docker/metabase regelmäßig (z. B. mit Hyper Backup) und lesen Sie vor jedem Versionswechsel die Release Notes, da Metabase beim Start die Datenbank migriert.
Weiterführende Anleitungen und Quellen
- NocoDB auf Synology: Airtable-Alternative für KMU-Datenbanken
- Odoo auf Synology: ERP und CRM für kleine Unternehmen
- Metabase Docs – Running Metabase on Docker: https://www.metabase.com/docs/latest/installation-and-operation/running-metabase-on-docker
- Metabase Docs – Configuring the application database: https://www.metabase.com/docs/latest/installation-and-operation/configuring-application-database
- Docker Hub – metabase/metabase: https://hub.docker.com/r/metabase/metabase


