SSD Nodes Learn Hosting plans →
Gidsen Matt ConnorDoor Matt Connor · Bijgewerkt 2026-08-13

Beste self-hosted wiki: BookStack, Wiki.js of Outline?

Vergelijk BookStack, Wiki.js en Outline op configuratie, editor en authenticatie. Ontdek welke wiki het beste past bij uw team of individuele behoeften voor documentatie.

Welke self-hosted wiki moet u gebruiken

Een self-hosted wiki brengt de documentatie van uw team samen op één doorzoekbare plek op een server die u beheert. BookStack, Wiki.js en Outline vervullen deze taak. Het voornaamste verschil zit in de hoeveelheid configuratiewerk voordat de eerste pagina geladen kan worden, en in wie er mag inloggen.

BookStack is het lichtst in opzet en heeft een uitgesproken visie op de structuur. Wiki.js biedt de ruimste keuze aan editors binnen één paginastructuur. Outline biedt de beste schrijfervaring van de drie, maar staat pas inloggen toe nadat u een externe identiteitsprovider heeft gekoppeld.

Alles hieronder is gebaseerd op de documentatie van de projecten zelf en hun gepubliceerde configuratiebestanden. Dit is een vergelijking van functionaliteiten, geen benchmark. Versienummers en vereisten zijn voorzien van een datum, aangezien alle drie de projecten in ontwikkeling zijn.

Structuur is de werkelijke keuze

BookStack legt de vorm van uw content vast. Een pagina bevindt zich in een boek, een boek kan hoofdstukken bevatten en boekenplanken groeperen boeken. U kunt geen vijfde niveau toevoegen. Die beperking is het product: een nieuwe schrijver weet waar een pagina hoort omdat er maar één plek is waar deze kan staan. Het nadeel is dat content die niet in deze vorm past, erin wordt gedwongen.

Wiki.js gebruikt een padstructuur, vergelijkbaar met mappen op een schijf. Een pagina op ops/backup/restic staat waar u deze plaatst, en u bepaalt zelf de diepte. Niets belet twee personen om hetzelfde onderwerp onder twee verschillende takken op te slaan, dus een Wiki.js-instantie heeft één persoon nodig die de structuur beheert.

Outline gebruikt collecties met documenten die in andere documenten zijn genest. Het verplaatsen van een document gebeurt door middel van slepen met de muis. Het is de meest flexibele van de drie, waardoor het ook het makkelijkst is om de structuur te laten verslappen.

BookStack: de minimale installatie

BookStack is een PHP-applicatie die gebruikmaakt van MySQL. Sinds juli 2026 zijn de gedocumenteerde vereisten PHP 8.2 of nieuwer en MySQL 8.0 of MariaDB 10.6 of nieuwer, plus Composer 2.2 of nieuwer indien u installeert vanuit de broncode. De huidige release-lijn is 26.05.

Het project publiceert één installatiescript per Ubuntu-release. Het script voor 24.04 installeert Apache, MySQL 8.0 en PHP 8.3 voor u.

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

Lees de waarschuwing bij dat script voordat u het uitvoert. De documentatie stelt dat het "ALLEEN VOOR EEN SCHONE OS IS, het zal Apache, MySQL 8.0 & PHP 8.3 installeren en kan elke bestaande webconfiguratie op de machine OVERSCHRIJVEN". Op een server die al reageert op poort 80, neemt het script die poort in beslag en herschrijft het de Apache-configuratie. Gebruik daar in plaats daarvan containers, of installeer BookStack handmatig bovenop een bestaande LAMP-stack op Ubuntu 24.04.

De container-route maakt gebruik van de LinuxServer.io-image, de optie waar de BookStack-documentatie naar verwijst. BookStack heeft een encryptiesleutel voor sessies nodig en zal zonder deze sleutel geen pagina's serveren, dus genereer deze eerst.

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

Kopieer de getoonde waarde naar APP_KEY en schrijf vervolgens de service:

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 moet overeenkomen met het adres dat gebruikers daadwerkelijk typen, inclusief het schema en eventuele poorten. Stel dit in op http://localhost; als u dit niet doet, wordt de site via HTTPS geserveerd, maar wijzen gegenereerde links en redirects naar de verkeerde host, wat gebruikers zien als een inlogpagina die naar zichzelf terugverwijst. Als compose-bestanden nieuw voor u zijn, begin dan met Docker Compose basics op een VPS voordat u hiermee verdergaat.

Start de applicatie en controleer of deze reageert, niet alleen of de container draait:

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

