Hilfe Center für SaaS

Docker und Self-Hosting für Wissensdatenbank: BookStack, Wiki.js, Outline

Docker-Compose-Setups für die drei wichtigsten OSS-Wissensdatenbanken. Reverse-Proxy-Konfiguration mit Nginx, Caddy oder Traefik, Backup-Strategie, Update-Strategie, und die echte Pflege-Realität bei Self-Hosting.
June 4, 2026
Henrik Roth
Docker und Self-Hosting für cover, HappySupport
TL;DR
  • Docker Compose ist die häufigste Deployment-Methode für OSS-Wissensdatenbanken. BookStack mit MariaDB, Wiki.js mit PostgreSQL, Outline mit PostgreSQL plus Redis.
  • Reverse-Proxy mit SSL: Nginx braucht Certbot für Let's Encrypt, Caddy nimmt SSL automatisch, Traefik für Multi-Service-Setups.
  • Backup-Strategie: tägliche Datenbank-Dumps (30 Tage Retention), File-Volume-Backups, Off-Site-Replikation. Recovery quartalsweise testen.
  • Update-Strategie: monatlicher manueller Update-Run mit Staging-Test. Watchtower für automatische Updates ist riskant wegen Major-Migrationen.
  • Hosting-Kosten 5 bis 50 EUR pro Monat. Personal-Aufwand 4 bis 12 Stunden pro Monat, also 240 bis 720 EUR in versteckten Kosten.
  • Self-Hosting sinnvoll bei: harter Datenresidenz, vorhandener Sysadmin-Kapazität, technischem Team-Profil. Sonst gehostete Alternative.
  • HappySupport hostet in Frankfurt mit deutschem Rechtsträger und liefert DSGVO-Kontrolle ohne Self-Hosting-Aufwand.

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.

Discover HappySupport

Schluss damit, Sysadmin-Stunden in Container-Updates zu stecken. HappySupport hostet in Frankfurt, du kümmerst dich um Inhalt statt um Infrastruktur.

  • DSGVO-Kontrolle ohne Self-Hosting. Deutscher Rechtsträger, EU-Sub-Prozessoren.
  • Automatische Updates, Backups, SSL. Kein Container-Management.
  • Artikel bleiben akkurat mit jedem Release.
  • Drop-in Help Center. Kostenlose 14-Tage-Testphase.

FAQs

Welche OSS-Wissensdatenbanken laufen unter Docker?
Alle wichtigen OSS-KB-Tools haben offizielle Docker-Images. BookStack als linuxserver/bookstack mit MariaDB, Wiki.js als ghcr.io/requarks/wiki mit PostgreSQL, Outline als outlinewiki/outline mit PostgreSQL plus Redis, DokuWiki als nilsmuermann/dokuwiki ohne Datenbank, Zammad als zammad/zammad-docker-compose mit PostgreSQL, Elasticsearch, Redis. Setup über Docker Compose unter zehn Minuten.
Wie sieht eine gute Reverse-Proxy-Konfiguration aus?
Drei Optionen je nach Team-Profil. Nginx ist klassisch und gut dokumentiert, braucht aber Certbot für Let's Encrypt-Automatisierung. Caddy nimmt SSL-Setup vollständig automatisch und ist die pragmatische Wahl für Teams mit minimaler Sysadmin-Kapazität. Traefik ist sinnvoll bei Multi-Service-Setups, weil Routing über Docker-Labels direkt im Compose-File konfiguriert wird.
Welche Backup-Strategie passt für selbst-gehostete KB?
Drei Schichten. Erstens: tägliche Datenbank-Dumps mit mindestens 30 Tagen Retention, PostgreSQL via pg_dump oder MariaDB via mysqldump. Zweitens: File-Volume-Backup für Anhänge, Bilder, Konfigurationen, als tar-Archiv off-site geschoben. Drittens: Off-Site-Replikation bei einem zweiten Anbieter. Recovery quartalsweise in Staging-Umgebung testen, ungetesteter Backup ist kein Backup.
Wie häufig muss ich die Container updaten?
Monatlich ein Update-Run mit Staging-Test vorab ist ein realistischer Rhythmus für Production-Setups. Sicherheits-Updates können häufiger nötig sein, je nach CVE-Status. Watchtower für automatische Image-Updates ist riskant bei Major-Releases, weil Datenbank-Migrationen ungetestet laufen. Bei kritischen Setups manueller Update-Workflow mit Backup vor jedem Update.
Was kostet Self-Hosting wirklich pro Monat?
VPS-Hosting ab 5 bis 50 EUR pro Monat ist der sichtbare Kosten-Block. Personal-Aufwand ist der versteckte: 4 bis 12 Stunden pro Monat für Sicherheits-Updates, Backup-Verifikation, Recovery-Tests, gelegentliche Performance-Tunings, SSL-Renewals. Bei 60 EUR pro Stunde Sysadmin-Kosten ergibt das 240 bis 720 EUR monatlich on top. Tool ist gratis, deine Zeit nicht.
Docker Compose Up ist einfach. Was schwierig wird, ist Update-Disziplin, Backup-Verifikation und Recovery-Tests, Monat für Monat.
Henrik Roth, CMO von HappySupport
Inhaltsverzeichniss

    Henrik Roth

    Co-Founder & CMO von HappySupport

    Henrik hat neuroflash von frühen PLG-Experimenten auf 500k+ Besucher pro Monat und 3,5 Mio. € ARR skaliert. Danach hat er das Produkt neu positioniert und es 2024 zur bestbewerteten Software Deutschlands auf OMR Reviews gemacht. Vor SaaS hat er BeWooden von null auf siebenstelligen E-Commerce-Umsatz aufgebaut. Bei HappySupport löst er jetzt mit Co-Founder Niklas Gysinn das Problem, das ihm in jedem Unternehmen begegnet ist: Dokumentation, die veraltet, sobald Entwickler neuen Code pushen.

    Vereinbare eine Demo mit Henrik