在使用 Obsidian 进行笔记管理时,多设备同步是一个重要需求。虽然有官方的 Obsidian Sync 服务,但鉴于其价格以及国内的稳定性,自建同步服务器是更好的选择。 本文将尝试基于 CouchDB 搭建自己的 Obsidian LiveSync 同步服务器 ,实现多端笔记实时同步。
什么是 Obsidian LiveSync? Obsidian LiveSync 是一个 Obsidian 插件,允许用户通过 CouchDB 兼容服务器同步多个 Vault 副本。相比官方同步服务,它的优点是:
数据完全存储在自己的服务器。
同步速度快,延迟低。
支持端到端加密。
免费开源。
部署 CouchDB 环境准备 本文以 Rocky 9 为例,其他 Linux 发行版类似。
安装 CouchDB 添加 CouchDB 官方源 Rocky Linux 官方仓库没有最新 CouchDB,需要添加 Apache 官方源。
sudo yum install -y yum-utilssudo yum-config-manager --add-repo https://couchdb.apache.org/repo/couchdb.reposudo dnf config-manager --set-enabled crbsudo dnf install epel-release epel-next-release sudo sed -e 's!^metalink=!#metalink=!g' \ -e 's!^#baseurl=!baseurl=!g' \ -e 's!https\?://download\.fedoraproject\.org/pub/epel!https://mirrors.tuna.tsinghua.edu.cn/epel!g' \ -e 's!https\?://download\.example/pub/epel!https://mirrors.tuna.tsinghua.edu.cn/epel!g' \ -i /etc/yum.repos.d/epel{,-testing}.repo
安装 CouchDB sudo yum install -y mozjs78 sudo yum install -y couchdb
配置 CouchDB 修改默认 CouchDB 配置文件路径为 /opt/couchdb/etc/local.ini
[couchdb] single_node = true max_document_size = 50000000 [chttpd] port = 5984 bind_address = 127.0 .0.1 require_valid_user = true max_http_request_size = 4294967296 [chttpd_auth] require_valid_user = true authentication_redirect = /_utils/session.html [httpd] WWW-Authenticate = Basic realm="couchdb" enable_cors = true [admins] admin = mysecretpassword [cors] origins = app://obsidian.md,capacitor://localhost,http://localhost credentials = true headers = accept, authorization, content-type, origin, referer methods = GET, PUT, POST, HEAD, DELETE max_age = 3600 [ssl]
启用 CouchDB 并 开启自启 sudo systemctl enable --now couchdb sudo systemctl status couchdb
发现启用 CouchDB 后报错 Error: the _users database does not exist ,说明 CouchDB 正尝试访问其默认的 _users 系统数据库,但这个数据库尚未创建。这个数据库用于用户认证和权限管理,是正常运行所必需的。
解决方法: 手动创建 _users 数据库 可以使用命令行工具 curl 或浏览器访问 CouchDB 的 HTTP API 创建这个数据库。
curl -X PUT http://127.0.0.1:5984/_users curl -X PUT http://admin:admin@127.0.0.1:5984/_users sudo systemctl restart couchdb sudo systemctl status couchdb
测试访问 CouchDB
curl http://admin:admin@127.0.0.1:5984
CouchDB 已成功部署并正常运行。
配置 HTTPS 反向代理 为了安全访问,建议通过 Nginx + SSL 证书为 CouchDB 提供 HTTPS 支持。
安装 Nginx sudo dnf install -y nginx sudo systemctl enable --now nginx
配置反向代理 编辑 /etc/nginx/conf.d/couchdb.conf :
server { listen 80; server_name your.domain.com; server_tokens off; return 301 https://$host$request_uri ; } server { listen 443 ssl http2; server_name your.domain.com; ssl_certificate /etc/letsencrypt/live/your.domain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/your.domain.com/privkey.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; access_log /var/log/nginx/couchdb.log main; error_log /var/log/nginx/couchdb_error.log warn; location / { proxy_pass http://127.0.0.1:5984/; proxy_set_header Host $host ; proxy_set_header X-Real-IP $remote_addr ; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ; } }
配置好之后测试 Nginx ,如果没报错,则重启Nginx
nginx -t sudo systemctl restart nginx
至此,Nginx反向代理配置完成。
Obsidian 配置 LiveSync 下载 LiveSync 插件 Obsidian - 设置 - 第三方插件 - 社区插件市场 - 浏览
搜索 LiveSync 并安装
配置 LiveSync Obsidian - 设置 - Self-hosted LiveSync - ManialSetup - Start - Remote Configuration 检验数据库配置是可能会出现几个告警,可通过点击告警后面的fix来修复,至此第一个设备配置完成。
多端同步 设置 - Self-hosted LiveSync - ManialSetup - Setup - To setup other devices 生成同步 URI
在其他设备上安装好 Self-hosted LiveSync 插件后,进入 Setup 页面,点击 Connect with setup URI 并输入同步 URI ,后续选择第一项,确认导入。
同步策略 设置 - Self-hosted LiveSync - Sync Settings 可以配置同步策略。 同步模式 LiveSync 为实时同步,在跟移动设备同步时,启用 LiveSync 会提升功耗,按需开启。