Decentralization? We're still early!
課 2 的 7
In Progress

第二课 自托管Trilium并实现多端同步

Brave 2026-02-03

在上一节课中,我们理解了知识主权的重要性——你的思想记录应该真正属于你,而非托管在商业公司的服务器上。

这一节,我们将把理念付诸实践:亲手部署一台属于自己的 Trilium 服务器。

📌 从这一刻起,你的每一条笔记、每一个想法、每一份知识积累,都将存储在你自己控制的服务器上。这就是"主权个人"的知识实践。

本节将涵盖:

  • 🐳 Docker 部署 Trilium(多种方案)
  • 🇨🇳 中文版配置
  • 🔄 同步机制详解
  • 🔐 反向代理与 HTTPS 配置
  • 💾 数据备份策略
  • 🌐 浏览器扩展:Trilium Web Clipper(新增)
  • 🔌 生态扩展:Trilium WP 与 AI 集成(新增)

一、部署方案选择

1.1 Trilium 的三种使用方式

在开始部署之前,你需要明确自己的使用场景:

┌─────────────────────────────────────────────────────────────────┐
│                    Trilium 使用方式选择                          │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  🖥️ 方式一:纯桌面使用                                           │
│     └── 下载桌面客户端,数据存储在本地                            │
│     └── 适合:单设备用户,不需要多端同步                          │
│     └── 优点:简单,无需服务器                                   │
│     └── 缺点:只能在一台设备上使用                               │
│                                                                 │
│  🌐 方式二:纯服务器使用                                          │
│     └── 部署服务器,通过浏览器访问                                │
│     └── 适合:习惯浏览器操作,多设备通过网页访问                   │
│     └── 优点:任何设备、任何地点都能访问                          │
│     └── 缺点:依赖网络,离线无法使用                              │
│                                                                 │
│  🔄 方式三:服务器 + 桌面客户端同步(推荐)                        │
│     └── 服务器作为同步中枢,桌面客户端本地存储                     │
│     └── 适合:追求最佳体验的主权个人                              │
│     └── 优点:离线可用 + 多端同步 + 完全自主                      │
│     └── 缺点:需要维护服务器                                     │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

本课程推荐方式三:服务器 + 桌面客户端同步。 这种方式既保证了数据完全自主,又实现了多端同步和离线可用。

1.2 Trilium vs TriliumNext:如何选择

💡 背景说明:2024 年 1 月,Trilium 的开发者 Zadam 发表声明,宣布 Trilium Notes 进入维护模式。但承诺将继续维护,包括修复 bug、更新依赖库(如 Electron、Node.js、CKEditor、Mermaid)。

与此同时,社区开发者创建了 TriliumNext——一个由社区驱动的 fork 项目,继续活跃开发新功能。

版本定位适合人群镜像地址
Trilium (原版)维护模式,只修复 bug追求稳定、不需要新功能的用户zadam/trilium
TriliumNext活跃开发,持续添加新功能喜欢尝试新功能、愿意参与社区的用户triliumnext/notes
Trilium 中文版基于 TriliumNext 的完整中文汉化国内用户,需要中文界面nriver/trilium-cn

TriliumNext 的主要新功能

  • 🧠 思维导图笔记:支持修改节点颜色、添加标签和链接,可导出为 SVG
  • 🎨 新主题选项:浅色/深色模式切换
  • 时间数据类型:自定义属性支持时间类型,适合任务管理
  • 🔗 关系图增强:改善复杂知识网络的视觉呈现

📚 延伸阅读从 Trilium 到 TriliumNext:社区驱动下的功能演进与特性解读

1.3 服务器部署平台选择

平台类型代表优点缺点适合人群
云服务器 VPS阿里云、腾讯云、Vultr、DigitalOcean稳定、公网可访问需要付费、需要基础运维知识有一定技术基础的用户
家用 NAS群晖 Synology、威联通 QNAP一次购买长期使用、局域网速度快公网访问需配置内网穿透已有 NAS 的用户
本地服务器旧电脑、树莓派、迷你主机成本低、完全可控需要保持开机、公网访问复杂极客、动手能力强的用户
容器平台Cloudron、CasaOS、Umbrel图形化管理、一键部署平台本身有学习成本想要简化运维的用户

