SSD Nodes Learn 8GB RAM — $66/Jahr
Anleitungen Matt ConnorVon Matt Connor · Aktualisiert 2026-08-01

BookStack, Wiki.js oder Outline: Selbst gehostetes Wiki

BookStack, Wiki.js und Outline im Vergleich: Setup, Editoren, Anmeldung und Suche. Erfahren Sie, welches Wiki für Einzeladmins und Teams am besten passt.

Welches selbst gehostete Wiki sollten Sie betreiben

Ein selbst gehostetes Wiki legt die Dokumente Ihres Teams an einem durchsuchbaren Ort auf einem von Ihnen kontrollierten Server ab. BookStack, Wiki.js und Outline erfüllen diese Aufgabe. Sie unterscheiden sich vor allem darin, wie viel Sie vor dem Laden der ersten Seite einrichten müssen und wer sich anmelden darf.

BookStack lässt sich am schnellsten bereitstellen und schreibt die Struktur am stärksten vor. Wiki.js bietet Ihnen die größte Auswahl an Editoren innerhalb eines gemeinsamen Seitenbaums. Outline bietet die beste Schreiberfahrung der drei Systeme. Eine Anmeldung ist dort jedoch erst möglich, wenn Sie einen externen Identitätsanbieter verbinden.

Alle folgenden Angaben stammen aus der Dokumentation der Projekte und ihren veröffentlichten Konfigurationsdateien. Dies ist ein Funktionsvergleich, kein Benchmark. Versionsnummern und Anforderungen sind mit einem Datum versehen, da sich alle drei Projekte weiterentwickeln.

Die Struktur ist die eigentliche Wahl

BookStack legt die Struktur Ihrer Inhalte fest. Eine Seite befindet sich innerhalb eines Buchs, ein Buch kann Kapitel enthalten, und Regale gruppieren Bücher. Sie können keine fünfte Ebene erfinden. Diese Begrenzung ist das Produktprinzip: Ein neuer Autor weiß, wohin eine Seite gehört, weil es nur einen möglichen Ort gibt. Der Nachteil ist, dass Inhalte, die nicht in diese Struktur passen, hineingezwungen werden.

Wiki.js verwendet einen Pfadbaum wie Verzeichnisse auf einem Datenträger. Eine Seite unter ops/backup/restic befindet sich dort, wo Sie sie ablegen, und Sie bestimmen die Tiefe. Nichts hindert zwei Personen daran, dasselbe Thema unter zwei verschiedenen Zweigen abzulegen. Daher benötigt eine Wiki.js-Instanz eine Person, die für den Baum verantwortlich ist.

Outline verwendet Sammlungen mit Dokumenten, die in anderen Dokumenten verschachtelt sind. Sie verschieben ein Dokument per Drag-and-drop mit der Maus. Von den drei Systemen ist es am flexibelsten. Daher kann seine Struktur auch am leichtesten unübersichtlich werden.

BookStack: die kleinste Installation

BookStack ist eine PHP-Anwendung mit MySQL als Datenbank. Im Juli 2026 lauten die dokumentierten Anforderungen PHP 8.2 oder neuer sowie entweder MySQL 8.0 oder MariaDB 10.6 oder neuer. Bei einer Installation aus dem Quellcode benötigen Sie außerdem Composer 2.2 oder neuer. Die aktuelle Release-Reihe ist 26.05.

Das Projekt veröffentlicht für jede Ubuntu-Version ein eigenes Installationsskript. Das Skript für 24.04 installiert Apache, MySQL 8.0 und PHP 8.3 für Sie.

wget https://codeberg.org/bookstack/devops/raw/branch/main/scripts/installation-ubuntu-24.04.sh
chmod a+x installation-ubuntu-24.04.sh
sudo ./installation-ubuntu-24.04.sh

