SSD Nodes Learn Hosting plans →
Anleitungen Matt ConnorVon Matt Connor · Aktualisiert 2026-08-13

BookStack, Wiki.js oder Outline: Welches Wiki passt?

Vergleich von BookStack, Wiki.js und Outline: Setup, Editoren, Login und Suche. Mit klarer Empfehlung für Einzeladministratoren und Teams sowie dem Outline-Login-Haken.

Welches selbst gehostete Wiki sollten Sie betreiben?

Ein selbst gehostetes Wiki legt die Dokumente Ihres Teams an einer durchsuchbaren Stelle 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 ersten Seitenaufruf 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 innerhalb eines gemeinsamen Seitenbaums die größte Auswahl an Editoren. Outline bietet die beste Schreiberfahrung der drei Systeme. Eine Anmeldung ist dort jedoch erst möglich, wenn Sie einen externen Identity Provider anbinden.

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

Die Struktur ist die eigentliche Entscheidung

BookStack legt die Struktur Ihrer Inhalte fest. Eine Seite befindet sich innerhalb eines Buchs, ein Buch kann Kapitel enthalten, und Regale gruppieren Bücher. Eine fünfte Ebene können Sie nicht anlegen. Diese Begrenzung ist Teil des Produkts: Ein neuer Autor weiß, wo eine Seite abgelegt wird, weil es nur einen möglichen Ort gibt. Der Nachteil ist, dass Inhalte, die nicht in diese Struktur passen, in sie eingepasst werden müssen.

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 verhindert, dass zwei Personen dasselbe Thema unter zwei verschiedenen Zweigen ablegen. Deshalb benötigt eine Wiki.js-Instanz eine Person, die für die Struktur verantwortlich ist.

Outline verwendet Sammlungen mit Dokumenten, die in anderen Dokumenten verschachtelt sind. Ein Dokument verschieben Sie per Drag-and-drop. Von den drei Lösungen ist Outline 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. Seit 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 ist außerdem Composer 2.2 oder neuer erforderlich. Die aktuelle Release-Linie ist 26.05.

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

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 die Warnung in diesem Skript, bevor Sie es ausführen. In der Dokumentation steht, dass es „ONLY FOR A FRESH OS“ vorgesehen ist, „Apache, MySQL 8.0 & PHP 8.3“ installiert und „any existing web setup on the machine“ überschreiben kann. Wenn der Server bereits auf Port 80 antwortet, übernimmt das Skript diesen Port und überschreibt die Apache-Konfiguration. Verwenden Sie dort stattdessen Container oder installieren Sie BookStack manuell auf einem vorhandenen LAMP-Stack unter Ubuntu 24.04.

Für den Container-Weg wird das LinuxServer.io-Image verwendet. Dieses Image empfiehlt die BookStack-Dokumentation. BookStack benötigt einen Schlüssel zur Verschlüsselung von Sitzungen und liefert ohne diesen keine Seiten aus. Erzeugen Sie ihn daher zuerst.

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

Übernehmen Sie den ausgegebenen Wert in 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 verweisen erzeugte Links und Weiterleitungen auf den falschen Host. Für Leser äußert sich das als Anmeldeseite, die immer wieder auf sich selbst zurückverweist. Wenn Compose-Dateien für Sie neu sind, beginnen Sie vor diesem Abschnitt mit den Grundlagen von Docker Compose auf einem VPS.

Starten Sie die Anwendung und prüfen Sie, dass sie Anfragen beantwortet. Prüfen Sie 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 zeigt an, welcher der beiden Fälle vorliegt.

Wiki.js: Ein Baum, mehrere Editoren

Wiki.js ist eine Node.js-Anwendung. Die dokumentierte Docker-Konfiguration 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 Konfiguration starten, 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 neue Hauptversion das Datenbankschema einer laufenden Instanz ändert.

Version 2 ist die geeignete Hauptversion für den Betrieb. Im Juli 2026 ist 2.5.314 die neueste Version-2-Veröffentlichung und stammt aus Mai 2026. Version 3 existiert ebenfalls. In der zugehörigen Dokumentation steht: "Diese Website ist für die instabile Beta-Version von Wiki.js 3.0 bestimmt. Sie sollten diese Version NICHT in der Produktion installieren." Betrachten Sie das Tag :3 als Vorschauversion.

Beim ersten Aufruf führt Wiki.js Sie durch eine Einrichtung im Browser, bei der das Administratorkonto erstellt wird. Bis Sie diesen Vorgang abgeschlossen haben, erhält jeder, der den Port erreicht, diesen Einrichtungsassistenten. Platzieren Sie den Dienst daher hinter Ihrem Reverse Proxy und TLS (Transport Layer Security), bevor Sie den Port in der Firewall freigeben. Ein Wiki mit eigenem Hostnamen lässt sich auf natürliche Weise hinter Traefik vor mehreren Docker-Anwendungen betreiben, wenn der Server mehr als diesen einen Dienst hostet.

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

