NAS 笔记与知识库方案:从 Joplin 到 Obsidian 怎么选
先分清两种架构
自建笔记方案分两大类,选择前必须搞清楚它们的工作方式完全不同:
架构一:服务端模式 — NAS 上跑一个服务端程序,客户端连它同步。数据在服务端数据库里,客户端是缓存。代表:Joplin Server、Trilium(单用户)、Memos。
架构二:文件同步模式 — 笔记就是磁盘上的文件(通常是 Markdown),用同步工具在设备间同步文件。代表:Obsidian + Syncthing、Obsidian + 网盘。
| 对比项 | 服务端模式 | 文件同步模式 |
|---|---|---|
| 数据形态 | 数据库 | 纯文件(Markdown) |
| 离线编辑 | 客户端缓存,需同步 | 完全离线,本地即数据 |
| 冲突处理 | 服务端协调 | 靠同步工具,可能冲突 |
| 备份 | 备份数据库 | 备份文件目录 |
| 数据可迁移性 | 依赖导出功能 | 极高,文件拷走就能用 |
| 手机端体验 | 好(有原生 App) | 一般(依赖同步 App) |
这两种没有绝对的优劣,取决于你的使用习惯。 下面按方案展开。
Joplin Server:端到端加密的同步服务
Joplin 是开源笔记应用,功能接近 Evernote(笔记本层级、标签、待办、网页剪藏)。它支持多种同步目标,Joplin Server 是官方的自建服务端方案。
最大卖点是端到端加密(E2EE)。同步到服务端的数据是加密的,服务端(也就是你的 NAS)本身看不到明文。这意味着:即便 NAS 被别人访问,笔记内容仍是安全的。
代价:
- 启用 E2EE 后,Web 界面和部分功能不可用(无法在服务端解密)
- 密钥丢了数据就找不回来,必须妥善保管主密码
- 搜索只能在客户端进行
部署:
services:
joplin-server:
image: joplin/server:latest
container_name: joplin
restart: unless-stopped
environment:
- APP_BASE_URL=https://joplin.example.com
- APP_PORT=22300
- POSTGRES_HOST=db
- POSTGRES_DATABASE=joplin
- POSTGRES_USER=joplin
- POSTGRES_PASSWORD=xxxx
ports:
- 22300:22300
需要一个 PostgreSQL 数据库(不能用 SQLite 做生产部署)。
适合谁:需要在手机和电脑间同步、看重加密、喜欢 Joplin 的笔记组织方式。
Trilium:层级笔记的另类
Trilium Notes 的与众不同之处是笔记可以有任意层级的嵌套,而且是”一个笔记树”而非扁平列表。它还有一个很有意思的特性:笔记可以是可执行的代码(JavaScript 或 HTML),能做自动化和自定义视图。
它是单用户设计,没有完善的多用户体系。这点要提前知道——如果你想和家人共用,Trilium 不合适。
数据存在 SQLite 数据库里,备份就是备份这个数据库文件(外加一个 document 目录)。
同步方式:Trilium 有自带的同步服务器(需要单独配置),也可以直接用同步工具同步数据目录。
适合谁:重度笔记用户、喜欢层级结构和自定义、能接受单用户限制。
Obsidian + Syncthing:文件派的代表
Obsidian 本身不提供同步服务(官方的 Sync 是付费订阅),但它的笔记就是本地的 Markdown 文件夹——这反而给了你完全的自由。
Syncthing 是最佳搭档:一个开源的去中心化文件同步工具,在你的设备之间直接同步,不需要中央服务器。
架构:
电脑 ←→ Syncthing ←→ NAS ←→ Syncthing ←→ 手机
NAS 在这里扮演”永远在线的节点”——你的其他设备随时都能和它同步,而不是必须两两在线。
Syncthing 部署(在 NAS 上):
services:
syncthing:
image: syncthing/syncthing:latest
container_name: syncthing
restart: unless-stopped
environment:
- PUID=1000
- PGID=1000
volumes:
- ./config:/var/syncthing/config
- /volume1/notes:/var/syncthing/data
ports:
- 8384:8384 # Web 管理界面
- 22000:22000/tcp
- 22000:22000/udp
- 21027:21027/udp
优势:
- 数据就是 Markdown 文件,任何编辑器都能打开,迁移零成本
- 完全离线可用
- 备份极其简单(拷文件)
- 可以配合 Git 做版本历史
劣势:
- 冲突处理是硬伤。两台设备同时编辑同一个文件,Syncthing 会保留两个版本(
.sync-conflict文件),需要手动合并 - 手机端体验依赖第三方同步 App(安卓上有 Syncthing 官方客户端,iOS 上选择较少)
- 大附件(图片、PDF)同步会拖慢速度
减少冲突的实用做法:
- 不要在两台设备上同时编辑同一篇笔记
- 笔记拆细一点,减少同时编辑的概率
- 设置 Syncthing 的
.stignore,排除 Obsidian 的工作区缓存和插件数据(这些频繁变动且无同步价值)
Memos:轻量碎片记录
如果你不需要完整的知识库,只是想随手记点东西(想法、待办、摘录),Memos 是更轻的选择。
- 单容器 + SQLite,资源占用极小
- 类似微博/推特的界面,快速记录
- 支持标签、Markdown、附件
- 有 API,可以对接其他工具
它更像”个人 Twitter”,适合碎片化记录,不适合结构化知识管理。
对比表
| 方案 | 架构 | 多用户 | 手机端 | 加密 | 适合 |
|---|---|---|---|---|---|
| Joplin Server | 服务端 | ✅ | 优秀 | E2EE 可选 | 跨设备同步、重隐私 |
| Trilium | 服务端 | ❌ 单用户 | 一般 | 有 | 层级结构、重度用户 |
| Obsidian + Syncthing | 文件 | — | 依赖同步 App | 无(靠磁盘加密) | Markdown 爱好者 |
| Memos | 服务端 | ✅ | 有 Web | 无 | 碎片记录 |
备份:这是最容易翻车的地方
笔记是自己写的,丢了就没了。 备份的重要性高于其他任何自建服务。
| 方案 | 该备份什么 | 频率 |
|---|---|---|
| Joplin Server | PostgreSQL 数据库 | 每天 |
| Trilium | SQLite 数据库文件 | 每天 |
| Obsidian | 整个笔记目录 | 每次改动(用 Git 或快照) |
| Memos | SQLite 数据库文件 | 每天 |
数据库备份要注意一致性。直接拷贝正在被写入的 SQLite 文件可能得到损坏的副本。正确做法:
- 用数据库的导出命令(
sqlite3 .backup或pg_dump) - 或者先停容器再拷贝
Obsidian + Git 是很棒的组合:每次改动后 git commit,既有了版本历史,又天然做了一份备份(再 push 到另一个仓库就是异地备份)。对 Markdown 文件来说,Git 是最合适的版本管理工具。
三份原则:笔记至少要有三份——设备本地一份、NAS 一份、异地一份。
一个现实的建议
不要一开始就追求完美的知识管理体系。工具的选择远不如”持续记录”这件事重要。
务实路径:
1. 先用最简单的方案开始记(哪怕就是 Obsidian 加个文件夹) 2. 用几个月,摸清自己的真实需求(是跨设备同步?是搜索?是双链?) 3. 再决定要不要上服务端、要不要换工具
很多人花几周时间对比工具,最后笔记库里只有三篇。先写起来。
