Trilium
Hierarchical note-taking app that builds a personal knowledge base.
- Replaces
-
Paid note-taking services, such as Evernote and Notion.
- Difficulty
-
Difficulty: Easy
1 service, 3 volume mounts, no env values to set, no elevated host access. Heuristic score 1 of 11: easy.
- Stack
TypeScript (language)
- Deployment
docker_compose
- Requirements
Not stated.
- License
-
AGPL-3.0(OSI-approved open source)Read from github.com/TriliumNext/Trilium/blob/1f26d8c/LICENSE
- Business model
-
Unknown
The README at the pinned commit does not state a business model, so it stays unknown.
Source: github.com/TriliumNext/Trilium/blob/1f26d8c/README.md, read on .
- Repository
GitHub stats
- Stars
- 38,437
- Forks
- 2,593
- Open issues and pull requests
- 579
- Last push
- 2026-10-22
- Latest release
- v0.106.0
- Released
- 2026-09-25
From the GitHub API on . These numbers are a snapshot, not live. GitHub detected the license as AGPL-3.0.
Compose file
# Running `docker-compose up` will create/use the "trilium-data" directory next to this file
# To run in the background, use `docker-compose up -d`
services:
trilium:
# Optionally, replace `latest` with a version tag like `v0.90.3`
# Using `latest` may cause unintended updates to the container
image: triliumnext/trilium:latest
# Restart the container unless it was stopped by the user
restart: unless-stopped
ports:
# By default, Trilium will be available at http://localhost:8080
# It will also be accessible at http://<host-ip>:8080
# You might want to limit this with something like Docker Networks, reverse proxies, or firewall rules,
# however be aware that using UFW is known to not work with default Docker installations, see:
# https://docs.docker.com/engine/network/packet-filtering-firewalls/#docker-and-ufw
- '8080:8080'
volumes:
# Trilium stores its data in `trilium-data` next to this file. To use another directory
# on the host, change the part before the colon only.
- ./trilium-data:/home/node/trilium-data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
From the app's own repository: github.com/TriliumNext/Trilium/blob/1f26d8c/docker-compose.yml.
Compose file from the app repository.
Install
- Docker with the Compose plugin (github.com/TriliumNext/Trilium/blob/1f26d8c/docker-compose.yml)
A host with Docker and the Docker Compose plugin. This entry runs from a compose file.
- Save the compose file as docker-compose.yml (github.com/TriliumNext/Trilium/blob/1f26d8c/docker-compose.yml)
Use the compose file shown above.
- Start it (github.com/TriliumNext/Trilium/blob/1f26d8c/docker-compose.yml)
docker compose up -d - Open the app (github.com/TriliumNext/Trilium/blob/1f26d8c/docker-compose.yml)
Open http://localhost:8080. The compose file publishes host port 8080 for the trilium service.
Compose file check: config_ok on 2026-10-22.
Gotchas and maintenance
Gotchas
- Some images use the latest tag or no tag. Images without a pinned version: trilium: triliumnext/trilium:latest. A later pull can get a different version. (github.com/TriliumNext/Trilium/blob/1f26d8c/docker-compose.yml, checked 2026-10-22)
- The compose file publishes host ports. Host ports: 8080 (trilium). A port without a host address listens on all host network interfaces. (github.com/TriliumNext/Trilium/blob/1f26d8c/docker-compose.yml, checked 2026-10-22)
- The compose file mounts host folders. Host paths mounted into containers: ./trilium-data at /home/node/trilium-data (trilium), /etc/timezone at /etc/timezone (trilium), /etc/localtime at /etc/localtime (trilium). (github.com/TriliumNext/Trilium/blob/1f26d8c/docker-compose.yml, checked 2026-10-22)
Signals
- Open issues and pull requests: 579
- Last push: 2026-10-22 (0 days before this page was built)
- Latest release: v0.106.0 on 2026-09-25 (26 days before this page was built)