Lesen Sie den Warnhinweis des Skripts, bevor Sie es ausführen. In der Dokumentation steht, dass es „ONLY FOR A FRESH OS“ bestimmt ist. Es installiert Apache, MySQL 8.0 und PHP 8.3 und kann jede vorhandene Webkonfiguration auf dem Rechner überschreiben. Wenn der Server bereits auf Port 80 antwortet, übernimmt das Skript diesen Port und schreibt die Apache-Konfiguration neu. Verwenden Sie dort stattdessen Container. Alternativ installieren Sie BookStack manuell auf einem vorhandenen LAMP-Stack unter Ubuntu 24.04.

Für die Container-Installation wird das Image von LinuxServer.io verwendet. Dieses Image wird in der BookStack-Dokumentation empfohlen. BookStack benötigt einen Schlüssel zur Verschlüsselung von Sitzungen und stellt ohne diesen keine Seiten bereit. Erzeugen Sie den Schlüssel daher zuerst.

docker run -it --rm --entrypoint /bin/bash lscr.io/linuxserver/bookstack:latest appkey

Kopieren Sie den ausgegebenen Wert nach APP_KEY und schreiben Sie anschließend den Dienst:

services:
  bookstack:
    image: lscr.io/linuxserver/bookstack:latest
    container_name: bookstack
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC
      - APP_URL=https://wiki.example.com
      - APP_KEY=paste_the_generated_key_here
      - DB_HOST=bookstack_db
      - DB_PORT=3306
      - DB_USERNAME=bookstack
      - DB_PASSWORD=change_me
      - DB_DATABASE=bookstackapp
    volumes:
      - ./config:/config
    ports:
      - 6875:80
    restart: unless-stopped

APP_URL muss mit der Adresse übereinstimmen, die Leser tatsächlich eingeben, einschließlich Schema und gegebenenfalls Port. Setzen Sie den Wert auf http://localhost und stellen Sie die Website anschließend über HTTPS bereit. Andernfalls zeigen generierte Links und Weiterleitungen auf den falschen Host. Für Leser sieht das wie eine Anmeldeseite aus, die immer wieder auf sich selbst zurückleitet. Wenn Compose-Dateien für Sie neu sind, beginnen Sie vor diesem Tutorial mit Docker-Compose-Grundlagen auf einem VPS.

Starten Sie die Anwendung und prüfen Sie, ob die Anwendung antwortet, nicht nur, ob der Container läuft:

docker compose up -d
docker compose ps
curl -sI http://127.0.0.1:6875/login

Ein 200 OK bedeutet, dass die PHP-Anwendung gestartet wurde und die Datenbank erreicht hat. Ein 500 bedeutet fast immer, dass APP_KEY leer ist oder die Datenbankzugangsdaten nicht übereinstimmen. docker compose logs bookstack gibt aus, welcher der beiden Fälle vorliegt.

Wiki.js: ein Baum, mehrere Editoren

Wiki.js ist eine Node.js-Anwendung. Die dokumentierte Docker-Einrichtung verwendet PostgreSQL, die Software unterstützt jedoch auch MySQL, MariaDB, MSSQL und SQLite. Dies ist die Compose-Datei von der eigenen Docker-Seite des Projekts:

services:
  db:
    image: postgres:15-alpine
    environment:
      POSTGRES_DB: wiki
      POSTGRES_PASSWORD: wikijsrocks
      POSTGRES_USER: wikijs
    logging:
      driver: none
    restart: unless-stopped
    volumes:
      - db-data:/var/lib/postgresql/data
  wiki:
    image: ghcr.io/requarks/wiki:2
    depends_on:
      - db
    init: true
    environment:
      DB_TYPE: postgres
      DB_HOST: db
      DB_PORT: 5432
      DB_USER: wikijs
      DB_PASS: wikijsrocks
      DB_NAME: wiki
    restart: unless-stopped
    ports:
      - "80:3000"
volumes:
  db-data:

