Docmost, eine Open-Source-Software für Wikis und kollaborative Dokumentation. Entwickelt für eine nahtlose Zusammenarbeit in Echtzeit, können mehrere Benutzer gleichzeitig an derselben Seite arbeiten, ohne sich gegenseitig zu überschreiben.
Docmost ist eine Open Source Alternative zu Programmen wie Notion und Confluence. Ob du ein Wiki, eine Wissensdatenbank oder eine umfangreiche Projektdokumentation verwalten, Docmost bietet die Werkzeuge, um Wissen zu erstellen, zusammenzuarbeiten und zu teilen.
1. Grundvoraussetzung
- Docker & Docker Compose v2 (Debian / Ubuntu)
- TRAEFIK V2 + 3 – REVERSE-PROXY MIT CROWDSEC IM STACK EINRICHTEN
2. Ordner anlegen
Zuerst legen wir uns passende Ordner-Strukturen an.
mkdir -p /opt/containers/docmost
3. Compose Datei anlegen
nano /opt/containers/docmost/compose.yml
Inhalt
---
services:
docmost:
image: docmost/docmost:latest
depends_on:
- db
- redis
environment:
APP_URL: 'http://docmost.domain.de'
APP_SECRET: 's3cr3t-k3y'
DATABASE_URL: 'postgresql://docmost:PASSWORD@db:5432/docmost?schema=public' # PASSWORD wie unten POSTGRES_PASSWORD:
REDIS_URL: 'redis://redis:6379'
# MAIL_DRIVER: smtp
# SMTP_HOST: smtp.domain.de
# SMTP_PORT: 587
# SMTP_USERNAME: info@domain.de
# SMTP_PASSWORD: mail-password
# SMTP_SECURE: TLS
# MAIL_FROM_ADDRESS: info@domain.de
# MAIL_FROM_NAME: Docmost
restart: unless-stopped
volumes:
- docmost:/app/data/storage
labels:
- "traefik.enable=true"
- "traefik.http.routers.docmost.entrypoints=websecure"
- "traefik.http.routers.docmost.rule=Host(`docmost.domain.de`)"
- "traefik.http.routers.docmost.tls=true"
- "traefik.http.routers.docmost.tls.certresolver=http_resolver"
- "traefik.http.routers.docmost.service=docmost"
- "traefik.http.services.docmost.loadbalancer.server.port=3000"
- "traefik.docker.network=proxy"
- "traefik.http.routers.docmost.middlewares=default@file"
networks:
- default
- proxy
db:
image: postgres:16-alpine
environment:
POSTGRES_DB: docmost
POSTGRES_USER: docmost
POSTGRES_PASSWORD: PASSWORD # selbe wie oben "DATABASE_URL:"
restart: unless-stopped
volumes:
- db_data:/var/lib/postgresql/data
networks:
- default
redis:
image: redis:7.2-alpine
restart: unless-stopped
volumes:
- redis_data:/data
networks:
- default
volumes:
docmost:
db_data:
redis_data:
networks:
proxy:
external: true
Code-Sprache: PHP (php)
Noch anzupassen:
- APP_URL: ‘http://docmost.domain.de’
- APP_SECRET: ‘s3cr3t-k3y’
- DATABASE_URL: PASSWORD
- traefik URL Host(
docmost.domain.de)” - POSTGRES_PASSWORD: PASSWORD
Optional:
Nehmt die Kommentierung bei den MAIL/SMTP Environments raus und passt die Settings auf euren Mail-Provider an.
APP_SECRET erstellen:
openssl rand -hex 32
4. Docmost starten
Nun starten wir den Container mittels folgendem Befehl:
docker compose -f /opt/containers/docmost/compose.yml up -d
Sobald der Container ausgerollt ist könnt ihr nun eure Domain aufrufen. Der Container ist rasend schnell bereit. Nach dem pullen der images dauert es bei mir ca 10 Sekunden.
Ruft nun im Browser die gewählte Domain auf und dann solltet ihr folgendes sehen.

Quelle:

Die ursprüngliche Anleitung ist schon eine Weile her. Ich habe heute docmost neu aufgesetzt und dabei ein paar Änderungen an der docker-compose.yml vorgenommen:
SMTPFür SSL SMTP_PORT: 465 setzenFür SSL SMTP_SECURE: trueNeue Version für PostgeSQLimage: postgres:18Für Redis auch neue Version und zusätzlich noch ein Befehlimage: redis:8command: [“redis-server”, “–appendonly”, “yes”, “–maxmemory-policy”, “noeviction”]Meine docker-compose-yml sieht dann wie folgt aus:
—
services:
docmost:
image: docmost/docmost:latest
depends_on:
– db
– redis
environment:
APP_URL: ‘http://docmost.domain.de’
APP_SECRET: ‘s3cr3t-k3y’
DATABASE_URL: ‘postgresql://docmost:PASSWORD@db:5432/docmost?schema=public’ # PASSWORD wie unten POSTGRES_PASSWORD:
REDIS_URL: ‘redis://redis:6379’
MAIL_DRIVER: smtp
SMTP_HOST: smtp.domain.de
SMTP_PORT: 465
SMTP_USERNAME: info@domain.de
SMTP_PASSWORD: kWxi7AUgnV23PvS1GINxU
SMTP_SECURE: true
MAIL_FROM_ADDRESS: info@domain.de
MAIL_FROM_NAME: Docmost
restart: unless-stopped
volumes:
– docmost:/app/data/storage
labels:
– “traefik.enable=true”
– “traefik.http.routers.docmost.entrypoints=websecure”
– “traefik.http.routers.docmost.rule=Host(
docmost.<span style="color: rgb(119, 119, 119);">domain.de</span>)”– “traefik.http.routers.docmost.tls=true”
– “traefik.http.routers.docmost.tls.certresolver=http_resolver”
– “traefik.http.routers.docmost.service=docmost”
– “traefik.http.services.docmost.loadbalancer.server.port=3000”
– “traefik.docker.network=proxy”
– “traefik.http.routers.docmost.middlewares=default@file”
networks:
– default
– proxy
db:
image: postgres:18
environment:
POSTGRES_DB: docmost
POSTGRES_USER: docmost
POSTGRES_PASSWORD: PASSWORD # selbe wie oben “DATABASE_URL:”
restart: unless-stopped
volumes:
– db_data:/var/lib/postgresql
networks:
– default
redis:
image: redis:8
command: [“redis-server”, “–appendonly”, “yes”, “–maxmemory-policy”, “noeviction”]
restart: unless-stopped
volumes:
– redis_data:/data
networks:
– default
volumes:
docmost:
db_data:
redis_data:
networks:
proxy:
external: true
—
Jetzt geht’s ans Ausprobieren!
Bei mir ging der Upload von Dateien nicht, da die Rechte des Ordners (docmost:/app/data/storage) in der docmost-app angepasst werden musste:
sudo chmod -R 775 docmost/