Gliederung: der beste Editor, die umfangreichsten Voraussetzungen

Mit Outline ist normalerweise gemeint, dass eine Anwendung das Verhalten eines kommerziellen Notizwerkzeugs bietet. Outline ist eine Node.js-Anwendung. Der aktuelle Release-Stand im Juli 2026 ist 1.9.2. Die Beispieldatei für die Umgebung listet die Voraussetzungen auf: PostgreSQL über DATABASE_URL, Redis über REDIS_URL, zwei zufällige Secrets 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 diesen Wert bei einer Datenbank weg, die über ein Netzwerk erreicht wird. Andernfalls wird die Verbindung unverschlüsselt hergestellt. Anhänge erfordern keinen Object Storage mehr: FILE_STORAGE=local schreibt Uploads in das oben angegebene Verzeichnis. Dieses Verzeichnis muss ein Volume sein, in das der Container schreiben kann, und in den Backups enthalten sein. Setzen Sie stattdessen FILE_STORAGE=s3 mit den Werten AWS_*, wenn Sie diese Dateien in einem S3-kompatiblen Bucket speichern möchten.

Nun zum Punkt, der viele überrascht. Outline verfügt über keine integrierte Anmeldung mit Benutzername und Passwort. In der eigenen Beispielkonfiguration steht, dass Anmeldedaten für die Anmeldung über einen Drittanbieter erforderlich sind: „Mindestens EINER dieser Einträge ist für eine funktionierende Installation erforderlich. Andernfalls stehen keine Anmeldeoptionen zur Verfügung.“ 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.

