Docmost auf dem Synology NAS installieren: moderne Confluence-Alternative
Docmost bringt Confluence-Spaces und Echtzeit-Kollaboration auf das eigene NAS. Diese Anleitung zeigt den Compose-Stack mit PostgreSQL und Redis, die sichere APP_SECRET-Generierung und die WebSocket-Konfiguration im Synology Reverse Proxy.

Wer intern ein Wiki mit mehreren Abteilungen betreiben will, kennt das Dilemma: Confluence ist teuer und an Atlassian gebunden, Notion speichert alles in der Cloud, BookStack strukturiert Inhalte als Regal-Buch-System. Docmost geht einen anderen Weg – es bringt das Confluence-Konzept der Spaces mit sich, erlaubt echte Mehrbenutzer-Zusammenarbeit in Echtzeit und läuft vollständig auf dem eigenen NAS. IT-Abteilung, HR und Vertrieb arbeiten in separaten Spaces mit eigenen Berechtigungen, niemand sieht den Content der anderen, und alle Daten bleiben auf dem eigenen Volume. Der Stack besteht aus drei Diensten – Docmost selbst (TypeScript/Node.js), PostgreSQL als Primärdatenbank und Redis für WebSocket-Sessions –, die gemeinsam als Container Manager-Projekt gestartet werden.
Voraussetzungen
- Synology NAS mit x86-64-CPU (z. B. DS223+, DS723+, DS923+ oder neuer) und DSM 7.2 oder höher
- Container Manager aus dem Paket-Zentrum installiert
- Mindestens 1 GB freier Arbeitsspeicher (2 GB empfohlen – drei Container gleichzeitig aktiv)
- Ca. 500 MB freier Festplattenplatz für Images und initiale Daten
- SSH-Zugang zum NAS für die APP_SECRET-Generierung (Anleitung: SSH auf dem Synology NAS aktivieren und verbinden)
- Feste lokale IP oder DDNS-Adresse (z. B.
name.synology.me) für den Reverse Proxy - SSL-Zertifikat über DSM > Systemsteuerung > Sicherheit > Zertifikat (Let's Encrypt kostenlos verfügbar)
Schritt 1: Ordnerstruktur und APP_SECRET anlegen
Docmost benötigt drei bind-mount-Verzeichnisse auf dem NAS. Leg sie per File Station unter /volume1/docker/docmost/ mit den Unterordnern data, db und redis an – oder per SSH mit einem Befehl:
mkdir -p /volume1/docker/docmost/{data,db,redis}
Generiere danach das APP_SECRET direkt im SSH-Terminal:
openssl rand -hex 32
Die Ausgabe ist ein 64-stelliger Hex-String, zum Beispiel:
a3f8c21d7e904b65a1f2d83c490e5b76f1a2d3e4c5b6a7f8e9d0c1b2a3f4e5d6
Kopiere diesen Wert sofort an einen sicheren Ort (Passwortmanager). Nach dem ersten Start darf der APP_SECRET niemals mehr geändert werden – alle laufenden Sessions und JWT-Tokens werden sonst sofort ungültig.
Verifizieren: Prüfe, ob die drei Ordner existieren:
ls -la /volume1/docker/docmost/
# Erwartete Ausgabe: data/ db/ redis/
Der openssl-Befehl muss genau 64 Zeichen ausgeben – prüfe mit openssl rand -hex 32 | wc -c (Ausgabe: 65, das letzte Zeichen ist der Zeilenumbruch).
Schritt 2: compose.yaml erstellen
Öffne den Container Manager, wechsle zu „Projekt" und lege ein neues Projekt namens docmost an (ausführliche Anleitung: Container Manager: Docker-Compose-Projekt anlegen, starten und aktualisieren). Füge folgenden Inhalt ein – ersetze dabei alle drei Platzhalter durch deine echten Werte:
services:
docmost:
image: docmost/docmost:latest
container_name: docmost
depends_on:
- db
- redis
environment:
APP_URL: 'https://docmost.meinname.synology.me'
APP_SECRET: 'ERSETZEN_MIT_OPENSSL_RAND_HEX_32_AUSGABE'
DATABASE_URL: 'postgresql://docmost:STARKES_DB_PASSWORT@db:5432/docmost'
REDIS_URL: 'redis://redis:6379'
TZ: 'Europe/Berlin'
DISABLE_TELEMETRY: 'true'
# MAIL_DRIVER: 'smtp'
# SMTP_HOST: 'smtp.gmail.com'
# SMTP_PORT: '587'
# SMTP_USERNAME: 'deine@gmail.com'
# SMTP_PASSWORD: 'app-passwort'
# MAIL_FROM_ADDRESS: 'deine@gmail.com'
# MAIL_FROM_NAME: 'Docmost Wiki'
ports:
- "3199:3000"
restart: unless-stopped
volumes:
- /volume1/docker/docmost/data:/app/data/storage
db:
image: postgres:18
container_name: docmost-db
environment:
POSTGRES_DB: docmost
POSTGRES_USER: docmost
POSTGRES_PASSWORD: STARKES_DB_PASSWORT
TZ: 'Europe/Berlin'
restart: unless-stopped
volumes:
- /volume1/docker/docmost/db:/var/lib/postgresql/data
redis:
image: redis:8
container_name: docmost-redis
command: ["redis-server", "--appendonly", "yes", "--maxmemory-policy", "noeviction"]
restart: unless-stopped
volumes:
- /volume1/docker/docmost/redis:/data
Drei Punkte sind beim Anpassen kritisch: Ersetze STARKES_DB_PASSWORT an beiden Stellen (in DATABASE_URL und in POSTGRES_PASSWORD) durch dasselbe starke Passwort – stimmen sie nicht überein, startet Docmost mit einem Datenbankfehler. Trage deine echte Domain in APP_URL ein; sie muss mit dem später eingerichteten Reverse Proxy übereinstimmen und HTTPS verwenden. Port 3199 ist bewusst gewählt, da Port 3000 auf Synology-NAS häufig bereits belegt ist.
Die folgende Tabelle fasst alle Eckdaten des Stacks zusammen:
| Parameter | Wert | Hinweis |
|---|---|---|
| Image (App) | docmost/docmost:latest | Stabil: v0.90.1 (28.05.2026); alternativ Tag pinnen |
| Image (DB) | postgres:18 | Offizielles Compose; nicht postgres:17 |
| Image (Cache) | redis:8 | Offizielles Compose; nicht redis:7.2-alpine |
| Host-Port | 3199 | Extern; intern läuft die App auf Port 3000 |
| Volume (App) | /volume1/docker/docmost/data | Datei-Uploads, Anhänge |
| Volume (DB) | /volume1/docker/docmost/db | → /var/lib/postgresql/data (mit /data-Suffix!) |
| Volume (Redis) | /volume1/docker/docmost/redis | AOF-Persistenz |
| APP_SECRET | 64-Zeichen-Hex | openssl rand -hex 32; niemals ändern |
| Architekturen | amd64, arm64 | Alle aktuellen Synology-NAS kompatibel |
Verifizieren: Speichere das Projekt im Container Manager – DSM sollte die YAML-Syntax ohne Fehler akzeptieren. Prüfe anschließend, dass kein Platzhalter mehr im Compose steht:
grep -i "ERSETZEN\|STARKES" /volume1/docker/docmost/docker-compose.yml
# Ausgabe muss leer sein
Schritt 3: Stack starten und Setup-Wizard durchlaufen
Starte das Projekt im Container Manager mit „Erstellen" bzw. „Ausführen". Docmost wartet intern auf PostgreSQL – das depends_on in der Compose stellt sicher, dass der App-Container erst nach dem Datenbankcontainer startet. Nach etwa 30–60 Sekunden sind alle drei Container grün.
Öffne nun im Browser http://NAS-IP:3199. Docmost leitet dich automatisch auf den Setup-Wizard unter /setup weiter. Gib dort an:
- Workspace-Name: z. B. „Schönfelder EDV Wiki" oder Firmenname
- Admin-E-Mail und Passwort: Das erste Konto wird automatisch Admin
Nach dem Klick auf „Workspace anlegen" startet Docmost durch und landet direkt in der leeren Wiki-Oberfläche. Kein manuelles Datenbankschema, keine weiteren Konfigurationsschritte – der Setup-Wizard erledigt alles automatisch.
Verifizieren: Prüfe im Container Manager, dass alle drei Container den Status „Wird ausgeführt" zeigen. Kontrolliere die Logs des docmost-Containers – die letzte Zeile sollte lauten:
Server is listening on port 3000
Falls der DB-Container sich immer wieder neu startet, liegt meist ein falsches Passwort in DATABASE_URL vor (Platzhalter nicht vollständig ersetzt).
Schritt 4: Reverse Proxy mit WebSocket einrichten
Damit Echtzeit-Kollaboration funktioniert, braucht Docmost WebSocket-Unterstützung im Reverse Proxy. Öffne DSM > Systemsteuerung > Anmeldeportal > Erweitert > Reverse Proxy und lege eine neue Regel an:
- Quelle: HTTPS, deine Domain (z. B.
docmost.meinname.synology.me), Port 443 - Ziel: HTTP,
localhost, Port 3199
Wechsle danach in den Tab „Benutzerdefinierte Header" dieser Regel und füge zwei Header hinzu:
| Header-Name | Wert |
|---|---|
| Upgrade | $http_upgrade |
| Connection | upgrade |
Diese beiden Header sind nicht optional – ohne sie scheitert die WebSocket-Verbindung, und zwei Nutzer können zwar gleichzeitig eine Seite öffnen, sehen aber die Änderungen des anderen erst nach einem manuellen Reload.
Stelle außerdem sicher, dass die DSM-Firewall Port 3199 für interne Zugriffe freigibt (Anleitung: DSM-Firewall: Ports für Docker-Container freigeben). Der Port muss nur für den Reverse Proxy erreichbar sein, nicht für das Internet direkt.
Verifizieren: Öffne https://docmost.meinname.synology.me im Browser. Das Schloss-Symbol in der Adressleiste muss grün sein (gültiges Zertifikat). Rufe die Browser-Entwicklertools auf (F12 > Netzwerk > Filter: WS) und lade die Seite neu – du solltest eine aktive WebSocket-Verbindung mit dem Status „101 Switching Protocols" sehen.
Schritt 5: Ersten Space anlegen und Echtzeit-Kollaboration testen
Docmost organisiert alle Inhalte in Spaces – das ist der zentrale Unterschied zu BookStack (Regal/Buch-Metapher) und Outline (flache Blöcke). Ein Space entspricht einem Bereich: IT-Dokumentation, HR-Richtlinien oder Vertriebsunterlagen. Jeder Space hat eigene Mitglieder und Berechtigungen.
Klicke in der linken Sidebar auf „+ Neuer Space" und vergib einen Namen. Innerhalb des Space kannst du sofort Seiten anlegen, sie per Drag-and-Drop verschachteln und Unterseiten bis in beliebige Tiefe erzeugen. Der Editor unterstützt out-of-the-box:
- Diagramme mit Draw.io, Excalidraw und Mermaid (kein Extra-Container nötig)
- Mathe-Formeln mit KaTeX
- Tabellen mit erweiterter Formatierung
- Code-Blöcke mit Syntax-Highlighting
- Import von Markdown, HTML und Notion-Exporten
Für den KMU-Einsatz empfiehlt sich folgende initiale Space-Struktur: einen Space „IT" für interne Betriebsdokumentation, einen Space „Onboarding" für neue Mitarbeitende und einen Space „Projekte" für laufende Vorhaben. Möchtest du Kollegen einladen, navigiere zu Einstellungen > Mitglieder > Einladen. Ohne konfiguriertes SMTP (in der Compose auskommentiert) erhält der neue Nutzer keine E-Mail – übermittle den Einladungslink manuell. Die App funktioniert vollständig ohne SMTP; E-Mail-Versand ist optional.
Verifizieren: Öffne denselben Space in zwei verschiedenen Browsern (oder Browser + Inkognito-Fenster) mit zwei verschiedenen Konten. Tippe in Browser 1 einen Text in eine Seite – der Text muss in Browser 2 innerhalb weniger Sekunden ohne Reload erscheinen. Passiert das, ist der WebSocket-Kanal korrekt aktiv.
Schritt 6: Backup der Instanz einrichten
Eine vollständige Sicherung von Docmost besteht aus zwei Teilen, die sich gut automatisieren lassen.
Teil 1 – Datei-Uploads: Das Verzeichnis /volume1/docker/docmost/data enthält alle Bild- und Datei-Anhänge. Es reicht, diesen Ordner in deine bestehende NAS-Backup-Routine aufzunehmen (Hyper Backup, Restic o. ä.).
Teil 2 – PostgreSQL-Dump: Der Datenbankinhalt (Seiten, Spaces, User, Berechtigungen) liegt ausschließlich in PostgreSQL. Führe einen Dump wie folgt aus:
docker exec docmost-db pg_dump -U docmost docmost > /volume1/backup/docmost_$(date +%F).sql
Diesen Befehl kannst du im DSM-Aufgabenplaner als täglichen Cron-Job hinterlegen. Eine ausführlichere Anleitung zur Automatisierung von PostgreSQL-Backups findest du unter MySQL & PostgreSQL Backup automatisieren.
Redis-Daten (AOF-Dateien in /volume1/docker/docmost/redis) enthalten nur laufende Session-Informationen und sind kein Pflicht-Backup – nach einem Neustart bauen alle angemeldeten Nutzer ihre Sessions neu auf.
Verifizieren: Prüfe, ob der Dump erstellt wurde und Inhalt hat:
ls -lh /volume1/backup/docmost_*.sql
# Erwartete Ausgabe: mindestens einige Kilobyte, z. B. 48K docmost_2026-06-11.sql
Eine leere oder sehr kleine Datei deutet auf einen Verbindungsfehler hin – prüfe, ob der Container docmost-db läuft.
Troubleshooting / Typische Fehler
- „Error: connect ECONNREFUSED" beim App-Start: Docmost kann die Datenbank nicht erreichen. Ursache:
STARKES_DB_PASSWORTinDATABASE_URLundPOSTGRES_PASSWORDstimmen nicht überein. Beide Werte müssen identisch sein. Container löschen, Compose korrigieren, Ordnerdb/leeren, neu starten. - Echtzeit-Kollaboration funktioniert nicht (Änderungen nur nach Reload sichtbar): WebSocket-Header im Reverse Proxy fehlen. Unter Systemsteuerung > Anmeldeportal > Reverse Proxy > Benutzerdefinierte Header:
Upgrade: $http_upgradeundConnection: upgradeeintragen. - PostgreSQL startet nicht / Permission denied: Das Volume-Verzeichnis
/volume1/docker/docmost/dbhat falsche Berechtigungen oder gehört einem anderen Prozess. Ordner leeren (rm -rf /volume1/docker/docmost/db/*) – PostgreSQL initialisiert sich beim nächsten Start selbst neu. - APP_SECRET nach erstem Start geändert: Alle Nutzer werden sofort ausgeloggt, JWT-Tokens sind ungültig. Den alten APP_SECRET wiederherstellen – er muss dauerhaft konstant bleiben. Daten bleiben erhalten.
- Setup-Wizard erscheint nicht, sondern Login-Seite: Der erste Setup wurde bereits abgeschlossen. Navigiere direkt zu
/setup– wenn Docmost dorthin weiterleitet, ist der Workspace bereits angelegt. - APP_URL auf HTTP statt HTTPS gesetzt: Einladungs-Links und OAuth-Callbacks zeigen auf HTTP, Browser blockiert Mixed Content. Wert in der Compose auf die echte HTTPS-URL ändern und Container neu starten.
- Synology-Firewall blockiert Port 3199: Container läuft, Reverse Proxy gibt 502-Fehler. Unter DSM > Systemsteuerung > Sicherheit > Firewall eine Erlaubnisregel für Port 3199 anlegen.
Häufige Fragen
Wie generiere ich APP_SECRET ohne SSH?
Der einfachste Weg ist der SSH-Befehl openssl rand -hex 32 direkt auf dem NAS. Alternativ funktioniert derselbe Befehl auf jedem Linux- oder macOS-System sowie in WSL unter Windows. Verwende keine Online-Generatoren für diesen Schlüssel – er schützt alle Sessions und JWT-Tokens der Instanz.
Was kostet die Enterprise-Edition und was bietet sie zusätzlich?
Der Community-Kern ist dauerhaft kostenlos (AGPL-3.0) und für den internen Betrieb auf dem eigenen NAS vollständig ausreichend. Die Enterprise-Edition ergänzt SSO/SAML, LDAP/Active Directory-Integration, KI-Features, eine REST-API und granulare Seitenberechtigungen. Preise werden auf Anfrage unter docmost.com genannt.
Kann ich von Confluence oder Notion zu Docmost migrieren?
Notion-Exporte (HTML oder Markdown) können direkt über den Import-Dialog eingespielt werden. Confluence-Inhalte müssen zunächst als HTML oder Markdown exportiert werden. Das Standard-Importlimit liegt bei 200 MB, anpassbar über FILE_IMPORT_SIZE_LIMIT in der Compose.
Wie unterscheidet sich Docmost von BookStack und Outline?
BookStack strukturiert Inhalte hierarchisch als Regal > Buch > Kapitel > Seite – ideal für statische IT-Dokumentation, die einmal geschrieben und selten gemeinsam bearbeitet wird. Outline folgt dem Notion-Modell mit flacher Block-Struktur, ideal für schnelle Team-Notizen. Docmost passt am besten, wenn mehrere Personen gleichzeitig an Dokumenten arbeiten und Confluence-artige Spaces mit klarer Abteilungstrennung gefragt sind.
Wie update ich Docmost auf eine neue Version?
Im Container Manager das Projekt öffnen und „Aktualisieren" wählen – DSM zieht das neueste Image und startet die Container neu. Datenbankmigrationen laufen automatisch beim Start. Ein PostgreSQL-Dump vor dem Update ist dennoch empfehlenswert.
Funktioniert Docmost auch auf ARM-basierten Synology-NAS?
Ja. Das Image docmost/docmost:latest unterstützt sowohl linux/amd64 (x86-64) als auch linux/arm64 – es funktioniert damit auf allen aktuellen Synology-Modellen unabhängig von der CPU-Architektur.
Fazit
Docmost füllt eine echte Lücke im Self-Hosting-Bereich: Confluence-Konzepte (Spaces, verschachtelte Seiten, Echtzeit-Kollaboration) kombiniert mit modernem Stack und aktivem Open-Source-Projekt. Mit über 20.600 GitHub-Stars und einem monatlichen Release-Zyklus ist es 2026 produktionsreif. Für KMU, die Abteilungs-Wikis mit echter Datensouveränität betreiben wollen, ist es die stärkste Option – vorausgesetzt, mehrere Nutzer arbeiten tatsächlich gleichzeitig an Dokumenten. Wer eher statische Dokumentation braucht und eine Regal-Buch-Metapher bevorzugt, ist mit BookStack besser bedient; für Notion-Feeling auf dem eigenen NAS empfiehlt sich Outline.
Weiterführende Anleitungen und Quellen
- BookStack auf dem Synology NAS installieren: das Firmen-Wiki für IT-Dokumentation
- Outline auf dem Synology NAS installieren: modernes Team-Wiki als Notion-Alternative
- Portainer auf Synology NAS installieren: Schritt-für-Schritt-Anleitung für DSM 7.2
- MySQL & PostgreSQL Backup automatisieren mit cron: mysqldump, pg_dump, Rotation und rclone
Offizielle Quellen: Docmost-Dokumentation (Self-Hosting) · Docmost auf GitHub (docker-compose.yml) · Docmost auf Docker Hub · Environment Variables – offizielle Doku