Een 200 OK betekent dat de PHP-applicatie is opgestart en de database heeft bereikt. Een 500 betekent bijna altijd dat APP_KEY leeg is of dat de database-inloggegevens niet overeenkomen, en docker compose logs bookstack toont welke van de twee het geval is.

Wiki.js: één boom, meerdere redacteuren

Wiki.js is een Node.js-applicatie. De gedocumenteerde Docker-installatie koppelt deze aan PostgreSQL, hoewel de software ook MySQL, MariaDB, MSSQL en SQLite accepteert. Dit is het compose-bestand van de eigen Docker-pagina van het project:

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:

Wijzig POSTGRES_PASSWORD en DB_PASS tegelijkertijd voordat u het uitvoert, aangezien dit één inloggegeven is en de voorbeeldwaarde openbaar is. De tag is bewust vastgezet op ghcr.io/requarks/wiki:2. De documentatie raadt latest af, omdat een grote versie-overgang het databaseschema onder een draaiende instantie wijzigt.

Versie 2 is de te gebruiken lijn. Sinds juli 2026 is de nieuwste versie 2-release 2.5.314, van mei 2026. Versie 3 bestaat, en de eigen documentatie stelt: "Deze site is voor de onstabiele bèta-release van Wiki.js 3.0. U dient dit NIET in productie te installeren." Behandel de :3-tag als een preview.

Bij de eerste keer laden leidt Wiki.js u door een in-browser configuratie die het beheerdersaccount aanmaakt. Totdat u dit voltooit, krijgt iedereen die de poort bereikt die wizard te zien, dus plaats de service achter uw reverse proxy en TLS (transport layer security) voordat u de firewall opent. Een wiki op een eigen hostnaam staat natuurlijk achter Traefik voor meerdere Docker-apps wanneer de server meer dan alleen deze service host.

De keuze voor de editor is de reden waarom mensen voor Wiki.js kiezen. Eén instantie kan Markdown-pagina's, visuele editor-pagina's, raw HTML-pagina's en AsciiDoc-pagina's naast elkaar bevatten. Dat helpt wanneer u oude inhoud importeert in een formaat dat u liever niet converteert. Het is ook een manier om met vier huisstijlen in één wiki te eindigen, dus bepaal de standaard editor op de eerste dag en leg dat besluit vast.

Overzicht: de beste editor, de zwaarste vereisten

Outline is wat mensen doorgaans bedoelen wanneer ze aangeven dat ze een tool willen die aanvoelt als een commerciële notitie-applicatie. Het is een Node.js-applicatie en de huidige release per juli 2026 is 1.9.2. Het bijbehorende voorbeeldbestand voor de omgeving somt de vereisten op: PostgreSQL via DATABASE_URL, Redis via REDIS_URL, twee willekeurige secrets en een publiek bereikbare URL.

openssl rand -hex 32
openssl rand -hex 32

Voer dit tweemaal uit en bewaar beide waarden. De eerste wordt SECRET_KEY, de tweede UTILS_SECRET. De kern van het omgevingsbestand ziet er vervolgens als volgt uit:

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 is alleen correct wanneer de database op dezelfde machine of hetzelfde Docker-netwerk staat. Laat dit weg voor een database die via een netwerk wordt bereikt, anders verloopt de verbinding onversleuteld. Bijlagen dwingen u niet langer tot object storage: FILE_STORAGE=local schrijft uploads naar de bovenliggende map, wat een volume moet zijn waar de container naar kan schrijven en dat in uw back-ups is opgenomen. Stel FILE_STORAGE=s3 in met de AWS_*-waarden als u deze bestanden in een S3-compatibele bucket wilt opslaan.

Nu het onderdeel dat mensen vaak verrast. Outline heeft geen ingebouwde inlogfunctie met gebruikersnaam en wachtwoord. De eigen voorbeeldconfiguratie stelt dat inloggegevens van derden vereist zijn: "ten minste EEN van deze is vereist voor een werkende installatie, anders heeft u geen inlogopties". De gedocumenteerde providers omvatten Google, Slack, Microsoft Entra, Discord en elke generieke OpenID Connect (OIDC)-server via OIDC_CLIENT_ID, OIDC_CLIENT_SECRET, OIDC_AUTH_URI, OIDC_TOKEN_URI en OIDC_USERINFO_URI.

