SSD Nodes Learn Hosting plans →
Gidsen Matt ConnorDoor Matt Connor · Bijgewerkt 2026-10-30

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 individueel gebruik 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 belangrijkste verschil zit in de hoeveelheid configuratiewerk voordat de eerste pagina laadt en in het beheer van gebruikersaccounts.

BookStack is het eenvoudigst op te zetten en hanteert een strikte structuur. Wiki.js biedt de meeste keuze aan editors binnen één paginastructuur. Outline biedt de beste schrijfervaring van de drie, maar de gedocumenteerde productie-installatie vereist een externe identity provider om de initiële werkruimte aan te maken.

Onderstaande informatie is gebaseerd op de documentatie en de gepubliceerde configuratiebestanden van de projecten zelf. 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 kleinste installatie

BookStack is een PHP-applicatie die gebruikmaakt van MySQL. Sinds oktober 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 vanaf de broncode installeert. De huidige release-lijn is 26.09, uitgebracht op 24 september 2026, en de nieuwste stabiele release is 26.09.2, een beveiligingsupdate van 20 oktober 2026. Vanaf 26.09 moet een APP_KEY-waarde worden ingesteld, wat in de onderstaande containerstappen al is verwerkt. BookStack publiceerde op 21 oktober 2026 ook een kritieke PHP-beveiligingsmelding: update de onderliggende PHP-pakketten of haal de container opnieuw op en maak deze aan met een gepatchte image, aangezien de BookStack-versie alleen niet garandeert dat PHP is gepatcht.

Het project ondersteunt officieel installatiescripts en handleidingen voor de vermelde Ubuntu LTS-releases, momenteel 22.04, 24.04 en 26.04, en publiceert soms niet-ondersteunde handleidingen en scripts voor andere omgevingen. Het 24.04-script installeert Apache, MySQL 8.0 en PHP 8.3 voor u. Gebruik op 26.04 in de onderstaande commando's in plaats daarvan installation-ubuntu-26.04.sh; dit installeert MySQL 8.4 en PHP 8.5.

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 installeert Apache, MySQL 8.0 & PHP 8.3 en kan elke bestaande webconfiguratie op de machine OVERSCHRIJVEN". Het 24.04-script controleert op bestaande Apache-configuratie en MySQL-data en breekt de installatie af als het een van beide vindt. Gebruik daar in plaats daarvan containers, of installeer BookStack handmatig bovenop een bestaande LAMP-stack op Ubuntu 24.04.

De container-route gebruikt de LinuxServer.io-image, een van de twee community-containeropstellingen die de BookStack-documentatie vermeldt. BookStack heeft een encryptiesleutel voor sessies nodig en zal zonder deze geen pagina's serveren, dus genereer deze eerst.

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

Kopieer de afgedrukte waarde naar APP_KEY en schrijf vervolgens de service. Deze service heeft ook een bestaande MySQL- of MariaDB-database nodig; stel de DB_*-waarden zo in dat ze hiermee overeenkomen, aangezien het fragment geen databaseservice aanmaakt.

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 lezers daadwerkelijk typen, inclusief het schema en eventuele poort. Stel dit in op http://localhost en serveer de site vervolgens over HTTPS, anders wijzen gegenereerde links en redirects naar de verkeerde host, wat lezers zien als een inlogpagina die naar zichzelf terugverwijst. Als compose-bestanden nieuw voor u zijn, begin dan met Docker Compose-basisprincipes op een VPS voordat u hiermee verdergaat.

Start de applicatie en controleer of deze antwoordt; controleer 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 vereist het foutenlogboek van de applicatie voor diagnose. Standaard schrijft BookStack zijn fouten naar een logbestand in plaats van naar de container-output, dus open ./config/log/bookstack/laravel.log op de host om de oorzaak te zien. docker compose logs bookstack toont de opstartberichten van de container zelf, die mogelijk niet de applicatiefout bevatten.

Wiki.js: één boomstructuur, meerdere editors

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 set inloggegevens vormt 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-upgrade het databaseschema onder een draaiende instantie wijzigt.