二、Docker 部署实战

2.1 为什么选择 Docker

Docker 是目前最流行的容器化技术,使用 Docker 部署 Trilium 有以下优势:

  • 环境隔离:不影响宿主机其他服务
  • 一键部署:几条命令即可完成
  • 易于升级:更新镜像即可升级版本
  • 便于迁移:打包数据目录即可迁移到新服务器
  • 多架构支持:支持 AMD64、ARMv7、ARM64(适配树莓派、Mac M系列)

2.2 准备工作

📋 前置要求

在开始之前,请确保你的服务器满足以下条件:

项目最低要求推荐配置
操作系统Linux(Ubuntu/Debian/CentOS)Ubuntu 22.04 LTS 或 Debian 12
内存512MB1GB 以上
硬盘5GB20GB 以上(取决于笔记量)
DockerDocker 20.10+最新稳定版
网络能访问 Docker Hub如在国内,建议配置镜像加速

🐳 安装 Docker

如果你的服务器尚未安装 Docker,可以使用以下一键安装脚本:

# 官方安装脚本(推荐)
curl -fsSL https://get.docker.com | sh

# 将当前用户添加到 docker 组(避免每次都要 sudo)
sudo usermod -aG docker $USER

# 重新登录后生效,或执行以下命令立即生效
newgrp docker

# 验证安装
docker --version
docker compose version

💡 国内用户提示:如果下载速度较慢,可以使用阿里云、腾讯云等提供的 Docker 镜像加速服务。

2.3 部署官方镜像(TriliumNext)

这是最推荐的部署方式。

📁 步骤一:创建目录结构

# 创建 Trilium 数据目录
mkdir -p ~/trilium-data
cd ~/trilium-data

📝 步骤二:创建 docker-compose.yml

# 下载官方 docker-compose 文件
wget https://raw.githubusercontent.com/TriliumNext/Trilium/master/docker-compose.yml

# 或手动创建
cat > docker-compose.yml << 'EOF'
services:
  trilium:
    image: triliumnext/notes:latest
    container_name: trilium
    restart: unless-stopped
    environment:
      - TRILIUM_DATA_DIR=/home/node/trilium-data
    ports:
      - "8080:8080"
    volumes:
      - ./data:/home/node/trilium-data
EOF

🚀 步骤三:启动容器

# 启动 Trilium
docker compose up -d

# 查看运行状态
docker compose ps

# 查看日志(如有问题可用于排查)
docker compose logs -f trilium

✅ 步骤四:访问验证

打开浏览器,访问 http://你的服务器IP:8080

首次访问会看到初始化页面,你需要:

  1. 设置管理员密码
  2. 选择笔记存储位置(默认即可)
  3. 完成初始化

2.4 部署中文版(推荐国内用户)

Nriver/trilium-cn 是一个持续维护的中文汉化版本,提供:

  • ✅ 完整的中文界面翻译
  • ✅ 与官方版本同步更新
  • ✅ 包含桌面客户端和服务器镜像
# 创建目录
mkdir -p ~/trilium-cn && cd ~/trilium-cn

# 创建 docker-compose.yml
cat > docker-compose.yml << 'EOF'
services:
  trilium-cn:
    image: nriver/trilium-cn:latest
    container_name: trilium-cn
    restart: unless-stopped
    ports:
      - "8080:8080"
    volumes:
      - ./data:/home/node/trilium-data
    environment:
      - TRILIUM_DATA_DIR=/home/node/trilium-data
EOF

# 启动
docker compose up -d

2.5 群晖 NAS Docker 部署

如果你使用群晖 NAS,可以通过 Container Manager(原 Docker 套件)进行部署。