Ändern Sie POSTGRES_PASSWORD und DB_PASS gemeinsam, bevor Sie die Datei ausführen, da sie zusammen eine Zugangsdatenkombination bilden und der Beispielwert öffentlich ist. Das Tag ist absichtlich auf ghcr.io/requarks/wiki:2 festgelegt. Die Dokumentation rät von latest ab, da ein Sprung auf eine Hauptversion das Datenbankschema einer laufenden Instanz ändert.

Version 2 ist die geeignete Versionslinie für den Betrieb. Im Juli 2026 ist die neueste Version-2-Veröffentlichung 2.5.314 vom Mai 2026. Version 3 existiert, und die zugehörige Dokumentation sagt: „Diese Website ist für die instabile Beta-Version von Wiki.js 3.0 bestimmt. Sie sollten diese Version NICHT in einer Produktionsumgebung installieren.“ Behandeln Sie das Tag :3 als Vorschauversion.

Beim ersten Aufruf führt Wiki.js Sie durch eine Einrichtung im Browser, die das Administratorkonto erstellt. Bis Sie diesen Vorgang abgeschlossen haben, erhält jeder, der den Port erreicht, diesen Assistenten. Platzieren Sie den Dienst daher hinter Ihrem Reverse Proxy und TLS (Transport Layer Security), bevor Sie die Firewall öffnen. Ein Wiki unter einem eigenen Hostnamen lässt sich problemlos hinter Traefik vor mehreren Docker-Apps betreiben, wenn der Server mehr als diesen einen Dienst hostet.

Die Auswahl des Editors ist der Grund, warum sich viele für Wiki.js entscheiden. Eine Instanz kann Markdown-Seiten, Seiten des visuellen Editors, Seiten mit rohem HTML und AsciiDoc-Seiten nebeneinander enthalten. Das ist hilfreich, wenn Sie alte Inhalte in einem Format importieren, das Sie lieber nicht konvertieren möchten. Dadurch können jedoch auch vier unterschiedliche redaktionelle Stile in einem Wiki entstehen. Legen Sie deshalb am ersten Tag den Standardeditor fest und dokumentieren Sie diese Entscheidung.

Outline: der beste Editor mit den umfangreichsten Voraussetzungen

Outline ist normalerweise gemeint, wenn jemand etwas möchte, das sich wie ein kommerzielles Notizwerkzeug anfühlt. Es ist eine Node.js-Anwendung. Die aktuelle Version vom Juli 2026 ist 1.9.2. Die Beispieldatei für die Umgebung listet die erforderlichen Komponenten auf: PostgreSQL über DATABASE_URL, Redis über REDIS_URL, zwei zufällige Geheimnisse und ein öffentlich erreichbares URL.

openssl rand -hex 32
openssl rand -hex 32

Führen Sie den Befehl zweimal aus und bewahren Sie beide Werte auf. Der erste Wert wird zu SECRET_KEY, der zweite zu UTILS_SECRET. Der zentrale Teil der Umgebungsdatei sieht dann so aus:

NODE_ENV=production
URL=https://docs.example.com
PORT=3000
SECRET_KEY=<first openssl value>
UTILS_SECRET=<second openssl value>
DATABASE_URL=postgres://outline:change_me@postgres:5432/outline
PGSSLMODE=disable
REDIS_URL=redis://redis:6379
FILE_STORAGE=local
FILE_STORAGE_LOCAL_ROOT_DIR=/var/lib/outline/data

PGSSLMODE=disable ist nur korrekt, wenn sich die Datenbank auf demselben Rechner oder im selben Docker-Netzwerk befindet. Lassen Sie diese Einstellung bei einer über das Netzwerk erreichten Datenbank weg. Andernfalls wird die Verbindung unverschlüsselt hergestellt. Anhänge erfordern nicht mehr zwingend einen Objektspeicher: FILE_STORAGE=local schreibt Uploads in das darüber angegebene Verzeichnis. Dieses Verzeichnis muss ein Volume sein, in das der Container schreiben kann und das von Ihren Sicherungen erfasst wird. Setzen Sie stattdessen FILE_STORAGE=s3 mit den AWS_*-Werten, wenn Sie diese Dateien in einem S3-kompatiblen Bucket speichern möchten.