Versie 2 is de te gebruiken lijn. Per 27 oktober 2026 is de nieuwste versie 2-release 2.5.317, een bug-fix build van 23 oktober 2026 die de image opnieuw opbouwt met de laatste Node-beveiligingsupdates. Versie 2-releases worden nu gepubliceerd vanuit een aparte requarks/wiki-v2-repository, en de :2-image-tag volgt deze nog steeds. Versie 3 bevindt zich in de publieke bètafase. De installatiedocumentatie vermeldt dat de images zijn getagd als 3.0.0-beta en dat de standaard 3- en 3.0-tags pas werken zodra de bètafase is afgerond. Beschouw dit als een preview, niet als een doel voor productieomgevingen. De vorige release, 2.5.316 van 2 oktober 2026, voegde een export-utility toe om inhoud later naar versie 3 te kunnen verplaatsen.

Bij de eerste keer laden leidt Wiki.js u door een in-browser configuratieproces dat het beheerdersaccount aanmaakt. Totdat u dit voltooit, krijgt iedereen die de poort bereikt deze wizard te zien. Plaats de service daarom achter uw reverse proxy en TLS (transport layer security) voordat u de firewall opent. Een wiki op een eigen hostnaam past uitstekend 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. Dit helpt bij het importeren van oude inhoud in een formaat dat u liever niet converteert. Het is echter ook een manier om met vier verschillende huisstijlen in één wiki te eindigen; bepaal daarom op de eerste dag de standaardeditor en leg dit besluit vast.

Overzicht: de beste editor, de zwaarste vereisten

Outline is wat mensen doorgaans bedoelen wanneer ze aangeven een tool te willen die aanvoelt als een commerciële notitie-applicatie. Het is een Node.js-applicatie en de huidige release per 27 oktober 2026 is 1.12.0, van 23 oktober 2026. Die release verplaatst de Docker-image naar een Node-versie die verschillende recent bekendgemaakte Node-kwetsbaarheden verhelpt; werk oudere installaties daarom bij. Het voorbeeld-omgevingsbestand 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 dan 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 zich op dezelfde machine of hetzelfde Docker-netwerk bevindt. 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 die bestanden in een S3-compatibele bucket wilt opslaan.

Nu het onderdeel dat mensen 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 zijn onder andere 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. Bestaande werkruimtes kunnen ook passkeys en e-maillinks of codes inschakelen; e-mailinlog vereist SMTP en omzeilt SSO niet voor accounts die aan een SSO-provider zijn gekoppeld.

De eerlijke kosten van de gedocumenteerde productie-opstelling van Outline zijn dus Outline plus PostgreSQL plus Redis plus een identiteitsprovider. Als uw team al inlogt met Google Workspace of Microsoft Entra, wordt Outline zeer aantrekkelijk. Zo niet, dan 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 rekening met het volgende: de eigen richtlijn van Outline is ongeveer 512 MB per webproces, ingesteld via WEB_CONCURRENCY, bovenop de database en Redis.

Hoe elk systeem bepaalt wie wat mag lezen

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. Rechten van boeken en hoofdstukken worden overgeërfd door onderliggende inhoud, tenzij deze worden overschreven; rechten voor planken moeten expliciet naar boeken worden gekopieerd.

