笔记软件用多了,最让人头痛的往往不是怎么写,而是随着笔记越积越多,传统的扁平标签和单层文件夹很快就会陷入混乱。如果你也在找一款能把散乱资料真正串成体系的工具,Trilium(社区分支 TriliumNext)绝对是自托管阵营里的宝藏。它以树形层级为骨架,最惊艳的特性在于支持“克隆笔记”——同一篇笔记可以挂在知识树的多个不同分支下,改动任意一处全树同步;配合自定义属性、代码笔记以及强大的关系图谱,非常适合知识越攒越多的重度折腾玩家。

本文基于官方分支最新实测的 v0.106.1 镜像编写,服务端默认监听 8080 端口。无论你用的是吃灰的轻量云服务器,还是家里的软路由、NAS,跟着本篇流程仅需几条命令即可完成落地。

成品长这样

容器跑起来后打开浏览器,你将看到一个极具生产力美感的经典工作台:左侧是支持无限层级嵌套的笔记树与每日时间轴日历,右侧支持多标签页并行编辑,无论是富文本、Markdown、代码段还是关系连线图都能丝滑呈现:

Trilium 主界面笔记树与日历
图 1:Trilium 主界面笔记树、日历检索与多标签页编辑区

准备工作

在正式敲命令之前,先花一分钟确认以下几项就绪情况:

  • 环境底座:一台装好 Docker 与 Docker Compose 插件的 Linux 主机(Ubuntu / Debian / AlmaLinux 均可,推荐 1 核 1G 内存以上配置)。
  • 网络端口:服务器云安全组或本机防火墙放行 8080 TCP 端口。如果后续打算挂 Nginx、Caddy 做 HTTPS 反向代理,也可以仅限本地监听。
  • 初始凭据:提前想好一个复杂度达标的登录密码,首次访问 Web 端初始化时会立即要求绑定管理员密码。
如果你使用的是公网轻量云服务器,建议不要长期直接裸跑 8080 端口。等基础容器验证成功后,尽快套上反向代理并开启 SSL 证书,既能保证输入密码时的传输安全,也便于绑定个人域名访问。

第一步:Docker Compose 部署

我们采用 Docker Compose 来统一管理容器定义和持久化目录,后续升级或者整机迁移只要拷走整个项目目录即可。

  1. 创建专属工作目录并进入:

    BASH
    mkdir -p ~/trilium && cd ~/trilium
  2. 新建 docker-compose.yml 配置文件:

    BASH
    version: '3.8'
    
    services:
      trilium:
        image: triliumnext/trilium:v0.106.1
        container_name: trilium
        restart: unless-stopped
        ports:
          - "8080:8080"
        environment:
          - TRILIUM_DATA_DIR=/home/node/trilium-data
        volumes:
          - ./trilium-data:/home/node/trilium-data
  3. 一键拉取镜像并在后台启动容器服务:

    BASH
    docker compose up -d
  4. 检查容器运行状态与初始化日志:

    BASH
    docker compose ps
    docker compose logs -f

    当日志中输出类似 Listening on port 8080 且状态保持为 Up 时,说明服务已经稳稳跑起来了。

核心数据全在一个文件里:上面配置中挂载的宿主机目录 ./trilium-data 是整个系统的心脏。Trilium 极其紧凑,你所有的笔记内容、思维导图、附件图片、属性定义与版本历史,本质上全都被整合写入到了该目录下的单个 SQLite 数据库文件 document.db 中。这意味着做灾备极其轻松,定时备份或者压缩这一个文件,就等于打包了你的整个第二大脑。
目录权限避坑:Trilium 官方镜像为了容器安全,内部是以非 root 用户 node(UID/GID 通常为 1000)运行的。如果你的宿主机当前目录是用 root 建立的,启动时可能会在日志中看到 EACCES: permission denied 错误。遇到这种情况只需在宿主机执行 sudo chown -R 1000:1000 ./trilium-data 赋予读写权限,然后重启容器即可。

第二步:初始化向导与设置密码

容器启动成功后,打开浏览器访问 http://你的服务器IP:8080。Trilium 首次运行时检测到数据目录下还没有数据库文件,会自动重定向进入全新的初始化向导。

初始化向导非常直观,整个流程只要跟着页面提示走即可:

  • 选择界面语言:在最上方选择语言下拉框中选中“简体中文”,整个向导和后续操作面板就会立刻无缝切换为中文显示。
  • 选择知识库模式:界面提供了新建知识库与同步现有客户端的选项,作为全新服务端,直接选择“我是新用户,我想新建一个 Trilium 知识库”。
  • 导入演示数据:向导会询问是否包含演示内容。强烈建议勾选“包含演示内容”,它会内置一套结构清晰的示例笔记树,里面有关系图、属性标签、代码笔记等多种用法样例,方便你第一时间直观感受 Trilium 独特的知识网状结构。
Trilium 初始化向导语言选择
图 2:Trilium 初始化向导首选简体中文并新建演示知识库

