技术笔记

NAS 笔记与知识库方案:从 Joplin 到 Obsidian 怎么选

yaobingbin yaobingbin · · 约 8 分钟 · 0 条评论

先分清两种架构

自建笔记方案分两大类,选择前必须搞清楚它们的工作方式完全不同:

架构一:服务端模式 — 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. 再决定要不要上服务端、要不要换工具

很多人花几周时间对比工具,最后笔记库里只有三篇。先写起来。

微信搜一搜 纳思Note
评论经后台审核通过后显示 · 请勿发布广告、外链或无关内容

发表评论

邮箱地址不会被公开。填写昵称与邮箱后方可评论。