📋 步骤概览

  1. 安装 Container Manager
    • 打开套件中心 → 搜索 "Container Manager" → 安装
  2. 下载镜像
    • 打开 Container Manager → 注册表
    • 搜索 nriver/trilium-cn(中文版)或 triliumnext/notes(官方版)
    • 下载最新版本
  3. 创建容器
    • 映像 → 选择已下载的镜像 → 启动
    • 设置容器名称:trilium
    • 勾选"启用自动重新启动"
  4. 配置端口映射
    • 本地端口:8080(或其他未占用端口)
    • 容器端口:8080
  5. 配置存储空间映射
    • 添加文件夹映射
    • 本地路径:/docker/trilium/data(在 File Station 中预先创建)
    • 容器路径:/home/node/trilium-data
  6. 启动并访问
    • 访问 http://你的NAS-IP:8080

📚 详细图文教程:参考 少数派:用群晖 Docker 部署 Trilium Notes

2.6 Rootless 模式(安全增强)

从安全角度考虑,TriliumNext 提供了 rootless 镜像,容器内进程不以 root 用户运行:

# 使用 rootless 镜像
docker run -d \
  --name trilium \
  -p 8080:8080 \
  -v ~/trilium-data:/home/trilium/trilium-data \
  triliumnext/notes:rootless

# 使用自定义 UID/GID(匹配宿主机用户)
docker run -d \
  --name trilium \
  -p 8080:8080 \
  --user $(id -u):$(id -g) \
  -v ~/trilium-data:/home/trilium/trilium-data \
  triliumnext/notes:rootless

三、同步机制详解

3.1 Trilium 同步架构

Trilium 采用星形拓扑结构进行同步:

                    ┌─────────────────┐
                    │   Sync Server   │
                    │  (同步服务器)   │
                    │                 │
                    │  ☁️ 中央数据库   │
                    └────────┬────────┘
                             │
           ┌─────────────────┼─────────────────┐
           │                 │                 │
           ▼                 ▼                 ▼
    ┌──────────┐      ┌──────────┐      ┌──────────┐
    │ 💻 桌面   │      │ 💻 桌面   │      │ 🌐 浏览器 │
    │ 客户端 A  │      │ 客户端 B  │      │  访问     │
    │          │      │          │      │          │
    │ 本地数据库 │      │ 本地数据库 │      │ 直接读写  │
    └──────────┘      └──────────┘      └──────────┘
      (家里)         (公司)           (移动设备)

核心特点

  • 🏠 离线优先:桌面客户端的数据存储在本地,即使服务器不可用也能正常使用
  • ☁️ 服务器为中枢:所有客户端都与中央服务器同步,而非点对点同步
  • 🔄 自动同步:一旦配置完成,同步是自动且持续进行的,无需手动触发

3.2 同步原理:基于 Entity Changes

Trilium 的同步机制基于实体变更追踪(Entity Changes)

概念说明
Entity(实体)笔记、附件、属性、分支等都是实体
Entity Change(实体变更)每次修改都会生成一条变更记录
Change ID每条变更都有唯一的递增 ID
Hash 校验同步完成后计算数据哈希,确保一致性

同步流程

┌─────────────────────────────────────────────────────────────────┐
│                      同步流程详解                                │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  1️⃣ 客户端登录                                                   │
│     └── 客户端向服务器发送认证请求                                │
│     └── 服务器验证密码并建立连接                                  │
│                                                                 │
│  2️⃣ 推送本地变更(Push)                                         │
│     └── 客户端发送自上次同步以来的所有本地变更                     │
│     └── 服务器接收并应用这些变更                                  │
│                                                                 │
│  3️⃣ 拉取远程变更(Pull)                                         │
│     └── 服务器发送客户端缺失的变更                                │
│     └── 客户端接收并应用这些变更                                  │
│                                                                 │
│  4️⃣ 哈希校验                                                     │
│     └── 双方计算所有数据的哈希值                                  │
│     └── 比对哈希,确保数据完全一致                                │
│                                                                 │
│  5️⃣ 完成同步                                                     │
│     └── 更新同步状态                                             │
│     └── 如有差异,触发自动恢复机制                                │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

3.3 配置桌面客户端同步

📥 下载桌面客户端