点击下一步进入“设置密码”页面。Trilium 采用的是单实例所有者机制,在这里输入你的登录密码并再次确认。这个密码将作为你管理 Web 端笔记以及后续绑定桌面端、移动端同步的核心安全凭据,请务必设置一个高强度密码并妥善保管。

Trilium 设置密码页
图 3:设置并确认 Trilium 管理员访问密码

确认无误后点击完成初始化。系统会自动创建底层 SQLite 数据库并完成预填充,随后跳转至用户登录页面。在登录框中输入刚刚设定好的密码,点击登录即可进入主工作台。

第三步:新建第一篇笔记

成功进入主界面后,左侧导航栏已经展开了刚才导入的“Trilium Demo”示例知识树。我们可以马上动手创建第一篇自己的笔记:

  1. 在左侧笔记树根节点或 Trilium Demo 文件夹上点击鼠标右键,在弹出的右键菜单中选择“新建子笔记”(快捷键为 Ctrl+N / Cmd+N)。

  2. 在中央编辑区上方将默认的笔记标题修改为“部署演示笔记”。

  3. 点击正文区域随手输入几句内容,例如记录下当前部署的日期、测试环境以及体验心得。Trilium 具备全自动静默保存机制,当你停止敲击键盘时,右上角状态栏会快速闪现并保持为“已保存”状态,所有变更瞬间落库,完全不需要手动去按保存按钮。

Trilium 部署演示笔记编辑页
图 4:在笔记树中新建“部署演示笔记”并实时编辑保存

当你完成编辑后,可以点击界面左下角的设置齿轮或个人头像选择注销退出。退出的会话将重定向回登录面板,后续无论是换电脑访问还是清除了浏览器缓存,直接从该登录页输入初始密码,就能随时无缝唤出你的第二大脑:

Trilium 登录页
图 5:日常访问登录界面,输入统一管理密码即可验证进入

踩坑实录

1. 初始化向导不在 /setup,手动直达会报错
很多从其他 Web 应用迁移过来的朋友习惯在浏览器地址栏手动敲 http://IP:8080/setup 去排查向导,但 Trilium 服务端并没有直接挂载这个静态视图路由,直达访问反而会直接吐出 Failed to lookup view "setup" in views directory 的 JSON 500 报错。这是正常机制,无需慌张,初始化向导是根路由通过会话状态动态分发的,直接打开网站根路径 http://IP:8080/ 即可正常进入向导。

2. 端口不仅由 Docker 决定,数据目录 config.ini 也要留心
Trilium 容器内进程监听的端口由挂载数据目录里的 config.ini 决定,默认配置为 [Network] port=8080。如果你的宿主机 8080 端口已被其他服务占用,最省事的做法是只改 docker-compose.yml 端口映射的左侧(宿主机端口),例如 "18080:8080",容器内部保持不动;如果你进容器或改了 config.ini 里的 port 字段,修改后必须完整重启容器(docker compose restart),且 Docker 映射右侧的端口必须与 config.ini 严格对齐,否则两边错位会导致容器端口映射不通。

3. Web 端是单密码鉴权,没有多用户隔离
Trilium 定位是深度贴合极客个人工作流的知识库,Web 端本质上只有一道全库通用的管理密码,并不支持注册多账号或按用户分配只读权限。如果你的服务器是公网环境,强烈不建议直接将裸 IP 端口裸奔在公网。最佳实践是通过 Nginx / Caddy 挂载二级域名、配置 HTTPS 证书,并视需要在外层套上一道 HTTP Basic Auth 或 Cloudflare Access / Tailscale 组网鉴权,筑牢公网访问防线。

升级与备份

自建笔记系统,数据安全和版本迭代往往是最核心的诉求。得益于 Trilium 的单库架构和 Docker 容器化封装,这两项维护操作极为轻量:

  1. 平滑升级镜像:当社区发布了新版本(或修复包)时,先编辑 docker-compose.yml 将镜像版本号修改为目标新标签(如 v0.107.0 或新维护分支),然后进入工作目录依次执行以下两条命令,Docker 会拉取最新层并就地重建容器,原数据目录无缝复用:

    BASH
    docker compose pull
    docker compose up -d
  2. 冷备份与整库归档:Trilium 的所有笔记数据、属性关联、图片附件全在宿主机的 ./trilium-data 目录(核心为内部的 document.db 文件)。在执行快照归档时,建议先临时优雅停服以防写入锁冲突,打包后再恢复服务:

    BASH
    # 1. 临时停止容器写入
    docker compose stop
    
    # 2. 将整个数据目录打包为带日期的压缩包
    tar -czvf trilium-data-backup-$(date +%Y%m%d).tar.gz ./trilium-data
    
    # 3. 重新拉起笔记服务
    docker compose start

    生成的压缩包体积小、独立性极强,日常可以定期同步推送到对象存储、网盘或备份机。就算整台服务器重装系统,只要把备份包解压回新机器并 docker compose up -d,整个知识图谱即可 100% 满血复活。