Wiki.js
A modern, self-hosted wiki platform built on Node.js with a rich plugin ecosystem for authentication, search, storage, and rendering that adapts to any team's infrastructure.
Wiki.js is a mature, open-source wiki application built with Node.js and Vue.js that gives teams full control over their knowledge base without sacrificing editorial experience. It provides a dual-mode editing environment — a polished WYSIWYG editor for non-technical contributors alongside a Markdown editor with live preview for developers — so teams of mixed technical backgrounds can collaborate naturally on the same documentation.
The platform is designed around a plugin architecture where virtually every operational concern is swappable: choose between nine search backends (PostgreSQL full-text, Elasticsearch, Algolia, Solr, Azure Search, and more), fifteen authentication providers (LDAP, SAML, OIDC, GitHub, Google, Azure AD, Okta, and others), and a dozen storage targets (Git, S3, Azure Blob, Google Drive, SFTP, and more). This makes Wiki.js equally at home in a startup deploying to Docker Compose and an enterprise running on Kubernetes with SAML SSO and object storage.
With over ten years of active development, 28,000+ GitHub stars, and support for 40+ languages including RTL scripts, Wiki.js has established itself as the de facto self-hosted alternative to Confluence and Notion. It ships with full version history, page diffing and rollback, diagram generation via Mermaid.js, math expression rendering, code syntax highlighting, and granular role-based access control — all manageable through a comprehensive admin dashboard without touching configuration files.
Deployment is straightforward via Docker (with an official Helm chart for Kubernetes), npm install, or pre-built binary packages. The application connects to PostgreSQL, MySQL, MariaDB, MS SQL Server, or SQLite, supports SSL connections, and exposes a full GraphQL API for programmatic access and integrations.
What You Get
- WYSIWYG Visual Editor - A fully featured block editor with drag-and-drop reordering, inline formatting toolbar, table insertion, and live preview so non-technical writers can contribute without learning Markdown.
- Markdown Editor with Live Preview - Side-by-side Markdown editing with syntax highlighting, keyboard shortcuts, and real-time rendered output for developers who prefer plain text authoring.
- Version History and Page Rollback - Every page save is versioned with a full diff viewer, allowing editors to compare any two historical versions, restore a prior state, or branch off an old version as a new page.
- Swappable Search Backends - Nine search engine integrations including PostgreSQL native full-text search (tsvector with pg_trgm), Elasticsearch, Algolia, Solr, Azure Cognitive Search, Sphinx, and Manticore — select the one that fits your infrastructure.
- Multi-Provider Authentication - Fifteen authentication modules covering LDAP/Active Directory, SAML 2.0, CAS, OpenID Connect, OAuth2, and major social/cloud providers (GitHub, Google, Microsoft, Discord, Slack, Keycloak, Okta, Auth0, Firebase) with 2FA support.
- Flexible Storage Backends - Sync wiki content to Git repositories, AWS S3, Azure Blob, Google Drive, DigitalOcean Spaces, Dropbox, OneDrive, SFTP, or local disk — including multi-target synchronization for redundancy.
- Diagram and Math Rendering - Built-in Mermaid.js integration for UML, flowchart, sequence, and Gantt diagrams; TeX/MathML rendering for mathematical expressions directly in page content.
- Multi-Language and RTL Support - Interface and content support for 40+ languages with full right-to-left layout for Arabic, Hebrew, Persian, and other RTL scripts, plus per-page locale assignment.
- Granular Role-Based Permissions - Group-based access control with page-level and path-level permission rules, self-registration options, and an admin-managed group hierarchy that controls read, write, comment, and manage scopes.
- Full GraphQL API - Every wiki operation — page CRUD, user management, authentication, search, and settings — is exposed through a schema-first Apollo Server GraphQL API with authorization directives.
- Comprehensive Admin Dashboard - A Vue-based admin interface covering analytics, storage configuration, search engine setup, authentication strategy management, user/group administration, and system diagnostics without file editing.
- Multiple Rendering Engines - Pluggable content renderers for Markdown (with markdown-it and plugins), AsciiDoc, and HTML, with a configurable pipeline that applies code highlighting, diagram rendering, math, and sanitization in sequence.
Common Use Cases
- Engineering team documentation hub - A software team runs Wiki.js connected to PostgreSQL full-text search and a Git storage backend, so all documentation is version-controlled in a repository and searchable with typo-tolerant queries across thousands of pages.
- Enterprise intranet knowledge base - An IT department deploys Wiki.js behind a corporate SAML 2.0 identity provider, mapping Active Directory groups to wiki permission groups so employees access only the pages relevant to their department.
- Open-source project documentation - A project maintainer hosts a public Wiki.js instance with read permissions open to the world and write permissions scoped to maintainers authenticated via GitHub OAuth, rendering technical guides with code blocks and Mermaid diagrams.
- Replacing Confluence in a cost-reduction initiative - A company migrating off Confluence exports pages to HTML, imports them into Wiki.js running on Kubernetes via Helm, and connects Okta SSO — maintaining the same user experience at a fraction of the licensing cost.
- Multilingual product knowledge base - A global SaaS company maintains Wiki.js with locale-separated page trees for English, Arabic, Japanese, and German, with RTL layout automatically applied for right-to-left readers and per-locale search indexing.
- Regulated-industry private wiki - A healthcare organization runs Wiki.js on-premises with SFTP storage for audit-trail exports, LDAP authentication, and no external network dependencies, satisfying data residency requirements while providing a modern editing experience.
Under The Hood
Architecture
Wiki.js follows a modular, layered server architecture built around a global application singleton that coordinates initialization of independently loaded subsystems — database, cache, scheduler, authentication, search, storage, and rendering. The backend uses Express as the HTTP layer feeding a schema-first Apollo Server GraphQL API, where authorization is enforced via a custom @auth schema directive that gates resolver execution based on the requesting user’s permission scopes rather than scattering access checks through business logic. Data access is handled by Objection.js (built on Knex) with model classes that encapsulate query logic for each domain entity, cleanly separated from the GraphQL resolver layer. The most architecturally significant choice is the plugin system: authentication, search, storage, rendering, logging, analytics, editors, and comments are all loaded at runtime from disk using auto-load, making the core application logic independent of which implementations are active. This means adding a new search backend or authentication provider requires no changes to core code.
Tech Stack
The server runs on Node.js (requiring v20+) with Express handling HTTP and Apollo Server 2.x providing the GraphQL endpoint backed by schema-first .graphql definition files. Database access uses Knex for multi-dialect SQL (PostgreSQL, MySQL, MariaDB, MS SQL Server, SQLite) with Objection.js models layered on top. The frontend is built with Vue 2 and Vuex for state management, bundled via Webpack with separate development and production configurations, and served as a single-page application. Authentication is implemented via Passport.js with per-strategy adapters for each provider. The search subsystem includes nine pluggable engines, with the PostgreSQL engine using native tsvector columns, ts_stat word extraction, and pg_trgm trigram indexing for fuzzy word suggestions. Infrastructure is covered by a Docker image, Docker Compose example, and a Helm chart for Kubernetes deployment.
Code Quality
Test coverage is limited — the repository contains a single Jest test file covering the injectPageMetadata helper, along with a Cypress configuration for end-to-end browser testing (though no Cypress specs are present in the cloned tree). The test strategy leans heavily on integration and manual testing rather than unit coverage. Code style is enforced via ESLint with the StandardJS ruleset across both server and client JavaScript, and pug-lint validates server-side Pug templates. The test npm script runs ESLint, pug-lint, and Jest in sequence, so the linting standards are wired into the test lifecycle. Error handling relies primarily on try/catch blocks with Winston-based logging rather than typed error classes, and the global WIKI singleton — while pragmatic for a self-hosted application — creates implicit coupling that makes unit testing individual modules without the full application context difficult.
What Makes It Unique
The breadth of the plugin ecosystem is what genuinely differentiates Wiki.js: nine search backends, fifteen authentication providers, twelve storage targets, and multiple rendering engines are all live-configurable from the admin UI without restarting the server or editing YAML files. The built-in PostgreSQL full-text search implementation is a standout technical detail — it builds a tsvector index with a separate word suggestion table using pg_trgm trigram indexing for fuzzy autocomplete, delivering Elasticsearch-quality search experience using the same database the wiki already depends on. The storage synchronization system is also unusual: content can be simultaneously synced to multiple targets (e.g., both Git and S3), enabling audit trails, disaster recovery, and external pipeline integration in a single configuration step.
Self-Hosting
Wiki.js is licensed under the GNU Affero General Public License version 3 (AGPL-3.0). In practical terms this means you can use Wiki.js commercially, modify the source code, and deploy it privately without cost or royalty — but if you distribute a modified version or expose it as a networked service, you must make your modifications available under the same AGPL-3.0 license. For internal use as a company intranet wiki, the AGPL imposes no restrictions: you are not distributing the software, you are using it. The license only becomes a consideration if your business involves hosting Wiki.js as a service for external users with modifications to the source code.
Running Wiki.js yourself means you are responsible for the full operational stack: provisioning a server or Kubernetes cluster, managing the database (PostgreSQL is the recommended choice for production), handling SSL certificates, performing backups, and applying updates when new releases are published. The project ships a Docker image and Helm chart that reduce the initial deployment effort, but ongoing maintenance — patching the Node.js runtime, database vacuuming, monitoring uptime, and keeping pace with the roughly monthly release cadence — falls entirely on your team. The application has no built-in backup mechanism beyond storage synchronization to Git or S3 backends, so database backups require a separate process.
There is no official paid or cloud-hosted tier from the core project maintainers — Wiki.js is exclusively self-hosted. This means you also forgo commercially backed support SLAs, managed upgrade paths, and guaranteed uptime guarantees that come with SaaS alternatives like Confluence Cloud or Notion. Community support is available through Discord and GitHub Issues, and the maintainer accepts sponsorships via GitHub Sponsors and Open Collective, but there is no enterprise support contract or priority issue resolution. Third-party managed hosting options exist (several hosting providers offer one-click Wiki.js deployments), but they are independent of the project and vary in support quality.
Related Apps
Zed
Developer Tools · Collaboration · Code Editors
High-performance, multiplayer code editor built in Rust by the creators of Atom and Tree-sitter, with native AI integration and real-time collaboration.
Zed
OtherAppFlowy
Productivity · Project Management · Collaboration
The open-source AI workspace that puts your data, your rules — with local LLMs, CRDT collaboration, and full self-hosting built in.
AppFlowy
AGPL 3.0AFFiNE
Productivity · Project Management · Note Taking
Write, draw, and plan in one infinite canvas — the open-source alternative to Notion and Miro that keeps your data yours.