Der tatsächliche Aufwand für Outline besteht daher aus Outline, PostgreSQL, Redis und einem Identity Provider. Wenn sich Ihr Team bereits mit Google Workspace oder Microsoft Entra anmeldet, kostet dieser letzte Bestandteil etwa zehn Minuten. Dann ist Outline sehr attraktiv. Falls nicht, müssen Sie zusätzlich beispielsweise Keycloak oder Authentik selbst betreiben. Das ist ein weiterer Dienst, den Sie aktualisieren und sichern müssen. Planen Sie den Speicher entsprechend ein: Outline empfiehlt ungefähr 512 MB pro Webprozess. Dies wird über WEB_CONCURRENCY festgelegt. Zusätzlich benötigt die Umgebung Speicher für die Datenbank und Redis.

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 lokale Konten und ergänzt eine lange Liste von Anmeldestrategien, die Sie im Administrationsbereich aktivieren. Die Seitenregeln gewähren oder verweigern den Zugriff anhand von Pfadmustern. Das ist leistungsfähig, aber leicht falsch zu konfigurieren, weil eine für ops/* geschriebene Regel später stillschweigend jede Seite erfasst, die Sie unter diesem Pfad ablegen.

Outline überlässt diese Frage vollständig dem Identitätsanbieter. Die Mitgliedschaften folgen 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 deutlicher Vorteil, wenn der Identitätsanbieter bereits das System ist, über das Sie Zugänge entziehen.

So funktioniert die Suche in den einzelnen Systemen

Die Suche entscheidet darüber, ob ein Wiki seinen Platz verdient oder zu einem Ordner mit vergessenen Dateien wird.

BookStack durchsucht die Datenbank und bietet Lesern eine Abfragesprache, die sie innerhalb einer Minute erlernen können. Wenn Sie eine Phrase wie "london meeting" in Anführungszeichen setzen, muss genau diese Zeichenfolge vorkommen. Mit eckigen Klammern suchen Sie nach Tags: [location=london] findet Treffer anhand des Tagnamens, des Werts oder beider Angaben. Dabei sind Vergleiche wie !=, >= und like möglich. Geschweifte Klammern filtern nach Metadaten, wie in {created_after:2016-12-30}. Jede exakte Suche sowie jeder Tag- oder Filterterm kann negiert werden, indem Sie ihm - voranstellen. BookStack begrenzt die Anzahl der Terme jedes Typs pro Abfrage. Eine sehr lange Abfrage wird daher gekürzt, statt ausgeführt zu werden.

Wiki.js behandelt die Suche als austauschbares Modul. Die dokumentierten Suchmaschinen sind eine einfache Datenbank-Engine, eine PostgreSQL-Engine, Elasticsearch, Algolia, AWS CloudSearch und Azure Search. Die einfache Engine reicht für einige hundert Seiten aus. Wenn Sie PostgreSQL verwenden, wechseln Sie im Administrationsbereich zur PostgreSQL-Engine. Sie verwendet den Full-Text-Index der Datenbank statt einer einfachen Übereinstimmungssuche. Verwenden Sie Elasticsearch nur bei einem Wiki, das groß genug ist, um den Betrieb und die Pflege eines zweiten Suchdienstes zu rechtfertigen.

Outline durchsucht PostgreSQL-Full-Text-Indizes. Sie können keine Engine auswählen und müssen nichts konfigurieren. Außerdem durchsucht Outline den Text in hochgeladenen Dokumenten. Für ein Team-Wiki mit wenigen tausend Dokumenten verursacht diese Lösung im Vergleich der drei Systeme den geringsten Aufwand. Wenn die Suche irgendwann nicht mehr schnell genug ist, gibt es jedoch keine zusätzliche Option zur Leistungssteigerung.

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. Es hat die wenigsten beweglichen Teile: eine PHP-Anwendung und eine MySQL-Datenbank. Es eignet sich für interne Runbooks und Kundendokumentation sowie für Teams, in denen die meisten Autoren keine Entwickler sind. Außerdem lässt es sich von den drei Lösungen am einfachsten sichern, weil der gesamte Zustand aus einem Datenbank-Dump und dem Upload-Verzeichnis 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 eine große Menge 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 Kombination wird mit einem Editor belohnt, den die Benutzer tatsächlich gerne verwenden. Wählen Sie Outline nicht als erste selbst gehostete Anwendung.

Wenn keine der drei Lösungen passt, liegt die Ursache 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. Ein weiterer häufiger Fehlansatz ist der Wunsch nach einem Workspace statt nach einem Wiki, mit Dokumenten, Tabellen und einem Whiteboard auf einer gemeinsamen Arbeitsfläche. Dafür eignet sich ein selbst gehosteter AFFiNE-Workspace besser als jede der drei genannten Lösungen. Einen umfassenderen Überblick über weitere Anwendungen für den eigenen Server finden Sie in der Self-Hosting-Auswahlliste für 2026.

Dimensionierung und Backups

Alle drei Anwendungen passen auf einen kleinen VPS. Die realistische Mindestgröße hängt davon ab, welche Komponenten jeweils dahinterliegen. BookStack besteht aus einem Anwendungsprozess und MySQL. Wiki.js besteht aus einem Node-Prozess und PostgreSQL. Outline benötigt einen Node-Prozess, PostgreSQL und Redis, üblicherweise zusätzlich einen Identity Provider. Deshalb sollte dafür mehr Arbeitsspeicher eingeplant werden.

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 niemand wiederhergestellt hat, ist nur eine Vermutung. Bei BookStack bedeutet das mysqldump sowie das /config-Volume. Bei Wiki.js und Outline bedeutet es pg_dump sowie das Daten-Volume. 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 erfordert zusätzlich eine Node-Laufzeitumgebung und einen PostgreSQL-Server. Outline benötigt darüber hinaus Redis und einen externen Identity Provider.

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

Nein. Outline bietet keine lokale Anmeldung mit Benutzername und Passwort. Die Beispielkonfiguration gibt ausdrücklich an, dass mindestens ein externer Sign-in-Provider 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 das selbst gehostete Keycloak oder Authentik verwenden. Der Betrieb dieses Providers gehört zu den Kosten 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 weist ausdrücklich darauf hin, dass es sich um eine instabile Beta-Version handelt, die Sie nicht in der Produktion installieren sollten. Fixieren Sie Ihr Image auf ghcr.io/requarks/wiki:2 statt auf latest, weil ein Wechsel der Hauptversion das Datenbankschema einer laufenden Instanz ändert.

Welches bietet die beste Suche?

Die Stärken liegen in unterschiedlichen Bereichen. BookStack bietet Lesern eine Abfragesprache mit exakten Phrasen, Tag-Filtern wie [location=london] und Metadatenfiltern wie {created_after:2016-12-30}. Jeder dieser Begriffe kann mit einem vorangestellten - negiert werden. Outline erfordert keine Konfiguration und durchsucht den Text in hochgeladenen Dateien. Wiki.js lässt sich am umfassendsten anpassen, weil Sie die Such-Engine auswählen. Die PostgreSQL-Engine lohnt sich, sobald Ihr Wiki über einige hundert Seiten hinauswächst.

Kann ich meine Inhalte später von einem System in ein anderes übertragen?

Teilweise. Sie sollten mit manueller Nacharbeit rechnen. Alle drei Systeme können Markdown exportieren und importieren. Der Seitentext bleibt daher normalerweise erhalten. Die Struktur wird jedoch nicht sauber übernommen: Für die Bücher und Kapitel von BookStack gibt es in den verschachtelten Dokumenten von Outline kein direktes Gegenstück. Die Pfade von Wiki.js lassen sich ebenfalls nicht auf die feste Hierarchie von BookStack abbilden. Anhänge, Berechtigungen und Seitenhistorie gehen am wahrscheinlichsten verloren. Exportieren Sie daher zunächst einen Testbestand und prüfen Sie diese Elemente, bevor Sie eine Migration durchführen.

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