Docker Compose ist die häufigste Deployment-Methode für selbst-gehostete Wissensdatenbanken. BookStack, Wiki.js, Outline laufen alle als offizielle Docker-Images. Setup ist vergleichsweise einfach, der laufende Betrieb ist die eigentliche Arbeit.
Dieser Artikel zeigt Docker-Compose-Beispiele für die drei häufigsten OSS-KB-Tools, Reverse-Proxy-Konfiguration mit Nginx, Caddy oder Traefik, Backup-Strategie und die Pflege-Realität.
BookStack mit Docker Compose
Minimal-Setup mit BookStack und MariaDB:
version: "3.8"
services:
bookstack:
image: linuxserver/bookstack:latest
container_name: bookstack
environment:
- APP_URL=https://kb.example.de
- DB_HOST=bookstack_db
- DB_USER=bookstack
- DB_PASS=changeme
- DB_DATABASE=bookstackapp
ports:
- 6875:80
volumes:
- ./bookstack_data:/config
depends_on:
- bookstack_db
bookstack_db:
image: linuxserver/mariadb:latest
environment:
- MYSQL_ROOT_PASSWORD=changeme
- MYSQL_DATABASE=bookstackapp
- MYSQL_USER=bookstack
- MYSQL_PASSWORD=changeme
volumes:
- ./bookstack_db:/config
Start: docker compose up -d. Erste Anmeldung über die im Image dokumentierten Default-Credentials, sofort ändern.
Wiki.js mit Docker Compose
Minimal-Setup mit Wiki.js und PostgreSQL:
version: "3.8"
services:
wikijs:
image: ghcr.io/requarks/wiki:latest
environment:
DB_TYPE: postgres
DB_HOST: wikijs_db
DB_USER: wikijs
DB_PASS: changeme
DB_NAME: wikijs
ports:
- 3000:3000
depends_on:
- wikijs_db
wikijs_db:
image: postgres:15-alpine
environment:
POSTGRES_DB: wikijs
POSTGRES_PASSWORD: changeme
POSTGRES_USER: wikijs
volumes:
- ./wikijs_db:/var/lib/postgresql/data
Reverse-Proxy mit Nginx
BookStack oder Wiki.js läuft auf einem internen Port. Vor das Setup gehört ein Reverse-Proxy mit SSL-Termination. Nginx-Beispiel:
server {
listen 443 ssl http2;
server_name kb.example.de;
ssl_certificate /etc/letsencrypt/live/kb.example.de/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/kb.example.de/privkey.pem;
location / {
proxy_pass http://localhost:6875;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
SSL-Zertifikat über Let's Encrypt via Certbot. Auto-Renewal via Cron.
Caddy als einfachere Alternative
Caddy nimmt SSL-Setup automatisch. Caddyfile:
kb.example.de {
reverse_proxy localhost:6875
}
Caddy beantragt automatisch ein Let's Encrypt-Zertifikat und erneuert es. Für DACH-SaaS-Teams mit minimaler Sysadmin-Kapazität ist Caddy oft die pragmatischere Wahl als Nginx.
Traefik für Multi-Service-Setups
Wenn mehrere Services parallel laufen (KB plus Ticket-System plus Status-Page), ist Traefik praktisch. Konfiguration über Labels direkt im Docker-Compose-File, was Onboarding neuer Services vereinfacht.
Backup-Strategie
Drei Schichten von Backups. Erstens: Datenbank-Dump täglich, mit mindestens 30 Tagen Retention. PostgreSQL via pg_dump, MariaDB via mysqldump. Cron-Job im Datenbank-Container oder als sidecar.
Zweitens: File-Volume-Backup. Anhänge, Bilder, Konfigurationen liegen auf Volumes. tar-Archiv täglich, off-site geschoben via rclone oder Borgbackup.
Drittens: Off-Site-Replikation. Backups in einer zweiten Region oder bei einem anderen Anbieter. AWS S3 plus Glacier, Backblaze B2, deutscher Anbieter wie Hetzner Storage Box.
Recovery testen: einmal pro Quartal das Backup in einer Staging-Umgebung wiederherstellen. Backups, die nicht testbar wiederhergestellt werden können, sind keine Backups.
Update-Strategie
Container-Images updaten ist trivial (docker compose pull && docker compose up -d), das Pflege-Problem liegt davor: wer prüft Release-Notes, wer entscheidet wann updaten, wer testet vor Production.
Empfohlen: Watchtower für automatische Image-Updates ist riskant, weil unkontrollierte Major-Updates Datenbank-Migrationen mit sich bringen können. Besser: monatlicher manueller Update-Run mit Staging-Test vorab.
Die Pflege-Realität
Hosting ist 5 bis 50 EUR pro Monat für einen VPS. Personal-Aufwand ist 4 bis 12 Stunden pro Monat: Sicherheits-Updates, Backups verifizieren, Recovery-Tests, gelegentliche Performance-Tunings, SSL-Cert-Renewals (falls nicht automatisiert). Bei 60 EUR pro Stunde Sysadmin-Kosten heisst das 240 bis 720 EUR monatlich in versteckten Kosten.
Tool ist gratis, deine Zeit nicht. Das ist die zentrale Frage bei Self-Hosting: gibt es freie Sysadmin-Kapazität, oder konkurrieren KB-Updates mit anderen Prioritäten.
HappySupport im Kontext
HappySupport ist nicht selbst-gehostet. Wer Docker-Self-Hosting bewusst wählt, hat meist gute Gründe: harte Datenresidenz, vorhandene Sysadmin-Tiefe, technisches Team-Profil. Wer das nicht hat, fährt mit einem gehosteten Anbieter besser, der die Infrastruktur als Service liefert.
HappySupport hostet in Frankfurt mit deutschem Rechtsträger und liefert DSGVO-Kontrolle ohne den Self-Hosting-Aufwand. Mehr in selbst-aktualisierende Wissensdatenbank, in DSGVO-konforme Wissensdatenbank und in der Übersicht beste Wissensdatenbank-Software.







