环境:飞牛OS (fnOS) + 1Panel + Docker + Nginx Proxy Manager 2.15.1 目标:自托管 CouchDB 实现多设备 Obsidian 笔记实时同步 访问地址:
https://obsidian.livesync:30443
一、方案说明
LiveSync 的工作原理
本地 Obsidian(Windows/Mac/手机)
↕ HTTPS + WebSocket
Self-hosted LiveSync(CouchDB)← 部署在 fnOS 上
↕
其他设备的 Obsidian
CouchDB 作为中间同步节点,所有设备的笔记变更实时双向同步。
同步 vs 备份的区别
LiveSync 是同步语义,本地误删会同步到服务端。但 CouchDB 内置版本历史,可以找回任意历史版本(见第四章)。
本地 vault 文件夹里的 .md 文件始终保留完整副本,不会变成"仅云端引用"。
推荐搭配使用
LiveSync → 多设备实时同步(主要用途)
fnOS 定时快照 → 对 CouchDB 数据目录定期备份(防误删兜底)
二、服务端部署(1Panel / fnOS)
2.1 部署 CouchDB 容器
在 1Panel 应用商店搜索 obsidian-livesync,或手动创建 docker-compose.yml:
services:
couchdb:
image: couchdb:latest
container_name: obsidian-livesync
environment:
- COUCHDB_USER=your_user # 替换为你的用户名
- COUCHDB_PASSWORD=your_password # 替换为你的密码
volumes:
- ./data:/opt/couchdb/data
ports:
- 5984:5984
restart: unless-stopped
2.2 NPM 配置反向代理
在 Nginx Proxy Manager 新建 Proxy Host:
注意:NPM 监听在非标准端口 30443(因飞牛OS 占用了 443),最终访问地址为
https://obsidian.livesync:30443
2.3 初始化 CouchDB
浏览器访问 https://obsidian.livesync:30443/_utils,进入 Fauxton 管理界面:
使用部署时设置的账号密码登录
点击 Create Database,创建同步数据库(如
lyymoobs)确认
_users系统库存在进入 Configuration → 确认
CORS已启用(LiveSync 需要跨域访问)
三、客户端配置(Windows 本地 Obsidian)
3.1 添加 hosts 解析
用管理员权限编辑 C:\Windows\System32\drivers\etc\hosts,添加:
192.168.5.224 obsidian.livesync
3.2 导入自签名证书(关键步骤,必做)
Obsidian 桌面客户端使用系统证书库,自签名证书必须手动导入,否则插件会报 ERR_CERT_AUTHORITY_INVALID 错误。
方法一:双击安装(图形界面)
双击 obsidian-local.crt
→ 安装证书
→ 存储位置:本地计算机
→ 将所有证书放入下列存储
→ 浏览 → 受信任的根证书颁发机构
→ 确定 → 完成
方法二:PowerShell(管理员)
Import-Certificate -FilePath "C:\path\to\obsidian-local.crt" `
-CertStoreLocation Cert:\LocalMachine\Root
⚠️ 证书导入后必须完全退出并重启 Obsidian,否则插件仍然读取旧的证书状态,连接依然失败。
3.3 安装 Self-hosted LiveSync 插件
Obsidian → 设置 → 第三方插件 → 关闭安全模式 → 浏览
→ 搜索 Self-hosted LiveSync → 安装 → 启用
3.4 配置插件连接
进入插件设置,填写以下信息:
Remote Database URI : https://obsidian.livesync:30443/
Database Name : lyymoobs(与服务端创建的库名一致)
Username : your_user
Password : your_password
点击 Test Database Connection,显示绿色成功提示后保存配置。
四、历史版本查看与恢复
LiveSync 利用 CouchDB 的文档版本机制,自动保存每次笔记变更的历史版本,无需额外插件。
4.1 查看历史版本
方法一:命令面板
Ctrl + P → 输入 Show history → 选择 LiveSync: Show history of this document
方法二:插件图标
左侧边栏找到 LiveSync 图标 → 点击 Show History
操作后会弹出当前笔记的所有历史版本列表,显示每次变更的时间戳和变更内容对比。
4.2 恢复历史版本
在历史版本列表中点击目标版本
预览确认内容无误
点击 Restore 按钮恢复到该版本
当前内容会被替换,恢复操作本身也会作为新版本记录
提示:恢复操作是安全的,它会把"恢复"这个动作也作为一个新版本写入历史,不会丢失任何记录。
4.3 版本清理
CouchDB 长期运行后历史版本会占用较多空间,可在插件设置中配置:
Settings → History → Limit number of revisions
建议保留 50~100 个版本,足够日常找回误删内容。
五、常见问题
ERR_CERT_AUTHORITY_INVALID
现象:插件报错,浏览器直接访问正常。
原因:Obsidian 桌面客户端走系统证书库,不能像浏览器一样手动信任证书。
解决:按第三章 3.2 步骤将自签名证书导入系统受信任根证书库,然后重启 Obsidian。
连接成功但不同步
检查以下几点:
NPM 的 WebSocket Support 是否开启
CouchDB 的 CORS 配置是否允许跨域
插件的
Sync Mode是否设置为LiveSync(实时)而非Periodic(定时)
多设备配置
每台设备重复执行客户端步骤(3.1 → 3.4),连接同一个 CouchDB 数据库即可实现多设备实时同步。手机端(iOS/Android)的 Obsidian 同样支持此插件,配置方式相同。
六、备份建议
LiveSync 解决同步问题,但建议同时在 1Panel 配置定时备份任务,对 CouchDB 数据目录进行快照:
备份路径:./data(CouchDB 数据目录)
备份频率:每天一次
保留份数:7 天
这样即使发生大规模误删或数据库损坏,也能从备份中完整恢复。