Wiki.js

Wiki.js

What is it?

Wiki.js is a self-hosted wiki that runs on Node.js, released under AGPL-3.0. Pages are written in Markdown, AsciiDoc, raw HTML or a visual editor. The database holds the content, and a storage module can keep it in sync with a Git repository. BookStack files everything under shelves, books, chapters and pages; Wiki.js never asks you to create a folder. Each page lives at a path such as /infra/backups, and the tree is inferred from those paths.

The self-hosted wiki comparison weighs this path-based layout, and the state of Wiki.js's two versions, against the other wikis.

Why is it interesting?

  • Two-way Git sync: the Git module pushes pages to a remote repository and pulls back whatever changed there, on the schedule you set. Fix a page in your code editor, push it, and the wiki picks it up.
  • Switch editors later: since 2.5.201, the Convert action moves a page from Markdown to the visual editor or raw HTML, and back. Wiki.js snapshots the page before converting and keeps that snapshot in its history.
  • Path-based permissions: each group pairs global permissions with page rules that match an exact path, a prefix, a suffix or a regex. One group can read /clients and never see /hr.
  • Local accounts or your company directory: built-in accounts with self-registration and password recovery, or sign-in through LDAP, SAML, CAS, Okta, Azure AD, generic OAuth2 and OpenID Connect. Two-factor authentication is available on the modules that support it.
  • Search with nothing extra to run: the default engine queries the database. On PostgreSQL a dedicated module uses the pg_trgm extension, and Elasticsearch, Algolia or Azure Search can take over.

Good to know

Run 2.x in production; 3.0 is a beta. The stable release is 2.5.316, published on 2 October 2026. Its releases now come from a separate repository, requarks/wiki-v2, described as the maintenance version. The main repository now carries 3.0: first alpha on 30 August 2026, latest beta (3.0.0-beta.628) on 4 October. The README and every release note mark it "NOT FOR PRODUCTION USE", and neither js.wiki, beta.js.wiki nor the docs give a date for the final release. 3.0 brings simultaneous editing with live cursors, something Outline already does; the 2.x docs say nothing about it.

PostgreSQL becomes mandatory with 3.0. 2.x needs Node.js 22 or 24 and recommends PostgreSQL 9.5 or later, but also runs on MySQL 8, MariaDB 10.2.7, SQL Server 2012 and SQLite 3.9 or newer, with SQLite not recommended for production. 3.x requires PostgreSQL 16, 17 or 18 with the ltree and pg_trgm extensions, and Node.js 26 and nothing older. Both call for at least 1 GB of RAM on Linux and recommend two cores. The 3.x Docker image is about 850 MB.

No in-place upgrade. Going from 2.x to 3.0 means exporting a .wkbackup package from the latest 2.x and importing it into a fresh instance. Module settings, storage and authentication included, do not carry over, so Git sync and SSO have to be set up again. draw.io diagrams and tabsets written in 2.x Markdown syntax need converting by hand.

A dedicated domain or subdomain. Wiki.js cannot be installed under a subfolder like /wiki/, and the 3.x docs say that will not change. The Git module likewise wants a whole repository, not a subfolder or a submodule.

Network copyleft. BookStack is MIT. Outline is under BSL 1.1, which forbids running it as a commercial document service for third parties. Wiki.js is AGPL-3.0: a modified instance that people use over a network has to offer them its source code.

One main developer. NGPixel has 2,157 commits in the repository against 14 for the next contributor, and the last 100 commits on the 3.0 branch are all his.