Nun zum Punkt, der viele überrascht. Outline verfügt nicht über eine integrierte Anmeldung mit Benutzername und Passwort. Die eigene Beispielkonfiguration weist darauf hin, dass Anmeldedaten für die Anmeldung über Drittanbieter erforderlich sind: „at least ONE OF these is required for a working installation or you'll have no sign-in options“. Zu den dokumentierten Anbietern gehören Google, Slack, Microsoft Entra, Discord und jeder generische OpenID-Connect-(OIDC-)Server über OIDC_CLIENT_ID, OIDC_CLIENT_SECRET, OIDC_AUTH_URI, OIDC_TOKEN_URI und OIDC_USERINFO_URI.

Die tatsächlichen Kosten von Outline bestehen also aus Outline, PostgreSQL, Redis und einem Identitätsanbieter. Wenn sich Ihr Team bereits mit Google Workspace oder Microsoft Entra anmeldet, benötigen Sie für die letzte Komponente zehn Minuten. Dadurch wird Outline sehr attraktiv. Falls das nicht der Fall ist, betreiben Sie zusätzlich etwas wie Keycloak oder Authentik selbst. Das ist ein weiterer Dienst, den Sie patchen und sichern müssen. Planen Sie den Speicherbedarf entsprechend: Die eigene Empfehlung von Outline liegt bei ungefähr 512 MB pro Webprozess. Der Wert wird über WEB_CONCURRENCY festgelegt. Datenbank und Redis kommen noch hinzu.

Wie die einzelnen Systeme den Lesezugriff steuern

BookStack bietet standardmäßig lokale Konten mit E-Mail-Adresse und Passwort und unterstützt alternativ LDAP, SAML2 und OIDC. Berechtigungen werden pro Rolle festgelegt und können für ein einzelnes Regal, Buch, Kapitel oder eine einzelne Seite überschrieben werden. Da die Hierarchie fest vorgegeben ist, werden Berechtigungen darin vorhersehbar nach unten vererbt.