根据你的操作系统下载对应版本:

系统官方版下载中文版下载
WindowsGitHub ReleasesNriver Releases
macOS同上同上
Linux同上同上

⚙️ 配置同步

  1. 首次启动客户端
    • 选择"我已有一个运行中的同步服务器"
    • 或在设置中配置同步
  2. 填写服务器信息

    服务器地址:https://your-domain.com(或 http://IP:8080)
    密码:你在服务器初始化时设置的密码
  3. 等待初次同步
    • 首次同步会下载服务器上的所有数据
    • 取决于数据量,可能需要几分钟到几十分钟
  4. 验证同步状态
    • 右上角同步图标显示绿色 ✅ 表示同步正常
    • 点击图标可查看详细同步状态

3.4 冲突处理机制

当你在多个设备上同时编辑同一笔记,且在同步之前都进行了修改,会产生同步冲突。

Trilium 的冲突处理策略

🔄 保留较新的更改,丢弃较旧的更改。较旧的更改会保存在笔记修订历史中,因此不会真正丢失。

最佳实践

  • ✅ 编辑前先等待同步完成(观察同步图标)
  • ✅ 避免在多个设备上同时编辑同一笔记
  • ✅ 定期检查笔记修订历史,确保没有遗漏的更改

3.5 时间同步要求

⚠️ 重要提示:为了成功同步,客户端和服务器的系统时间必须一致,允许最多 5 分钟的误差。

确保服务器时间准确:

# 查看当前时间
date

# 安装 NTP 服务(Ubuntu/Debian)
sudo apt install ntp -y

# 启动 NTP 服务
sudo systemctl enable ntp
sudo systemctl start ntp

# 或使用 systemd-timesyncd(更轻量)
sudo timedatectl set-ntp true

四、反向代理与 HTTPS 配置

4.1 为什么需要反向代理?

直接通过 http://IP:8080 访问存在以下问题:

问题说明
🔓 明文传输HTTP 协议不加密,密码和笔记内容可能被截获
🔢 端口暴露需要记住端口号,不够优雅
📜 无法使用域名没有 SSL 证书,现代浏览器会提示不安全

使用反向代理 + HTTPS 可以解决这些问题。

4.2 方案一:Nginx 手动配置

📦 安装 Nginx

# Ubuntu/Debian
sudo apt update
sudo apt install nginx -y

# 启动 Nginx
sudo systemctl enable nginx
sudo systemctl start nginx

📝 创建 Nginx 配置文件

sudo nano /etc/nginx/sites-available/trilium

写入以下内容(请替换 your-domain.com 为你的实际域名):

# HTTP 重定向到 HTTPS
server {
    listen 80;
    server_name your-domain.com;
    return 301 https://$server_name$request_uri;
}

# HTTPS 配置
server {
    listen 443 ssl http2;
    server_name your-domain.com;

    # SSL 证书配置(使用 Let's Encrypt)
    ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;

    # SSL 安全配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;

    # 反向代理配置
    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_http_version 1.1;

        # WebSocket 支持(同步功能需要)
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        # 转发真实 IP
        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_connect_timeout 60s;
        proxy_send_timeout 60s;
        proxy_read_timeout 60s;
    }
}

🔗 启用配置

# 创建符号链接
sudo ln -s /etc/nginx/sites-available/trilium /etc/nginx/sites-enabled/

# 测试配置语法
sudo nginx -t

# 重载 Nginx
sudo systemctl reload nginx

