最稳定易维护的部署方式是Docker+docker-compose:用nriver/trilium-cn镜像,挂载/etc/localtime和/etc/timezone确保时区正确,设置trilium-data目录属主为1001并赋权755,端口映射8080,通过Nginx反代支持HTTPS。

Trilium 在 Linux 上最稳定、最易维护的部署方式是 Docker + docker-compose,不推荐直接运行二进制或 Systemd 服务——后者容易因 libstdc++.so.6 版本过低、时区缺失、数据路径权限错乱等问题启动失败。
用 docker-compose 启动 Trilium 容器(含中文支持)
官方镜像 triliumnext/trilium:latest 默认英文界面,若需开箱即用中文,优先选社区维护的中文镜像 nriver/trilium-cn,它已预置语言包和常用插件。
- 创建项目目录并进入:
mkdir -p ~/trilium && cd ~/trilium
- 新建
docker-compose.yml,内容如下(端口映射为8080,数据卷绑定到当前目录下的trilium-data):version: '3' services: trilium: image: nriver/trilium-cn:latest restart: unless-stopped ports: - '8080:8080' volumes: - ./trilium-data:/root/trilium-data environment: - TRILIUM_DATA_DIR=/root/trilium-data # 必加:否则容器内时区错误,导致笔记创建时间/同步时间错乱 volumes: - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro - 执行启动:
docker-compose up -d
- 首次访问
@#@#@#@#@#@#@#@#@#@0会强制要求设置管理员密码,该密码无法重置,务必记牢。
为什么不能跳过 /etc/localtime 挂载?
Trilium 的版本控制、同步时间戳、日历视图全部依赖容器内系统时间。Docker 默认使用 UTC,而宿主机多为本地时区(如 CST)。不挂载 /etc/localtime 会导致:
- 笔记修改时间显示比实际晚 8 小时(CST → UTC)
-
api/health-check返回的时间字段异常,影响某些脚本判断 - 日历视图中“今日”永远错位,新建日志条目自动归到昨日
验证是否生效:进入容器执行 date,输出应与宿主机 date 完全一致。
trilium-data 目录权限问题怎么破?
trilium-data 是持久化核心,但容器以 UID 1001(非 root)运行,若宿主机目录属主是 root 或权限为 755,容器会因无法写入而静默退出。
- 启动前确保目录可写:
mkdir -p trilium-data sudo chown -R 1001:1001 trilium-data chmod -R 755 trilium-data
- 若已启动失败,先
docker-compose down,再修正权限,最后up -d - 切勿用
sudo docker-compose up:这会让容器进程继承 root 权限,后续升级或备份时反而更难处理权限继承链
如何让 Trilium 通过域名 + HTTPS 访问?
Trilium 自身不提供 HTTPS 终止,必须前置反代。Nginx 是最轻量选择,关键配置点:
- 关闭
proxy_buffering,否则 Mermaid 图表、大型画布加载卡顿 - 必须透传
Upgrade和Connection头,否则 WebSocket 连接失败,导致实时同步中断 - 示例片段(放在 server 块内):
location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_buffering off; }
反代后,还需在 Trilium 管理后台 → Settings → General → Base URL 填写你的完整域名(如 @#@#@#@#@#@#@#@#@#@1),否则剪藏、导出链接仍带 @#@#@#@#@#@#@#@#@#@0。
真正麻烦的不是安装,而是第一次打开浏览器输完密码后,发现所有时间都偏了 8 小时,或者新建笔记点保存没反应——那八成是 /etc/localtime 没挂对,或 trilium-data 权限锁死了写入。











