Wiki.js auf Synology NAS installieren: Git-gestütztes Firmen-Wiki mit PostgreSQL
Wiki.js 2.5 mit PostgreSQL im Container Manager auf dem Synology NAS einrichten: HTTPS über den DSM-Reverse-Proxy, Administrator per Setup-Assistent, Git-Synchronisation und Datenbank-Backup.
Geprüft am 30.09.2026 · für wiki 2.5.315, postgres 15-alpine
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

Wiki.js ist eine quelloffene Wiki-Software auf Node.js mit Markdown-Editor, Rechteverwaltung und optionaler Synchronisation der Inhalte in ein Git-Repository. Diese Anleitung richtet Wiki.js 2 mit PostgreSQL im Container Manager eines Synology NAS ein, veröffentlicht es über den Reverse Proxy von DSM mit HTTPS und sichert die Seiten per Git. Sie richtet sich an Administratoren, die ein internes Wiki für technische Teams betreiben wollen.
Voraussetzungen
| Komponente | Wert |
|---|---|
| Synology NAS | DSM 7.2 oder neuer, Paket Container Manager installiert, Prozessor x86-64 oder ARM64 |
| Arbeitsspeicher | mindestens 2 GB für DSM und beide Container |
| Domain | zum Beispiel wiki.example.com, zeigt auf das NAS; Zertifikat in DSM vorhanden |
| Images | ghcr.io/requarks/wiki:2.5.315, postgres:15-alpine |
| Git-Anbieter | GitHub, GitLab, Gitea oder Forgejo mit leerem Repository und SSH-Zugriff |
| SSH-Zugang zum NAS | für Backup und Fehlersuche (Systemsteuerung → Terminal & SNMP) |
Die Images von Wiki.js 2.5.315 gibt es für amd64 und arm64. Ob Ihr Modell passt, zeigt uname -m per SSH (x86_64 oder aarch64).
Schritt 1: Projektverzeichnis und Datenbank-Ordner anlegen
Legen Sie in der File Station unter dem freigegebenen Ordner docker den Ordner wikijs und darin den Unterordner db an. Der vollständige Pfad lautet:
/volume1/docker/wikijs/dbDer Ordner db nimmt die PostgreSQL-Dateien auf. Erzeugen Sie außerdem ein Datenbank-Passwort, zum Beispiel per SSH mit openssl rand -hex 24, und notieren Sie es.
Verifizieren: Die File Station zeigt /volume1/docker/wikijs/db als leeren Ordner.
Schritt 2: Compose-Datei im Container Manager erstellen
Öffnen Sie den Container Manager, wählen Sie Projekt → Erstellen, geben Sie als Projektname wikijs und als Pfad /volume1/docker/wikijs an und wählen Sie compose.yaml erstellen. Ersetzen Sie IHR_DB_PASSWORT an beiden Stellen durch das Passwort aus Schritt 1:
services:
db:
image: postgres:15-alpine
container_name: wikijs-db
environment:
POSTGRES_DB: wiki
POSTGRES_USER: wikijs
POSTGRES_PASSWORD: IHR_DB_PASSWORT
volumes:
- /volume1/docker/wikijs/db:/var/lib/postgresql/data
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "pg_isready -U wikijs -d wiki"]
interval: 10s
timeout: 5s
retries: 5
wiki:
image: ghcr.io/requarks/wiki:2.5.315
container_name: wikijs
depends_on:
db:
condition: service_healthy
environment:
DB_TYPE: postgres
DB_HOST: db
DB_PORT: 5432
DB_USER: wikijs
DB_PASS: IHR_DB_PASSWORT
DB_NAME: wiki
ports:
- "127.0.0.1:3540:3000"
restart: unless-stopped- Offizielles Image:
ghcr.io/requarks/wiki(auch alsrequarks/wikiauf Docker Hub). Das Image von LinuxServer nutzt andere Pfade und Variablen, die Werte dieser Anleitung passen dort nicht. - Version: Die feste Version verhindert unkontrollierte Updates. Wiki.js 3 ist noch Beta und nicht mit der 2er-Datenbank kompatibel, bleiben Sie deshalb bei 2.x.
- Port: Wiki.js ist nur lokal auf dem NAS erreichbar. Der Zugriff läuft ausschließlich über den Reverse Proxy mit HTTPS (Schritt 4).
- Kein Administrator per Variable: Variablen wie
ADMIN_EMAILoderADMIN_PASSgibt es in Wiki.js 2 nicht, das Konto entsteht im Setup-Assistenten.
Verifizieren: Der Container Manager akzeptiert die Datei ohne YAML-Fehler, und im Text kommt IHR_DB_PASSWORT nicht mehr vor.
Schritt 3: Stack starten und Datenbank prüfen
Bestätigen Sie mit Weiter und Fertig. Der Container Manager lädt die Images, startet zuerst die Datenbank und erst nach erfolgreichem Healthcheck Wiki.js.
Verifizieren: Unter Projekt → wikijs laufen beide Container, wikijs-db ist als gesund markiert. Im Protokoll von wikijs erscheint keine wiederholte Meldung zu ECONNREFUSED oder password authentication failed. Per SSH liefert curl -sI http://127.0.0.1:3540 | head -1 eine Antwort mit Status 200 oder 302.
Schritt 4: Reverse Proxy mit HTTPS einrichten
Öffnen Sie Systemsteuerung → Anmeldeportal → Erweitert → Reverse Proxy und legen Sie einen Eintrag an:
- Quelle: Protokoll HTTPS, Hostname
wiki.example.com, Port 443 - Ziel: Protokoll HTTP, Hostname
localhost, Port 3540 - Unter Benutzerdefinierte Kopfzeile über Erstellen → WebSocket die beiden WebSocket-Header ergänzen.
Weisen Sie unter Systemsteuerung → Sicherheit → Zertifikat → Einstellungen dem neuen Eintrag das passende Zertifikat zu. Soll das Wiki nur im Firmennetz erreichbar sein, geben Sie Port 443 im Router nicht frei und nutzen einen internen DNS-Eintrag oder VPN.
Verifizieren: https://wiki.example.com öffnet ohne Zertifikatswarnung den Setup-Assistenten von Wiki.js.
Schritt 5: Administratorkonto im Setup-Assistenten anlegen
Beim ersten Aufruf zeigt Wiki.js den Setup-Assistenten. Füllen Sie aus:
- Administrator Email: E-Mail-Adresse des Administrators, sie dient als Anmeldename.
- Password und Confirm Password: mindestens 6 Zeichen, verwenden Sie ein langes, zufälliges Passwort.
- Site URL: die öffentliche Adresse ohne abschließenden Schrägstrich, also
https://wiki.example.com, nicht die interne Adresse. - Allow Telemetry: nach Ihrer Datenschutzvorgabe ein- oder ausschalten.
Klicken Sie auf Install. Wiki.js legt die Tabellen an und leitet zur Anmeldung weiter. Die Oberflächensprache stellen Sie danach unter Administration → Locale auf Deutsch um.
Verifizieren: Die Anmeldung mit E-Mail und Passwort gelingt, und unter Administration → System Info steht die Version 2.5.315 und als Datenbank PostgreSQL.
Schritt 6: SSH-Deploy-Key für Git erzeugen
Das Git-Modul akzeptiert nur Schlüssel ohne Passphrase. Erzeugen Sie deshalb ein eigenes Schlüsselpaar nur für das Wiki, auf dem NAS per SSH oder auf einem beliebigen Rechner:
ssh-keygen -t ed25519 -C "wikijs-deploy" -f ~/.ssh/wikijs_deploy -N ""Es entstehen ~/.ssh/wikijs_deploy (privater Schlüssel) und ~/.ssh/wikijs_deploy.pub (öffentlicher Schlüssel). Da der private Schlüssel nicht geschützt ist, verwenden Sie ihn ausschließlich für dieses eine Repository.
Verifizieren: ssh-keygen -y -f ~/.ssh/wikijs_deploy gibt den öffentlichen Schlüssel aus, ohne nach einer Passphrase zu fragen.
Schritt 7: Git-Repository vorbereiten und Deploy-Key hinterlegen
Legen Sie ein neues, leeres, privates Repository an, zum Beispiel company-wiki, und nutzen Sie es nur für Wiki.js. Hinterlegen Sie den Inhalt von wikijs_deploy.pub als Deploy-Key mit Schreibrecht:
- GitHub: Settings → Deploy keys → Add deploy key, Allow write access aktivieren.
- GitLab: Settings → Repository → Deploy keys, Grant write permissions to this key aktivieren.
- Gitea und Forgejo: Einstellungen → Deploy-Schlüssel, Schreibzugriff aktivieren.
Verifizieren: ssh -i ~/.ssh/wikijs_deploy -T git@github.com meldet eine erfolgreiche Authentifizierung für das Repository (bei anderen Anbietern entsprechender Host).
Schritt 8: Git-Synchronisation aktivieren
Öffnen Sie Administration → Storage, aktivieren Sie Git und tragen Sie ein:
| Einstellung | Wert |
|---|---|
| Authentication Type | ssh |
| Repository URI | git@github.com:IHR-KONTO/company-wiki.git |
| Branch | Standard-Branch des Repositorys, meist main (Vorgabe in Wiki.js: master) |
| SSH Private Key Mode | contents |
| B - SSH Private Key Contents | vollständiger Inhalt von wikijs_deploy |
| Default Author Email / Name | Absender für Commits ohne zugeordneten Benutzer |
| Sync Direction | Bi-directional (Standard) |
| Sync Schedule | Standard alle 5 Minuten |
Speichern Sie mit Apply. Haben Sie schon Seiten angelegt, führen Sie unten unter Actions die Aktion Add Untracked Changes aus, sonst landen ältere Seiten nicht im Repository. Force Sync startet eine sofortige Synchronisation.
Verifizieren: Nach Force Sync enthält das Repository je Seite eine Markdown-Datei. Ändern Sie eine Seite, erscheint spätestens nach dem nächsten Intervall ein neuer Commit.
Schritt 9: Datenbank sichern
Git sichert nur Seiteninhalte. Benutzer, Gruppen, Rechte, Einstellungen und hochgeladene Dateien liegen in PostgreSQL. Sichern Sie die Datenbank regelmäßig, etwa als geplante Aufgabe im Aufgabenplaner mit Benutzer root:
docker exec wikijs-db pg_dump -U wikijs -d wiki -Fc > /volume1/docker/wikijs/wiki-$(date +%F).dumpBeziehen Sie /volume1/docker/wikijs in Ihre Hyper-Backup-Aufgabe ein.
Verifizieren: docker exec -i wikijs-db pg_restore -l < /volume1/docker/wikijs/wiki-$(date +%F).dump | head -5 listet den Inhalt der Sicherung ohne Fehler.
Typische Fehler und Lösungen
| Problem | Ursache und Lösung |
|---|---|
password authentication failed | Passwort in DB_PASS und POSTGRES_PASSWORD unterschiedlich. Beachten Sie: PostgreSQL übernimmt das Passwort nur beim ersten Start mit leerem db-Ordner. Bei einer Neuinstallation den Ordner leeren. |
database "wiki" does not exist | POSTGRES_DB und DB_NAME stimmen nicht überein oder der db-Ordner stammt aus einem früheren Versuch. |
| Reverse Proxy meldet Fehler 502 | Wiki.js läuft nicht oder der Port weicht ab. Protokoll des Containers und Ziel localhost:3540 prüfen. |
| Setup-Assistent erscheint nach Neustart erneut | Wiki.js erreicht die Datenbank nicht oder der db-Ordner ist leer. Mount-Pfad prüfen. |
| Git-Sync scheitert mit Authentifizierungsfehler | Schlüssel mit Passphrase, Deploy-Key ohne Schreibrecht oder falscher Modus (path statt contents). |
| Git-Sync scheitert mit Branch-Fehler | Branch im Modul (Vorgabe master) passt nicht zum Repository (main). |
| Links und E-Mails zeigen falsche Adresse | Site URL unter Administration → General auf die HTTPS-Adresse setzen. |
Häufige Fragen
Welche Datenbank ist für Wiki.js empfohlen?
PostgreSQL. Wiki.js 2 unterstützt auch MySQL, MariaDB, MS SQL Server und SQLite, Wiki.js 3 setzt jedoch ausschließlich auf PostgreSQL.
Warum Port 3540 statt 80 oder 443?
DSM belegt 80 und 443 für Webstation und Reverse Proxy. Wiki.js läuft deshalb auf einem freien lokalen Port, der Reverse Proxy nimmt die Anfragen auf 443 entgegen.
Funktioniert Wiki.js auf ARM-basierten Synology-NAS?
Auf Modellen mit 64-Bit-ARM (aarch64) ja. Für 32-Bit-ARM gibt es kein aktuelles Image.
Kann ich das Image von LinuxServer verwenden?
Ja, dann gelten dessen Pfade und Variablen (/config, PUID, PGID). Die Compose-Datei dieser Anleitung passt dafür nicht.
Was passiert, wenn das Git-Repository bereits Dateien enthält?
Bei bidirektionaler Synchronisation importiert Wiki.js vorhandene Markdown-Dateien als Seiten, andere Dateien können den Abgleich stören. Nutzen Sie ein eigenes, leeres Repository.
Fazit
Mit festgelegter Version, lokal gebundenem Port, HTTPS über den Reverse Proxy von DSM, Git-Synchronisation für die Inhalte und regelmäßigem Datenbank-Dump läuft Wiki.js 2 stabil auf einem Synology NAS. Prüfen Sie vor jedem Update die Release Notes und passen Sie dann die Versionsnummer in der Compose-Datei an.