🔐 申请 SSL 证书(Let's Encrypt)

# 安装 Certbot
sudo apt install certbot python3-certbot-nginx -y

# 申请证书(会自动配置 Nginx)
sudo certbot --nginx -d your-domain.com

# 测试自动续期
sudo certbot renew --dry-run

4.3 方案二:Nginx Proxy Manager(图形化)

如果你不熟悉命令行配置,可以使用 Nginx Proxy Manager,它提供了 Web 图形界面来管理反向代理。

📦 部署 Nginx Proxy Manager

mkdir -p ~/nginx-proxy-manager && cd ~/nginx-proxy-manager

cat > docker-compose.yml << 'EOF'
services:
  npm:
    image: jc21/nginx-proxy-manager:latest
    container_name: nginx-proxy-manager
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
      - "81:81"    # 管理界面
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
EOF

docker compose up -d

⚙️ 配置步骤

  1. 访问 http://你的服务器IP:81
  2. 默认账号:admin@example.com / 密码:changeme
  3. 首次登录后修改密码
  4. 添加 Proxy Host:
    • Domain Names: your-domain.com
    • Forward Hostname: trilium(或服务器内网 IP)
    • Forward Port: 8080
    • 勾选 "Block Common Exploits"
  5. SSL 选项卡:Request a new SSL Certificate,勾选 "Force SSL"

4.4 方案三:Cloudflare Tunnel(无需公网 IP)

如果你的服务器没有公网 IP(如家庭网络),可以使用 Cloudflare Tunnel:

# 安装 cloudflared
curl -L --output cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared.deb

# 登录 Cloudflare
cloudflared tunnel login

# 创建隧道
cloudflared tunnel create trilium

# 配置隧道
cloudflared tunnel route dns trilium your-domain.com

# 运行隧道
cloudflared tunnel run --url http://localhost:8080 trilium

五、数据备份策略

5.1 理解 Trilium 的数据存储

Trilium 使用 SQLite 数据库存储所有数据:

trilium-data/
├── document.db          # 📦 核心数据库(包含所有笔记)
├── document.db-wal      # 📝 预写日志(正常运行时存在)
├── document.db-shm      # 🔗 共享内存文件(正常运行时存在)
├── config.ini           # ⚙️ 配置文件
├── log/                 # 📋 日志目录
└── backup/              # 💾 自动备份目录

🎯 关键文件document.db 包含了你所有的笔记、附件、属性、笔记历史——只需备份这一个文件,即可完整恢复你的知识库。

5.2 备份方式一:手动备份

📋 备份步骤

# 1. 停止 Trilium(确保数据完整性)
docker compose stop trilium

# 2. 复制数据库文件
cp ~/trilium-data/data/document.db ~/backup/trilium-backup-$(date +%Y%m%d).db

# 3. 重新启动 Trilium
docker compose start trilium

📦 完整目录备份

# 备份整个数据目录
tar -czvf trilium-backup-$(date +%Y%m%d).tar.gz ~/trilium-data/data/

5.3 备份方式二:自动定时备份

📝 创建备份脚本

sudo nano /usr/local/bin/backup-trilium.sh

写入以下内容:

#!/bin/bash

# 配置
TRILIUM_DATA="/root/trilium-data/data"
BACKUP_DIR="/root/backup/trilium"
KEEP_DAYS=30  # 保留最近30天的备份

# 创建备份目录
mkdir -p $BACKUP_DIR

# 备份文件名(带日期)
BACKUP_FILE="$BACKUP_DIR/trilium-$(date +%Y%m%d-%H%M%S).db"

# 使用 SQLite 的 .backup 命令(支持热备份,无需停止服务)
sqlite3 "$TRILIUM_DATA/document.db" ".backup '$BACKUP_FILE'"

# 压缩备份文件
gzip $BACKUP_FILE

# 删除超过 KEEP_DAYS 天的旧备份
find $BACKUP_DIR -name "trilium-*.db.gz" -mtime +$KEEP_DAYS -delete

# 记录日志
echo "$(date): Backup completed - ${BACKUP_FILE}.gz" >> /var/log/trilium-backup.log

⚙️ 设置定时任务

# 添加执行权限
sudo chmod +x /usr/local/bin/backup-trilium.sh

# 编辑 crontab
crontab -e

# 添加以下行(每天凌晨 3 点执行备份)
0 3 * * * /usr/local/bin/backup-trilium.sh

5.4 备份方式三:异地备份(推荐)

本地备份无法防范硬盘损坏、服务器故障等情况。建议将备份同步到异地:

🔄 同步到对象存储(S3/OSS/COS)

# 安装 rclone
curl https://rclone.org/install.sh | sudo bash

# 配置 rclone(交互式配置)
rclone config

# 同步备份到云存储
rclone sync /root/backup/trilium remote:trilium-backup

📧 发送到邮箱(小型知识库)

# 安装 mutt
sudo apt install mutt -y

# 发送备份到邮箱
echo "Trilium backup $(date)" | mutt -s "Trilium Backup" -a /root/backup/trilium/latest.db.gz -- your-email@example.com

5.5 备份验证

定期验证备份文件的完整性非常重要:

# 检查数据库完整性
sqlite3 /root/backup/trilium/trilium-20250101.db "PRAGMA integrity_check;"
# 应返回 "ok"

# 测试性恢复(在临时目录)
mkdir -p /tmp/trilium-test
cp /root/backup/trilium/trilium-20250101.db /tmp/trilium-test/document.db
# 使用桌面客户端指向此目录测试

5.6 Trilium 内置备份功能

除了手动备份,Trilium 还有内置的自动备份机制:

功能说明位置
笔记修订历史自动保存笔记的历史版本笔记右侧边栏 → Note Revisions
自动备份定期备份数据库快照trilium-data/backup/
迁移前备份版本升级前自动备份backup/backup-before-migration.db

💡 提示:内置备份是应急手段,不能替代完整的备份策略。建议同时使用自动脚本备份 + 异地同步。


六、浏览器扩展:Trilium Web Clipper

📚 参考讨论Trilium Web Clipper:将网络文章一键保存到 Trilium 的浏览器扩展

6.1 什么是 Trilium Web Clipper

Trilium Web Clipper 是一款专为 Trilium Notes 设计的浏览器扩展程序,让你能够一键保存网页内容到你的 Trilium 知识库中。

主要功能

  • 📄 全页保存:将当前网页的全部内容保存为一个笔记,包括文字、图片、链接等
  • ✂️ 选择性保存:只保存选中的文字或图片,方便提取关键信息
  • 📝 Markdown 转换:将网页内容转换为 Markdown 格式
  • 📸 网页截图:将当前网页截取为图片,方便快速保存网页快照

6.2 安装与配置

📥 安装扩展

  1. 在 Chrome/Edge/Firefox 扩展商店中搜索 "Trilium Web Clipper"
  2. 或访问 GitHub 页面 手动安装

⚙️ 配置连接

  1. 点击浏览器工具栏上的 Trilium Web Clipper 图标
  2. 填写你的 Trilium 服务器地址(如 https://your-domain.com
  3. 输入你的 Trilium 密码进行认证
  4. 选择默认保存位置(目标笔记)

6.3 使用技巧

  • 快捷键:安装后支持键盘快捷键,使保存信息更加快捷
  • 保存到指定位置:剪藏时可以选择保存到哪个笔记下
  • 自动标签:可以为剪藏的内容自动添加标签(如 #webclipper

🔒 隐私说明:扩展程序是开源的,开发者声明不会收集或使用用户的数据。代码开源,任何人都可以查看和审查其安全性。


七、生态扩展:Trilium WP 与 AI 集成

💡 Trilium Notes/TriliumNext 已成为 Brave基地 的核心基础设施。基地还开发了将 Trilium 与 WordPress 联通的 Trilium WP 插件。

7.1 Trilium WP:从私人知识到公开发布

Trilium WP 是 Brave基地 开发的 WordPress 插件(目前处于内测阶段),能够实现:

  • 🔗 ETAPI 集成:调用 Trilium 的 ETAPI,动态获取知识库内容
  • 📤 知识发布:将 Trilium 中整理成熟的笔记发布到 WordPress 上
  • 🔄 动态更新:当 Trilium 中的内容更新时,网站展示也会相应更新

典型工作流

Trilium(私人知识库)→ Trilium WP(桥梁)→ WordPress(公开发布)

7.2 Trilium AI Chat:智能化知识管理

Trilium AI Chat 是 Trilium WP 的子插件,将 AI 聊天功能与 Trilium Notes 知识库系统融为一体:

主要特点

  • 🤖 多模型支持:可以根据不同任务选择适当的 AI 模型
  • 🔐 安全设计:API 密钥仅管理员可访问,所有 API 调用在服务器端完成
  • 📝 Gutenberg 集成:提供专用的"Trilium AI 聊天"块
  • 🌙 深色模式:自动适应用户的视觉偏好

核心价值

通过这款插件,你的 Trilium 笔记库从静态的知识存储转变为动态的智能助手,而 AI 则从通用工具变成了具有"个人知识背景"的专属顾问。

适用场景

  • 📚 研究人员:更快地汇总和分析已有资料,发现新的研究方向
  • ✍️ 作家:更有效地整合素材,获得创作灵感
  • 🎓 学习者:更深入地理解和连接知识点,构建完整的知识体系

7.3 AI 赋能的知识管理工作流

📚 延伸阅读构建高效的个人知识管理系统:Brave 的 AI 赋能工作流

Brave基地 使用 n8n 作为自动化流程编排工具,连接 Open WebUI、Trilium 等不同工具,实现:

┌─────────────┐      ┌─────────────┐      ┌─────────────┐
│  信息采集    │  →   │  AI 处理    │  →   │  知识存储    │
│ Web Clipper │      │ Open WebUI  │      │  Trilium    │
└─────────────┘      └─────────────┘      └─────────────┘
       ↓                    ↓                    ↓
       └────────────────────┴────────────────────┘
                           │
                     ┌─────────────┐
                     │   n8n       │
                     │  自动化编排  │
                     └─────────────┘
                           │
                     ┌─────────────┐
                     │  WordPress  │
                     │  知识发布    │
                     └─────────────┘

八、常见问题排查

8.1 容器启动失败

症状docker compose up -d 后容器未运行

排查步骤

# 查看容器状态
docker compose ps -a

# 查看容器日志
docker compose logs trilium

# 常见原因:
# 1. 端口被占用 → 修改 docker-compose.yml 中的端口映射
# 2. 数据目录权限问题 → sudo chown -R 1000:1000 ~/trilium-data/data
# 3. 镜像下载失败 → 检查网络,或使用镜像加速

8.2 同步失败

症状:客户端显示同步错误

排查清单

检查项命令/方法
服务器是否可达curl -I https://your-domain.com
密码是否正确重新输入密码测试
时间是否同步date 对比服务器和客户端时间
版本是否一致确保客户端和服务器版本相同
WebSocket 是否正常检查 Nginx 配置中的 Upgrade 设置

8.3 HTTPS 证书问题

症状:浏览器提示证书不安全

解决方案

# 检查证书状态
sudo certbot certificates

# 手动续期
sudo certbot renew

# 检查 Nginx 配置
sudo nginx -t

8.4 性能优化

如果笔记数量较多(10000+),可以考虑以下优化:

# docker-compose.yml 添加资源限制
services:
  trilium:
    # ...
    deploy:
      resources:
        limits:
          memory: 2G
        reservations:
          memory: 512M

九、本节小结

📝 核心要点回顾

  1. 部署方式选择:推荐使用"服务器 + 桌面客户端同步"模式
  2. Docker 是最简单的部署方式
  3. 中文版推荐:国内用户建议使用 Nriver/trilium-cn 镜像
    • 完整中文界面 + 持续更新
  4. 同步机制:基于 Entity Changes 的增量同步
    • 离线优先,自动同步
    • 注意时间同步要求
  5. 安全配置:务必配置 HTTPS
    • 可选 Nginx 手动配置 / Nginx Proxy Manager / Cloudflare Tunnel
  6. 备份策略document.db 是核心文件
    • 建议自动定时备份 + 异地同步
    • 定期验证备份完整性
  7. 生态扩展
    • Web Clipper 实现网页内容一键采集
    • Trilium WP 实现从私人知识到公开发布
    • Trilium AI Chat 实现智能化知识管理

🎯 实践检查清单

完成本节学习后,请确认你已经:


📚 参考资源

官方文档

Brave基地资源

回复