Modern Technology, Proven Concept
Knowledgeroot is a self-hosted wiki for teams and public knowledge bases. Pages live in a tree, every change is kept, and access is controlled per page.
Content
Organize pages in a hierarchy with unlimited depth. Move a page together with its subtree; links, labels, comments and attachments stay intact.
Tiptap-based editor with headings, lists, quotes, code blocks, tables, links and images. MIT-licensed, no editor license key required.
Every change is archived before it is overwritten. Compare versions side by side, restore an earlier one, and bring back deleted pages.
Search titles and content, with results limited to what the current user may read. Attach files to pages, stored on disk or in an S3-compatible bucket.
Collaboration and Access
Read and edit rights per page for users and groups. Subpages inherit from their parent by default; explicit exceptions are possible where needed.
Run a fully public knowledge base, a strictly internal one, or both in a single installation. Guest access is granted per page and can be revoked for a whole subtree.
Saving checks the page revision. If someone else saved first, your draft stays in the browser and nothing is silently overwritten.
PBKDF2 password hashing, login throttling per account and address, and optional password recovery by email.
Operations
Official images on Docker Hub, built and vulnerability-scanned in CI, running as a non-root user. The production profile refuses unsafe settings at startup.
Liveness and readiness endpoints for orchestrators and reverse proxies, plus metrics for Prometheus-style scraping.
JSON endpoints for pages, files, users and groups, enforcing the same permissions as the web interface.
BSD-2-Clause licensed. Java 25, Spring Boot 4 and MariaDB; schema upgrades run automatically with Liquibase.
Getting Started
Download
Current release candidate: v1.0.0-rc.3.
The latest image follows the main branch.
The JAR needs Java 25 and MariaDB; verify it with the
SHA256SUMS
from the release page, see below.
Docker Setup
Quick Start
Save the configuration below as docker-compose.yml and start it:
docker compose up -d
After starting, visit http://localhost:8080
Default Logins:
Login: user Password: password Login: admin Password: password
This setup is meant for trying Knowledgeroot locally: the demo logins and database password are public. For a hardened deployment behind HTTPS see docs/production.md.
Docker Compose Configuration
services:
app:
container_name: knowledgeroot_app
image: lordlamer/knowledgeroot:latest
environment:
# Development profile: demo logins admin/password and user/password, root database account allowed.
SPRING_PROFILES_ACTIVE: development
KR_DB_URL: jdbc:mariadb://mariadb:3306/knowledgeroot?createDatabaseIfNotExist=true&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Europe/Berlin
KR_DB_USER: root
KR_DB_PASSWORD: knowledgeroot
KR_STORAGE_DRIVER: file
KR_FILE_STORAGE_DIR: /var/lib/knowledgeroot/files
volumes:
- files:/var/lib/knowledgeroot/files
ports:
- "8080:8081"
depends_on:
mariadb:
condition: service_healthy
restart: unless-stopped
networks:
- knowledgeroot-network
mariadb:
container_name: knowledgeroot_mariadb
image: mariadb:12.3
environment:
MARIADB_ROOT_PASSWORD: knowledgeroot
MARIADB_DATABASE: knowledgeroot
volumes:
- mariadb:/var/lib/mysql
ports:
- "3306:3306"
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
interval: 10s
timeout: 5s
retries: 12
restart: unless-stopped
networks:
- knowledgeroot-network
networks:
knowledgeroot-network:
driver: bridge
volumes:
mariadb:
files:
Uploaded files are stored in the files volume; an S3-compatible store is optional
(KR_STORAGE_DRIVER=minio with the KR_MINIO_* variables).
Run the JAR without Docker
Every release tag also publishes the verified JAR as a
GitHub release,
together with SHA256SUMS, the release manifest and the audit reports.
It is the same JAR that ships inside the Docker image. You need Java 25 and a MariaDB server.
base=https://github.com/lordlamer/jknowledgeroot/releases/download/v1.0.0-rc.3 curl -fsSLO "$base/knowledgeroot-1.0.0-rc.3.jar" curl -fsSLO "$base/SHA256SUMS" sha256sum -c --ignore-missing SHA256SUMS export SPRING_PROFILES_ACTIVE=development export KR_DB_URL='jdbc:mariadb://localhost:3306/knowledgeroot?createDatabaseIfNotExist=true' export KR_DB_USER=root export KR_DB_PASSWORD=knowledgeroot export KR_STORAGE_DRIVER=file export KR_FILE_STORAGE_DIR=./files java -jar knowledgeroot-1.0.0-rc.3.jar
The application listens on http://localhost:8081 with the same demo logins as above.
For a production setup use the production profile with the variables described in
docs/installation.md and
docs/production.md.
Documentation
The documentation lives in the GitHub repository next to the code. The README is in English; the detailed guides are currently written in German.
Build, tests, initial administrator, page permissions, login and configuration overview.
First start, bootstrap administrator, demo mode and upgrading an existing installation.
Hardened compose setup, reverse proxy and HTTPS, separate database roles, backups.
Permission matrix, inheritance, guest access and how rights are enforced in UI and API.
Concurrent editing, viewing and restoring versions, deleted pages.
Local and S3-compatible storage, upload limits and cleanup.
Password rules, hash migration, login throttling and sessions.
Health probes, metrics, logs and alerting for container deployments.
What has been delivered, what is still open for 1.0, and how releases are built and verified.
Important Migration Notice
The PHP version of Knowledgeroot is no longer supported. Please migrate to the Java version. There is no automated upgrade path from the PHP version yet; content has to be migrated manually.
Upgrades between releases of the Java version are automatic: the database schema is migrated on startup. See docs/installation.md for the upgrade checklist.


