BookStack, Wiki.js of Outline: welke wiki kiest u?
Vergelijk BookStack, Wiki.js en Outline op installatie, structuur, editors, inloggen en zoeken. Ontdek welke zelfgehoste wiki het best past bij solo-beheerders en teams.
Welke zelfgehoste wiki moet u gebruiken
Een zelfgehoste wiki zet de documenten van uw team op één doorzoekbare locatie op een server die u beheert. BookStack, Wiki.js en Outline vervullen die functie allemaal. Ze verschillen vooral in hoeveel u moet configureren voordat de eerste pagina wordt geladen en wie mag inloggen.
BookStack is het eenvoudigst op te zetten en schrijft de structuur het sterkst voor. Wiki.js biedt de ruimste keuze aan editors binnen één paginaboom. Outline biedt de beste schrijfervaring van de drie en laat niemand inloggen totdat u een externe identity provider koppelt.
Alles hieronder is gebaseerd op de eigen documentatie van de projecten en hun gepubliceerde configuratiebestanden. Dit is een vergelijking van mogelijkheden, geen benchmark. Versienummers en vereisten zijn van een datum voorzien, omdat alle drie de projecten zich blijven ontwikkelen.
De structuur is de echte keuze
BookStack bepaalt de structuur van uw inhoud. Een pagina bevindt zich in een boek, een boek kan hoofdstukken bevatten en planken groeperen boeken. U kunt geen vijfde niveau toevoegen. Die beperking is het product: een nieuwe schrijver weet waar een pagina thuishoort, omdat er maar één mogelijke locatie is. Het nadeel is dat inhoud die niet in deze structuur past, erin wordt gedwongen.
Wiki.js gebruikt een padstructuur, zoals mappen op een schijf. Een pagina op ops/backup/restic staat waar u die plaatst en u bepaalt de diepte. Niets voorkomt dat twee mensen hetzelfde onderwerp onder twee verschillende vertakkingen opslaan. Daarom heeft een Wiki.js-instantie één persoon nodig die verantwoordelijk is voor de structuur.
Outline gebruikt verzamelingen met documenten die in andere documenten zijn genest. U verplaatst een document door het met de muis te slepen. Van de drie systemen is dit het flexibelste. Daardoor is het ook het eenvoudigst om de structuur te laten afwijken.
BookStack: de kleinste installatie
BookStack is een PHP-toepassing die MySQL gebruikt. Sinds juli 2026 zijn PHP 8.2 of nieuwer en MySQL 8.0 of MariaDB 10.6 of nieuwer de gedocumenteerde vereisten. Als u de toepassing vanuit de broncode installeert, hebt u daarnaast Composer 2.2 of nieuwer nodig. De huidige release-reeks 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.shLees de waarschuwing in dat script voordat u het uitvoert. In de documentatie staat dat het script "ONLY FOR A FRESH OS, it will install Apache, MySQL 8.0 & PHP 8.3 and could OVERWRITE any existing web setup on the machine" is. Op een server die al antwoordt op poort 80, neemt het script die poort over en herschrijft het de Apache-configuratie. Gebruik daar containers of installeer BookStack handmatig boven op een bestaande LAMP-stack op Ubuntu 24.04.
Voor de containerroute gebruikt u de image van LinuxServer.io. Dit is de optie waarnaar de BookStack-documentatie verwijst. BookStack heeft een sessieversleutel nodig en levert zonder die sleutel geen pagina's. Genereer de sleutel daarom eerst.
docker run -it --rm --entrypoint /bin/bash lscr.io/linuxserver/bookstack:latest appkeyKopieer de afgedrukte 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-stoppedAPP_URL moet overeenkomen met het adres dat lezers daadwerkelijk invoeren, inclusief het schema en een eventuele poort. Stel deze waarde in op http://localhost en lever de site vervolgens via HTTPS. Anders verwijzen gegenereerde koppelingen en omleidingen naar de verkeerde host. Lezers zien dan een aanmeldpagina die steeds naar zichzelf terugverwijst. Als compose-bestanden nieuw voor u zijn, begin dan met de basisbeginselen van Docker Compose op een VPS voordat u deze handleiding volgt.
Start de toepassing en controleer of de toepassing antwoordt, niet alleen of de container actief is:
docker compose up -d
docker compose ps
curl -sI http://127.0.0.1:6875/loginEen 200 OK betekent dat de PHP-toepassing is gestart en de database heeft bereikt. Een 500 betekent bijna altijd dat APP_KEY leeg is of dat de databasegegevens niet overeenkomen. docker compose logs bookstack geeft aan welke van de twee oorzaken van toepassing is.
Wiki.js: een boomstructuur, meerdere editors
Wiki.js is een Node.js-toepassing. De gedocumenteerde Docker-configuratie gebruikt PostgreSQL, maar de software ondersteunt ook MySQL, MariaDB, MSSQL en SQLite. 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 samen voordat u het bestand uitvoert, omdat ze één referentie vormen en de voorbeeldwaarde openbaar is. De tag is bewust vastgezet op ghcr.io/requarks/wiki:2. In de documentatie wordt latest afgeraden, omdat een sprong naar een hoofdversie het databaseschema van een actieve instantie wijzigt.
Versie 2 is de versie die u moet gebruiken. In juli 2026 is de nieuwste release van versie 2 2.5.314, uitgebracht in mei 2026. Versie 3 bestaat ook. In de bijbehorende documentatie staat: "This site is for the unstable beta release of Wiki.js 3.0. You should NOT install this in production." Beschouw de tag :3 als een preview.
Bij de eerste keer openen leidt Wiki.js u door een installatie in de browser, waarmee het beheerdersaccount wordt aangemaakt. Totdat u deze installatie hebt voltooid, krijgt iedereen die de poort kan bereiken deze wizard te zien. Plaats de service daarom achter uw reverse proxy en TLS (transportlaagbeveiliging) voordat u de firewall opent. Een wiki met een eigen hostnaam past vanzelfsprekend achter Traefik vóór meerdere Docker-apps wanneer de server meer dan deze ene service host.
De keuze van de editor is de reden waarom mensen voor Wiki.js kiezen. Eén instantie kan Markdown-pagina's, pagina's met een visuele editor, pagina's met onbewerkte HTML en AsciiDoc-pagina's naast elkaar bevatten. Dat is handig wanneer u oude inhoud importeert in een indeling die u liever niet converteert. Het kan er ook toe leiden dat één wiki vier verschillende huisstijlen bevat. Kies daarom op de eerste dag de standaardeditor en leg die beslissing vast.
Outline: de beste editor, de zwaarste vereisten
Met Outline bedoelen mensen meestal iets dat aanvoelt als een commerciële notitieapplicatie. Het is een Node.js-toepassing. De huidige release van juli 2026 is 1.9.2. Het voorbeeldbestand voor de omgeving vermeldt wat nodig is: PostgreSQL via DATABASE_URL, Redis via REDIS_URL, twee willekeurige geheimen en een publiek bereikbare URL.
openssl rand -hex 32
openssl rand -hex 32Voer dit tweemaal uit en bewaar beide waarden. De eerste wordt SECRET_KEY en 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/dataPGSSLMODE=disable is alleen correct wanneer de database zich op dezelfde machine of op hetzelfde Docker-netwerk bevindt. Laat deze instelling weg voor een database die via een netwerk wordt bereikt. Anders wordt de verbinding onversleuteld uitgevoerd. Bijlagen vereisen niet langer objectopslag: FILE_STORAGE=local schrijft uploads naar de bovenstaande directory. Deze directory moet een volume zijn waarnaar de container kan schrijven en dat in uw back-ups wordt opgenomen. Stel FILE_STORAGE=s3 in met de waarden AWS_* als u deze bestanden in een S3-compatibele bucket wilt opslaan.
Dan volgt het deel dat veel mensen verrast. Outline heeft geen ingebouwde aanmelding met gebruikersnaam en wachtwoord. In de eigen voorbeeldconfiguratie staat dat aanmeldingsgegevens van een externe provider vereist zijn: "at least ONE OF these is required for a working installation or you'll have no sign-in options". De gedocumenteerde providers zijn Google, Slack, Microsoft Entra, Discord en elke generieke OpenID Connect-server (OIDC) via OIDC_CLIENT_ID, OIDC_CLIENT_SECRET, OIDC_AUTH_URI, OIDC_TOKEN_URI en OIDC_USERINFO_URI.
De werkelijke vereisten voor Outline zijn dus Outline, PostgreSQL, Redis en een identityprovider. Als uw team al aanmeldt 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 iets als Keycloak of Authentik zelf. Dat is een tweede service die moet worden gepatcht en geback-upt. Houd daar rekening mee in uw geheug toewijzing: de eigen richtlijn van Outline is ongeveer 512 MB per webproces, ingesteld met WEB_CONCURRENCY, boven op de database en Redis.
Hoe elke oplossing bepaalt wie wat mag lezen
BookStack heeft standaard lokale accounts met e-mail en wachtwoord en ondersteunt LDAP, SAML2 en OIDC als alternatieven. U stelt machtigingen per rol in en kunt deze overschrijven voor één shelf, book, chapter of page. Omdat de hiërarchie vaststaat, erven onderliggende niveaus de machtigingen op een voorspelbare manier.
Wiki.js wordt ook geleverd met lokale accounts en voegt een lange lijst strategieën toe die u in het beheergebied inschakelt. De paginaregels staan toegang toe of weigeren die op basis van een padpatroon. Dat is krachtig, maar u kunt dit gemakkelijk verkeerd instellen, omdat een regel voor ops/* stilzwijgend geldt voor elke pagina die u later onder dat pad opslaat.
Outline laat deze vraag volledig over aan uw identity provider. Het lidmaatschap volgt uw identity provider. Binnen Outline beheert u de toegang per collection en per group. Wanneer iemand het bedrijf verlaat, blijft er geen lokaal account achter. Dat is een belangrijk voordeel wanneer de identity provider al het systeem is waarmee u toegang intrekt.
Hoe zoeken in elk systeem werkt
Zoeken bepaalt of een wiki zijn plaats verdient of verandert in een map met vergeten bestanden.
BookStack doorzoekt de database en biedt lezers een querytaal die zij in een minuut kunnen leren. Als u een woordgroep tussen aanhalingstekens plaatst, zoals in "london meeting", is exact die tekenreeks vereist. Met vierkante haken zoekt u naar tags: [location=london] komt overeen op basis van de tagnaam, de waarde of beide, met vergelijkingen zoals !=, >= en like. Met accolades filtert u op metadata, zoals in {created_after:2016-12-30}. U kunt elke exacte term, tagterm of filterterm uitsluiten door deze vooraf te laten gaan door -. BookStack beperkt het aantal termen van elk type dat één query mag bevatten. Een zeer lange query wordt daarom ingekort in plaats van uitgevoerd.
Wiki.js behandelt zoeken als een module die u kunt verwisselen. De gedocumenteerde engines zijn een basisengine voor databases, een PostgreSQL-engine, Elasticsearch, Algolia, AWS CloudSearch en Azure Search. De basisengine volstaat voor enkele honderden pagina's. Als u PostgreSQL gebruikt, schakelt u in het beheergedeelte over naar de PostgreSQL-engine. Deze gebruikt de eigen full-textindex van de database in plaats van eenvoudige overeenkomsten. Gebruik Elasticsearch alleen voor een wiki die groot genoeg is om een tweede zoekservice te beheren en te patchen.
Outline doorzoekt PostgreSQL full-textindexes. U kunt geen engine kiezen en er valt niets af te stemmen. Het systeem doorzoekt ook de tekst in geüploade documenten. Voor een teamwiki met enkele duizenden documenten vergt dit van de drie opties het minste werk. Als de zoekfunctie ooit niet snel genoeg meer is, is er bovendien geen instelling waarmee u dit kunt verbeteren.
Welke past bij u
Kies BookStack als u de wiki vanmiddag operationeel wilt hebben en liever over inhoud discussieert dan over structuur. Het heeft de minste bewegende onderdelen: 1 PHP-toepassing en 1 MySQL-database. Het is geschikt voor interne runbooks en klantdocumentatie, en voor teams waarvan de meeste auteurs geen engineers zijn. Het is ook het eenvoudigst van de drie om te back-uppen, omdat de volledige status bestaat uit 1 database-dump en de map met uploads.
Kies Wiki.js als u een specifieke editor of een specifieke authenticatiestrategie nodig hebt die de andere opties niet bieden, of als u een grote hoeveelheid bestaande Markdown of AsciiDoc importeert en de padstructuur wilt behouden. Accepteer dat u een zwaardere stack beheert en leg de major-version-tag vast.
Kies Outline als schrij kwaliteit het belangrijkst is, de wiki voor een team en niet voor het publiek bedoeld is, en u al over een identity provider beschikt. Die configuratie levert u een editor op die mensen daadwerkelijk prettig vinden om te gebruiken. Kies het niet als uw eerste self-hosted toepassing.
Als geen van de drie past, ligt dat meestal aan het inhoudstype. Gescande facturen en contracten horen in een documentbeheersysteem zoals Paperless-ngx en niet in een wiki. Ze daarin onderbrengen is de reden dat zoveel wiki's uiteindelijk worden verlaten. Zie de shortlist voor self-hosting in 2026 voor een breder overzicht van wat nog meer een plaats op uw eigen server verdient.
Grootte en back-ups
Alle drie passen op een kleine VPS. De realistische ondergrens verschilt door wat er achter elke toepassing draait. BookStack bestaat uit één applicatieproces en MySQL. Wiki.js bestaat uit een Node-proces en PostgreSQL. Outline bestaat uit een Node-proces, PostgreSQL en Redis, meestal met daarnaast een identityprovider. Daarom moet u voor Outline extra geheugen reserveren.
Maak samen een back-up van de database en de uploads. Zet beide eerst eenmaal terug in een tijdelijke instantie voordat u op die back-up vertrouwt. Een wiki-back-up die nooit is teruggezet, is slechts een aanname. Voor BookStack betekent dit mysqldump plus het volume /config. Voor Wiki.js en Outline betekent dit pg_dump plus het datavolume. Voor Outline moet u ook alles meenemen 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. Het project levert een installatiescript voor Ubuntu 24.04 dat Apache, MySQL 8.0 en PHP 8.3 in één keer instelt. De containerimage heeft alleen een APP_KEY en databasegegevens nodig. Wiki.js voegt een Node-runtime en een PostgreSQL-server toe. Outline voegt daar Redis en een externe identityprovider aan toe.
Kan ik Outline gebruiken zonder Google of een andere SSO-provider?
Nee. Outline heeft geen lokale aanmelding met gebruikersnaam en wachtwoord. In de voorbeeldconfiguratie staat dat ten minste één externe aanmeldingsprovider vereist is. Zonder provider hebt u helemaal geen aanmeldingsopties. U kunt Google, Slack, Microsoft Entra, Discord of een algemene OpenID Connect-server gebruiken, zoals een zelf-gehoste Keycloak- of Authentik-server. Het beheer van die provider maakt deel uit van de kosten voor het uitvoeren van Outline.
Moet ik Wiki.js 3 of Wiki.js 2 installeren?
Versie 2. In juli 2026 is de nieuwste release van versie 2 2.5.314, uitgebracht in mei 2026. In de documentatie voor versie 3 staat duidelijk dat dit een instabiele bètaversie is die u niet in productie moet installeren. Leg uw image vast op ghcr.io/requarks/wiki:2 in plaats van latest. Een wijziging van de hoofdversie verandert namelijk het databaseschema van een actieve instantie.
Welke heeft de beste zoekfunctie?
Ze zijn elk op een ander gebied sterk. BookStack biedt lezers een querytaal met exacte woordgroepen, tagfilters zoals [location=london] en metadatafilters zoals {created_after:2016-12-30}. Elk van deze termen kan worden uitgesloten met een voorloop--. Outline vereist geen configuratie en doorzoekt de tekst in geüploade bestanden. Wiki.js kan het meest uitgebreid worden afgestemd, omdat u de engine kiest. De PostgreSQL-engine is het overwegen waard zodra uw wiki meer dan enkele honderden pagina's bevat.
Kan ik mijn inhoud later van de ene naar de andere oplossing verplaatsen?
Gedeeltelijk. Houd rekening met handmatig werk. Alle drie kunnen Markdown exporteren en importeren, zodat de pagin tekst meestal behouden blijft. De structuur wordt niet goed behouden. Boeken en hoofdstukken van BookStack hebben geen equivalent in de geneste documenten van Outline. De paden van Wiki.js kunnen niet worden gekoppeld aan de vaste hiërarchie van BookStack. Bijlagen, machtigingen en paginageschiedenis gaan waarschijnlijk het vaakst verloren. Exporteer daarom een voorbeeld en controleer deze onderdelen voordat u voor een migratie kiest.