Wiki.js
Wiki.js is an open-source, self-hosted wiki built on Node.js. It ships with a modern editor, granular permissions, and a choice of database engines, and it’s the app most often set against BookStack in self-hosted wiki debates. Both are free. Both get regular releases. The decision between them usually comes down to how you want content stored and who’s allowed to touch it.
License: GNU Affero General Public License v3.0 (AGPL-3.0), confirmed directly from the LICENSE file in the requarks/wiki GitHub repository. It’s free for commercial and self-hosted use. The AGPL’s source-sharing clause only kicks in if you modify Wiki.js’s own code and distribute that modified version; running the stock app for your own team doesn’t trigger anything.
Quick facts: official site js.wiki · source github.com/requarks/wiki · latest stable v2.5.314 · Docker image published as ghcr.io/requarks/wiki and requarks/wiki · over 28,000 GitHub stars · maintained by Requarks.io since 2017.
What Wiki.js actually does
Pages are flat documents navigated through a sidebar tree, not BookStack’s fixed Shelves > Books > Chapters > Pages hierarchy. You can write in Markdown, in a WYSIWYG builder, or in plain HTML, and every edit gets versioned, so a page can be rolled back or diffed against an earlier revision.
Authentication and storage are where Wiki.js actually pulls ahead of most self-hosted wikis. Login options run from Google, Microsoft, GitHub, Discord and Slack down to enterprise protocols like LDAP, SAML, Azure AD and generic OAuth2/OIDC, with two-factor authentication as an option on top. On storage, Wiki.js can sync content to a Git repository instead of, or alongside, the database. That’s the one feature homelab users bring up most when explaining why they picked it over BookStack. Search runs on a built-in, zero-config engine by default; Elasticsearch, Algolia and Azure Search are there if a wiki outgrows it.
Installing Wiki.js with Docker
Wiki.js publishes its own Docker images: ghcr.io/requarks/wiki on GitHub Container Registry, and requarks/wiki on Docker Hub. That’s a real difference from BookStack, which has no first-party image and relies on a community build instead. The docs recommend pinning the major version tag (:2) rather than :latest, and pairing it with PostgreSQL, the only database that survives once Wiki.js 3.x ships.
services:
db:
image: postgres:15-alpine
environment:
POSTGRES_DB: wiki
POSTGRES_PASSWORD: wikijsrocks
POSTGRES_USER: wikijs
restart: unless-stopped
volumes:
- db-data:/var/lib/postgresql/data
wiki:
image: ghcr.io/requarks/wiki:2
depends_on:
- db
environment:
DB_TYPE: postgres
DB_HOST: db
DB_PORT: 5432
DB_USER: wikijs
DB_PASS: wikijsrocks
DB_NAME: wiki
restart: unless-stopped
ports:
- "3000:3000"
volumes:
db-data:
- Save the file above as docker-compose.yml and change both database passwords before the first run.
- Run docker compose up -d. Give the database a moment to initialize; Wiki.js needs it ready before its own startup finishes.
- Open http://your-server-ip:3000 and complete the setup wizard to create the first administrator account.
- Put a reverse proxy such as Nginx Proxy Manager or Caddy in front of the container for HTTPS. Wiki.js needs a dedicated subdomain and can’t be mapped to a URL subfolder.
docker compose up -d
docker compose logs -f wiki
Hardware: Wiki.js runs fine on a single CPU core, though the official requirements recommend two or more for the background workers, and it needs at least 1GB of RAM on Linux (a bit more on Windows or macOS). It scales down to a Raspberry Pi and up to a full VM without much fuss. Hardware isn’t usually the limiting factor here: the database and the mandatory dedicated subdomain are the two things actually worth planning around.
Before you deploy: Wiki.js needs its own subdomain, something like wiki.example.com. It cannot run from a subfolder of an existing domain, full stop. SQLite is listed as a supported database, but the docs call it “not recommended for production,” and it’s one of four engines (MySQL, MariaDB, MS SQL Server and SQLite) being dropped once Wiki.js 3.x ships. PostgreSQL is really the only long-term choice here.
Wiki.js vs BookStack
Pick BookStack when you’d rather the structure was decided for you: Shelves, Books, Chapters and Pages force a consistent hierarchy, the WYSIWYG editor is friendlier for non-technical contributors, and MIT licensing keeps things simple. Pick Wiki.js when you want more control over storage and login instead. The optional Git-backed sync, the choice of database, and the longer authentication list matter more to teams that already run their own identity provider. Neither is a wrong call for a homelab. BookStack tends to win with documentation-first teams; Wiki.js wins with teams that already think in Git.
- Official Docker images from the project itself, on both GHCR and Docker Hub
- Choice of database engines today, plus Git-backed content sync as a genuinely different storage model
- Deep authentication support: LDAP, SAML, OAuth2/OIDC, social logins, and 2FA
- Actively maintained, with more than 28,000 GitHub stars and regular releases
- AGPL-3.0 is more restrictive than BookStack’s MIT license if you plan to build on and redistribute the code
- Requires a dedicated subdomain, unlike tools that tolerate a subfolder
- MySQL, MariaDB, MS SQL Server and SQLite are all being retired in the next major version
- No third-party plugin marketplace, just a fixed set of modules you toggle on or off
Still picking the hardware to run this on? Our homelab setup guide for beginners covers that first machine. And since Wiki.js needs a real subdomain, Nginx Proxy Manager or Caddy are the two reverse proxies most homelabbers already have in place to issue the HTTPS certificate for it.
FAQ
Is Wiki.js free to use?
Yes. It’s released under AGPL-3.0 with no paid tier and no feature paywall. The source-sharing requirement only applies if you modify Wiki.js’s own code and distribute that version publicly; running the stock software for your own team doesn’t trigger it.
What database does Wiki.js need?
PostgreSQL 9.5 or later is the officially recommended choice. MySQL 8.0+, MariaDB 10.2.7+, MS SQL Server 2012+ and SQLite 3.9+ are all currently supported too, but everything except PostgreSQL is being dropped in the next major version, and SQLite isn’t recommended for production even now.
Wiki.js or BookStack for a homelab wiki?
Both are solid, free options. BookStack’s fixed structure and WYSIWYG-first editing suit non-technical contributors better; Wiki.js’s Git-backed storage and wider authentication options suit teams that want more control over storage and login. Neither is a wrong choice.
Can Wiki.js run without Docker?
Yes. It’s a Node.js app, so it runs natively on Linux, macOS or Windows with Node 22 or 24 installed, alongside a supported database. Docker’s just the fastest path, since the image already bundles the right Node.js version.
Does Wiki.js support single sign-on?
Yes. Beyond local accounts and social logins, Wiki.js includes LDAP, SAML, CAS, Auth0, Okta and Azure AD modules, plus generic OAuth2 and OpenID Connect for identity providers that don’t have a dedicated module.