Wiki.js bietet ebenfalls standardmäßig lokale Konten und ergänzt eine lange Liste von Anmeldestrategien, die Sie im Administrationsbereich aktivieren. Die Seitenregeln erlauben oder verweigern den Zugriff anhand eines Pfadmusters. Das ist leistungsfähig und kann leicht zu Fehlern führen, weil eine für ops/* geschriebene Regel später unbemerkt jede Seite umfasst, die Sie unter diesem Pfad ablegen.

Outline überlässt diese Frage vollständig Ihrem Identitätsanbieter. Die Mitgliedschaft richtet sich nach Ihrem Identitätsanbieter. Innerhalb von Outline steuern Sie den Zugriff nach Sammlung und Gruppe. Wenn jemand das Unternehmen verlässt, bleibt kein lokales Konto zurück. Das ist ein wesentlicher Vorteil, wenn der Identitätsanbieter bereits das System ist, über das Sie Zugänge deaktivieren.

So funktioniert die Suche in den einzelnen Systemen

Die Suche entscheidet, ob ein Wiki seinen Zweck erfüllt oder zu einem Ordner mit vergessenen Dateien wird.

BookStack durchsucht die Datenbank und bietet den Lesern eine Abfragesprache, die sie innerhalb einer Minute erlernen können. Das Anführungszeichen einer Wortgruppe wie "london meeting" erfordert genau diese Zeichenfolge. Eckige Klammern durchsuchen Tags: [location=london] liefert Treffer anhand des Tag-Namens, des Werts oder beider, mit Vergleichen wie !=, >= und like. Geschweifte Klammern filtern Metadaten wie in {created_after:2016-12-30}. Jeder exakte Begriff sowie jeder Tag- oder Filterbegriff kann durch das Voranstellen von - ausgeschlossen werden. BookStack begrenzt, wie viele Begriffe jedes Typs eine Abfrage enthalten darf. Eine sehr lange Abfrage wird daher gekürzt, statt ausgeführt zu werden.

Wiki.js behandelt die Suche als austauschbares Modul. Als dokumentierte Such-Engines stehen eine einfache Datenbank-Engine, eine PostgreSQL-Engine, Elasticsearch, Algolia, AWS CloudSearch und Azure Search zur Verfügung. Die einfache Engine reicht für einige hundert Seiten aus. Wenn Sie PostgreSQL verwenden, wechseln Sie im Administrationsbereich zur PostgreSQL-Engine. Sie verwendet den Volltextindex der Datenbank statt einer einfachen Übereinstimmungssuche. Verwenden Sie Elasticsearch nur für ein Wiki, das groß genug ist, um den Betrieb und die Aktualisierung eines zweiten Suchdienstes zu rechtfertigen.

Outline durchsucht PostgreSQL-Volltextindizes. Sie wählen keine Engine aus und müssen nichts abstimmen. Außerdem durchsucht Outline den Text in hochgeladenen Dokumenten. Für ein Team-Wiki mit wenigen tausend Dokumenten verursacht diese Lösung am wenigsten Arbeit. Wenn die Suche irgendwann nicht mehr schnell genug ist, gibt es jedoch keine Einstellung, mit der Sie ihre Leistung anpassen können.

Welche Lösung passt zu Ihnen?

Wählen Sie BookStack, wenn das Wiki noch heute Nachmittag laufen soll und Sie lieber über Inhalte als über die Struktur diskutieren. Die Anwendung hat die wenigsten beweglichen Teile: eine PHP-Anwendung und eine MySQL-Datenbank. Sie eignet sich für interne Runbooks und Kundendokumentation sowie für Teams, in denen die meisten Autoren keine Ingenieure sind. Außerdem lässt sie sich von den drei Lösungen am einfachsten sichern, weil der gesamte Zustand aus einem Datenbank-Dump und dem Verzeichnis uploads besteht.

Wählen Sie Wiki.js, wenn Sie einen bestimmten Editor oder eine bestimmte Authentifizierungsstrategie benötigen, die die anderen Lösungen nicht anbieten, oder wenn Sie große Mengen vorhandener Markdown- oder AsciiDoc-Dateien importieren und die Pfadstruktur beibehalten möchten. Akzeptieren Sie, dass Sie einen umfangreicheren Stack betreiben, und pinnen Sie das Major-Version-Tag.

Wählen Sie Outline, wenn die Schreibqualität am wichtigsten ist, das Wiki für ein Team und nicht für die Öffentlichkeit bestimmt ist und Sie bereits über einen Identity Provider verfügen. Diese Voraussetzung wird mit einem Editor belohnt, den die Benutzer tatsächlich gerne verwenden. Wählen Sie Outline nicht als Ihre erste selbst gehostete Anwendung.

Wenn keine der drei Lösungen passt, liegt das meist am Inhaltstyp. Gescannte Rechnungen und Verträge gehören in ein Dokumentenmanagementsystem wie Paperless-ngx und nicht in ein Wiki. Sie in ein Wiki zu zwingen, ist der Grund, warum so viele Wikis schließlich aufgegeben werden. Einen breiteren Überblick darüber, welche anderen Anwendungen einen Platz auf Ihrem eigenen Server verdienen, finden Sie in der Self-Hosting-Auswahlliste für 2026.

Größenplanung und Backups

Alle drei Systeme laufen auf einem kleinen VPS. Der realistische Mindestbedarf unterscheidet sich, weil hinter jedem System andere Komponenten laufen. BookStack besteht aus einem Anwendungsprozess und MySQL. Wiki.js besteht aus einem Node-Prozess und PostgreSQL. Outline besteht aus einem Node-Prozess, PostgreSQL und Redis. Normalerweise kommt zusätzlich ein Identitätsanbieter hinzu. Deshalb sollten Sie Outline mehr Arbeitsspeicher zuweisen.

Sichern Sie die Datenbank und die Uploads gemeinsam. Stellen Sie beides einmal in einer temporären Instanz wieder her, bevor Sie sich auf dieses Backup verlassen. Ein Wiki-Backup, das noch niemand wiederhergestellt hat, ist nur eine Vermutung. Bei BookStack bedeutet das mysqldump plus das Volume /config. Bei Wiki.js und Outline bedeutet es pg_dump plus das Datenvolume. Bei Outline gehört außerdem alles dazu, was in FILE_STORAGE_LOCAL_ROOT_DIR liegt.

FAQ

Welches selbst gehostete Wiki lässt sich am einfachsten installieren?

BookStack. Es ist eine einzelne PHP-Anwendung mit einer MySQL-Datenbank. Das Projekt stellt ein Installationsskript für Ubuntu 24.04 bereit, das Apache, MySQL 8.0 und PHP 8.3 in einem Durchlauf einrichtet. Das Container-Image benötigt nur ein APP_KEY und Datenbankzugangsdaten. Wiki.js benötigt zusätzlich eine Node-Laufzeitumgebung und einen PostgreSQL-Server. Outline benötigt darüber hinaus Redis und einen externen Identitätsanbieter.

Kann ich Outline ohne Google oder einen anderen SSO-Anbieter verwenden?

Nein. Outline bietet keine lokale Anmeldung mit Benutzername und Passwort. Die Beispielkonfiguration legt fest, dass mindestens ein Anmeldeanbieter eines Drittanbieters erforderlich ist. Andernfalls stehen überhaupt keine Anmeldeoptionen zur Verfügung. Sie können Google, Slack, Microsoft Entra, Discord oder einen beliebigen OpenID-Connect-Server wie ein selbst gehostetes Keycloak oder Authentik verwenden. Der Betrieb dieses Anbieters gehört zum Aufwand für den Betrieb von Outline.

Sollte ich Wiki.js 3 oder Wiki.js 2 installieren?

Version 2. Im Juli 2026 ist die neueste Version-2-Veröffentlichung 2.5.314 vom Mai 2026. Die Dokumentation zu Version 3 bezeichnet diese Version ausdrücklich als instabile Beta, die Sie nicht in der Produktion installieren sollten. Pinnen Sie Ihr Image auf ghcr.io/requarks/wiki:2 statt auf latest. Eine Änderung der Hauptversion verändert das Datenbankschema einer laufenden Instanz.

Welche Variante bietet die beste Suche?

Sie haben jeweils unterschiedliche Stärken. BookStack bietet Lesern eine Abfragesprache mit exakten Ausdrücken, Tag-Filtern wie [location=london] und Metadatenfiltern wie {created_after:2016-12-30}. Jeder dieser Begriffe kann mit einem vorangestellten - negiert werden. Outline benötigt keine Konfiguration und durchsucht den Text hochgeladener Dateien. Wiki.js lässt sich am stärksten anpassen, da Sie die Suchmaschine auswählen. Die PostgreSQL-Suchmaschine sollten Sie aktivieren, sobald Ihr Wiki über einige hundert Seiten hinauswächst.

Kann ich meine Inhalte später von einer Variante zu einer anderen verschieben?

Teilweise. Sie sollten mit manueller Nacharbeit rechnen. Alle drei Systeme exportieren und importieren Markdown. Der Seitentext bleibt daher normalerweise erhalten. Die Struktur wird jedoch nicht sauber übernommen. Die Bücher und Kapitel von BookStack haben keine Entsprechung in den verschachtelten Dokumenten von Outline. Die Pfade von Wiki.js lassen sich nicht auf die feste Hierarchie von BookStack abbilden. Anhänge, Berechtigungen und Seitenverlauf gehen am wahrscheinlichsten verloren. Exportieren Sie daher ein Beispiel und prüfen Sie diese Elemente, bevor Sie sich für eine Migration entscheiden.

#bookstack#wikijs#outline#wiki#self-hosting#knowledge-base