Wiki.js biedt 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 is geschreven voor ops/* automatisch van toepassing is op elke pagina die u later onder dat pad opslaat.

Outline gebruikt uw identiteitsprovider voor SSO-lidmaatschap. Binnen Outline beheert u de toegang per collectie, document en groep. Gebruikers die uit de identiteitsprovider worden verwijderd, worden uitgelogd zodra zij Outline opnieuw laden; schort de gebruiker op in Outline om bestaande sessies direct te beëindigen.

Hoe zoekfuncties per systeem werken

De zoekfunctie bepaalt of een wiki zijn waarde bewijst of verandert in een verzameling vergeten bestanden.

BookStack doorzoekt de database en biedt lezers een querytaal die in een minuut te leren is. Het plaatsen van een zinsnede tussen aanhalingstekens, zoals in "london meeting", vereist die exacte tekenreeks. 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 genegeerd door er - voor te plaatsen. BookStack beperkt het aantal termen van elk type per query, waardoor een zeer lange query wordt ingekort in plaats van uitgevoerd.

Wiki.js behandelt de zoekfunctie als een uitbreidbare module. De gedocumenteerde engines zijn een standaard database-engine, een PostgreSQL-engine, Elasticsearch, Algolia, AWS CloudSearch en Azure Search. De standaard engine doorzoekt titels, beschrijvingen en paden in plaats van de inhoud van pagina's. Als u PostgreSQL gebruikt, schakel dan in het beheerderspaneel over naar de PostgreSQL-engine, omdat deze de eigen full-text index van de database gebruikt in plaats van eenvoudige matching. Gebruik Elasticsearch voor een wiki die groot genoeg is om het draaien en onderhouden van een tweede zoekservice te rechtvaardigen.

Outline doorzoekt PostgreSQL full-text indexen. De ingebouwde trefwoordzoekfunctie vereist geen afzonderlijke zoekservice. Voor een team-wiki met enkele duizenden documenten is dit de minst bewerkelijke optie van de drie.

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 het is geschikt voor teams waar de meeste schrijvers geen engineers zijn. Het is bovendien de makkelijkste van de drie om te back-uppen, omdat de status bestaat uit één database-dump plus de geüploade bestanden en het .env configuratiebestand, inclusief APP_KEY.

Kies voor Wiki.js als u een specifieke editor of een specifieke authenticatiestrategie nodig heeft die de anderen niet bieden, of als u een grote hoeveelheid bestaande Markdown- of AsciiDoc-bestanden importeert en de padstructuur behouden wilt blijven. 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 de editor die mensen daadwerkelijk graag gebruiken. 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 deze bestanden in een wiki is de reden waarom zoveel wiki's uiteindelijk worden verlaten. 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 een plek op uw eigen server verdient, zie de self-hosting shortlist voor 2026.

Dimensionering en back-ups

Alle drie passen op een kleine VPS, en de realistische ondergrens verschilt door wat er achter elk systeem draait. BookStack is één applicatieproces en MySQL. Wiki.js is een Node-proces en PostgreSQL. Outline is een Node-proces, PostgreSQL en Redis, meestal met een identiteitsprovider ernaast; daarom is dit de applicatie die extra geheugen krijgt.

Maak een back-up van de database en de uploads samen, en herstel beide één keer in een tijdelijke instantie voordat u op die back-up vertrouwt. Een wiki-back-up die niemand heeft hersteld, is een gok. Voor BookStack betekent dit een mysqldump plus het /config-volume. Voor Wiki.js en Outline betekent dit pg_dump plus het datavolume, en voor Outline ook alles wat in FILE_STORAGE_LOCAL_ROOT_DIR staat.

FAQ

Welke self-hosted wiki is het eenvoudigst te installeren?

BookStack. Dit 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 vereist een APP_KEY, een APP_URL en inloggegevens voor een bestaande database. Wiki.js voegt een Node-runtime en een PostgreSQL-server toe, en Outline vereist voor de gedocumenteerde initiële installatie ook Redis en een externe identiteitsprovider.

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

De gedocumenteerde productie-installatie vereist een provider om de initiële werkruimte aan te maken. Outline heeft geen lokale inlogfunctie met gebruikersnaam en wachtwoord. De voorbeeldconfiguratie stelt dat ten minste één externe inlogprovider 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. Bestaande werkruimtes kunnen passkeys of e-maillinks en codes inschakelen, waarbij SMTP vereist is voor inloggen via e-mail; accounts die aan SSO zijn gekoppeld, blijven die provider gebruiken.

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

Versie 2. Op 27 oktober 2026 is de nieuwste versie 2-release 2.5.317, van 23 oktober 2026, en versie 3 is nog steeds een bèta waarvan de images een 3.0.0-beta-tag dragen. Pin uw image vast op ghcr.io/requarks/wiki:2 in plaats van latest, omdat een grote versie-update het databaseschema van 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 voorafgaand -. De ingebouwde zoekfunctie van Outline vereist geen aparte zoekservice. Wiki.js is het meest instelbaar, aangezien u zelf de engine kiest; de PostgreSQL-engine doorzoekt paginateksten die de basis-engine niet meeneemt.

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

Gedeeltelijk, en u moet rekening houden met handmatig werk. Alle drie exporteren ze Markdown, maar de ingebouwde importfunctie van BookStack accepteert alleen het eigen Portable ZIP-formaat, waardoor Markdown alleen geen directe importroute naar BookStack is. De structuur blijft niet volledig 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.

Was dit artikel nuttig?

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