笔记软件用了很多年,从 Evernote 到 Notion 再到各种国产应用。方便是方便,但总有一种不安:数据不在自己手里。服务商改政策、涨价、甚至关停,用户只能被动接受。
于是我决定自己搭一个。用 Docker 部署一套开源的笔记系统,数据存在自己的硬盘上,内网随时访问,外网通过加密隧道连接。一次配置,长期省心。
为什么选容器
Docker 最大的好处是干净。笔记服务依赖数据库、缓存、Web 服务器,如果直接装在系统里,升级和卸载都很麻烦。用容器的话,所有依赖打包在镜像里,删掉容器就什么都不剩。迁移也简单,把数据卷复制走就行。
这次我选的是 Trilium Notes。它支持富文本、代码块、关系图、加密笔记,数据存在本地 SQLite 数据库里,备份就是复制一个文件。也有 Web 界面,手机浏览器也能用。
目录规划
先在服务器上建一个目录,专门放笔记服务的数据:
mkdir -p /opt/trilium/data
mkdir -p /opt/trilium/backup
data 放数据库和附件,backup 放定时备份。两个目录分开,备份的时候直接打包 data 就行。
启动容器
用官方镜像,一条命令启动:
docker run -d \
--name trilium \
--restart unless-stopped \
-p 8080:8080 \
-v /opt/trilium/data:/home/node/trilium-data \
-e TRILIUM_DATA_DIR=/home/node/trilium-data \
triliumnext/trilium:latest
解释一下参数:-d 后台运行,--restart unless-stopped 开机自启,-p 8080:8080 把容器端口映射到主机,-v 把数据目录挂载出来。这样容器删了,数据还在。
数据卷挂载的重要性
很多人第一次用 Docker 会忘记挂载数据卷,结果容器一删,所有笔记都没了。记住一个原则:容器是无状态的,数据必须放在容器外面。
挂载之后,你可以随时备份 /opt/trilium/data 目录,也可以把它放到 NAS 或移动硬盘上。迁移的时候,把目录复制到新机器,重新启动容器,笔记就全回来了。
自托管的核心不是技术,而是对数据的掌控权。备份策略比部署方式更重要。
定时备份
用 cron 每天凌晨打包一次数据目录,保留最近 30 天:
0 3 * * * tar -czf /opt/trilium/backup/trilium-$(date +\%Y\%m\%d).tar.gz -C /opt/trilium data && find /opt/trilium/backup -name "*.tar.gz" -mtime +30 -delete
这样即使硬盘坏了,也有最近的备份可以恢复。如果笔记特别重要,可以再同步一份到云盘或另一台机器。
内网访问与远程连接
在局域网里,直接访问 http://服务器IP:8080 就能打开笔记。如果需要在外面访问,推荐用 WireGuard 或 Tailscale 组一个虚拟内网,比直接暴露端口安全得多。
我用的 Tailscale,免费版够用。服务器和手机都装上,登录同一个账号,手机就能像在内网一样访问笔记服务。全程加密,不用配防火墙规则。
一点使用感受
现在我的笔记全部在自己的服务器上。每天自动备份,手机和电脑都能实时同步。打开速度很快,搜索功能也够用。最重要的是,我知道数据在哪里,也知道怎么把它带走。
如果你对数据主权有要求,又愿意花一个下午折腾,自托管笔记服务是很值得的。Docker 让这件事的门槛降低了很多,不需要精通 Linux,也能搭出一套稳定可用的系统。
技术最终是为了服务生活。把数据握在自己手里,心里会踏实很多。希望这篇记录能帮你迈出自托管的第一步。