De werkelijke kosten van Outline zijn dus Outline plus PostgreSQL plus Redis plus een identiteitsprovider. Als uw team al inlogt met Google Workspace of Microsoft Entra, kost dat laatste onderdeel u tien minuten en wordt Outline zeer aantrekkelijk. Als dat niet het geval is, host u ook zelf iets als Keycloak of Authentik, wat een tweede service is om te patchen en te back-uppen. Houd bij het budgetteren van het geheugen hier rekening mee: de eigen richtlijn van Outline is ongeveer 512 MB per webproces, ingesteld via WEB_CONCURRENCY, bovenop de database en Redis.

Hoe elk systeem toegangsrechten beheert

BookStack biedt standaard lokale accounts met e-mail en wachtwoord, en ondersteunt daarnaast LDAP, SAML2 en OIDC als alternatieven. Rechten worden per rol ingesteld en kunnen op het niveau van een individuele plank, boek, hoofdstuk of pagina worden overschreven. Omdat de hiërarchie vaststaat, worden rechten op een voorspelbare wijze naar beneden overgeërfd.

Wiki.js bevat eveneens lokale accounts en voegt een uitgebreide lijst met strategieën toe die u in het beheerpaneel kunt inschakelen. De paginaregels verlenen of weigeren toegang op basis van padpatronen. Dit is krachtig, maar ook foutgevoelig, omdat een regel die voor ops/* is geschreven, automatisch van toepassing is op elke pagina die u later onder dat pad opslaat.

Outline delegeert deze taak volledig. Het lidmaatschap volgt uw identiteitsprovider en binnen Outline beheert u de toegang per collectie en per groep. Er blijven geen lokale accounts achter wanneer iemand het bedrijf verlaat; dit is een aanzienlijk voordeel wanneer de identiteitsprovider het systeem is waarbinnen u accounts deprovisioneert.

Hoe zoekfunctionaliteit in elk systeem werkt

Zoekfunctionaliteit bepaalt of een wiki een waardevol hulpmiddel is of een verzameling vergeten bestanden wordt.

BookStack doorzoekt de database en biedt lezers een querytaal die in één minuut te leren is. Het plaatsen van een zinsnede tussen aanhalingstekens, zoals in "london meeting", vereist een exacte overeenkomst van die reeks. Vierkante haken doorzoeken tags: [location=london] zoekt op tagnaam, waarde of beide, met vergelijkingen zoals !=, >= en like. Accolades filteren op metadata, zoals in {created_after:2016-12-30}. Elke exacte term, tag of filterterm kan worden uitgesloten door het prefix - toe te voegen. BookStack beperkt het aantal termen van elk type per query; een zeer lange query wordt ingekort in plaats van uitgevoerd.

Wiki.js behandelt zoekfunctionaliteit als een modulaire component. De gedocumenteerde engines zijn een standaard database-engine, een PostgreSQL-engine, Elasticsearch, Algolia, AWS CloudSearch en Azure Search. De standaard-engine volstaat voor enkele honderden pagina's. Als u PostgreSQL gebruikt, schakel dan in het beheerderspaneel over naar de PostgreSQL-engine, omdat deze gebruikmaakt van de ingebouwde full-text index van de database in plaats van eenvoudige tekstvergelijking. Gebruik Elasticsearch alleen voor een wiki die groot genoeg is om het draaien en patchen van een tweede zoekservice te rechtvaardigen.

Outline doorzoekt PostgreSQL full-text indexen. Er is geen engine om te kiezen en er valt niets in te stellen; bovendien doorzoekt het de tekst in geüploade documenten. Voor een team-wiki met enkele duizenden documenten is dit de minst bewerkelijke optie van de drie. Er zijn echter geen instellingen om aan te passen mocht de snelheid ooit tekortschieten.

Welke optie past bij u

Kies voor BookStack als u wilt dat de wiki vanmiddag nog draait en u liever discussieert over de inhoud dan over de structuur. Het heeft de minste bewegende onderdelen: één PHP-applicatie en één MySQL-database. Het is geschikt voor interne runbooks en klantdocumentatie, en voor teams waarin de meeste schrijvers geen engineers zijn. Het is bovendien de makkelijkste van de drie om te back-uppen, omdat de volledige status bestaat uit één database-dump plus de map met uploads.

Kies voor Wiki.js als u een specifieke editor of een specifieke authenticatiestrategie nodig heeft die de andere opties niet bieden, of als u een grote hoeveelheid bestaande Markdown- of AsciiDoc-bestanden importeert en de padstructuur wilt behouden. Accepteer dat u een zwaardere stack draait en zet de major version-tag vast.

Kies voor Outline als de schrijfkwaliteit het belangrijkst is, de wiki voor een team is in plaats van voor het publiek, en u al over een identity provider beschikt. Het beloont die opzet met een editor die mensen daadwerkelijk prettig vinden in het gebruik. Kies dit niet als uw eerste zelfgehoste applicatie.

Als geen van de drie past, ligt de mismatch meestal bij het type inhoud. Gescande facturen en contracten horen thuis in een documentmanagementsysteem zoals Paperless-ngx in plaats van in een wiki; het dwingen van dergelijke bestanden in een wiki is de reden waarom veel wiki's uiteindelijk in onbruik raken. De andere veelvoorkomende mismatch is de behoefte aan een werkruimte in plaats van een wiki, met documenten, tabellen en een whiteboard op één canvas. In dat geval past een zelfgehoste AFFiNE-werkruimte beter dan de drie bovenstaande opties. Voor een breder overzicht van wat er nog meer op uw eigen server thuishoort, zie de self-hosting shortlist voor 2026.

Dimensionering en back-ups

Alle drie de applicaties passen op een kleine VPS. De realistische ondergrens verschilt echter per applicatie, afhankelijk van wat er op de achtergrond draait. BookStack bestaat uit één applicatieproces en MySQL. Wiki.js is een Node-proces met PostgreSQL. Outline is een Node-proces, PostgreSQL en Redis, meestal aangevuld met een identiteitsprovider; daarom vereist deze applicatie extra geheugen.

Maak back-ups van de database en de uploads gezamenlijk. Herstel beide minimaal één keer in een testomgeving voordat u op de back-up vertrouwt. Een wiki-back-up die nooit is hersteld, is slechts een aanname. Voor BookStack betekent dit een mysqldump en het /config-volume. Voor Wiki.js en Outline betekent dit pg_dump en het datavolume, en voor Outline bovendien alles wat zich in FILE_STORAGE_LOCAL_ROOT_DIR bevindt.

FAQ

Welke zelfgehoste wiki is het eenvoudigst te installeren?

BookStack. Het is een enkele PHP-applicatie met een MySQL-database, en het project levert een installatiescript voor Ubuntu 24.04 dat Apache, MySQL 8.0 en PHP 8.3 in één keer opzet. De container-image heeft alleen een APP_KEY en database-inloggegevens nodig. Wiki.js voegt een Node-runtime en een PostgreSQL-server toe, en Outline voegt daar nog Redis en een externe identiteitsprovider aan toe.

Kan ik Outline gebruiken zonder Google of een andere SSO-provider?

Nee. Outline heeft geen lokale gebruikersnaam en wachtwoord voor inloggen. De voorbeeldconfiguratie stelt dat ten minste één externe aanmeldingsprovider vereist is; anders heeft u helemaal geen inlogopties. U kunt Google, Slack, Microsoft Entra, Discord of een generieke OpenID Connect-server gebruiken, zoals een zelfgehoste Keycloak of Authentik. Het draaien van die provider is onderdeel van de kosten voor het draaien van Outline.

Moet ik Wiki.js 3 of Wiki.js 2 installeren?

Versie 2. Sinds juli 2026 is de nieuwste versie 2-release 2.5.314, van mei 2026, en de documentatie van versie 3 stelt duidelijk dat het een onstabiele bèta is die u niet in productie moet installeren. Pin uw image vast op ghcr.io/requarks/wiki:2 in plaats van latest, omdat een grote versie-update het databaseschema onder een draaiende instantie wijzigt.

Welke heeft de beste zoekfunctie?

Ze zijn elk op hun eigen manier sterk. BookStack biedt lezers een querytaal met exacte zinsneden, tagfilters zoals [location=london] en metadatafilters zoals {created_after:2016-12-30}; al deze termen kunnen worden uitgesloten met een voorafgaande -. Outline vereist geen configuratie en doorzoekt de tekst in geüploade bestanden. Wiki.js is het meest instelbaar, aangezien u de engine kiest; de PostgreSQL-engine is het waard om naar over te stappen zodra uw wiki groter wordt dan een paar honderd pagina's.

Kan ik mijn inhoud later van de een naar de ander verplaatsen?

Gedeeltelijk, en u moet rekening houden met handmatig werk. Alle drie exporteren en importeren Markdown, dus paginatekst blijft meestal behouden. De structuur blijft niet netjes behouden: boeken en hoofdstukken in BookStack hebben geen equivalent in de geneste documenten van Outline, en paden in Wiki.js komen niet overeen met de vaste hiërarchie van BookStack. Bijlagen, rechten en paginageschiedenis gaan het vaakst verloren; exporteer daarom een voorbeeld en controleer deze onderdelen voordat u aan een migratie begint.

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