惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Apple Machine Learning Research
Apple Machine Learning Research
aimingoo的专栏
aimingoo的专栏
H
Help Net Security
腾讯CDC
T
Tailwind CSS Blog
Hugging Face - Blog
Hugging Face - Blog
人人都是产品经理
人人都是产品经理
酷 壳 – CoolShell
酷 壳 – CoolShell
MongoDB | Blog
MongoDB | Blog
宝玉的分享
宝玉的分享
有赞技术团队
有赞技术团队
美团技术团队
雷峰网
雷峰网
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 司徒正美
博客园_首页
Recent Announcements
Recent Announcements
云风的 BLOG
云风的 BLOG
B
Blog RSS Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
D
Docker
博客园 - Franky
Jina AI
Jina AI

Dejavu's Blog

甲骨文 ARM 实例部署 Gemma 4 模型 Headscale + Tailscale 组建虚拟专用网 在 Linux 上使用 Yubikey OpenPGP 应用 BuyVM VPS 块存储挂载教程 Alpine Linux 服务器配置指南 Alpine Linux 安装 Cloudflared Docker 多容器共享中心数据库 安装 Komari 服务器监控工具 Scaleway VPS 安装 Debian Linux Debian 13 下部署 AsmBB 论坛 使用 Kopia 自动化备份服务器数据 给 Docker 启用 IPv6 支持 Netcup 服务器安装自定义 ISO 镜像 烽火 HG5582A 光猫开启桥接模式 Docker 自托管 Shlink 短链服务 我的 2025 年不完全回顾 Linux 下 Intel 核显驱动配置与硬件加速 Fedora Linux 安装配置记录 2025 年优雅地自托管 RSS 服务 Woodpecker CI 和 Gitea 实现 Hugo 自动部署 Gitea/Forgejo 集成 Woodpecker CI/CD 在 Blinko 中使用 Ollama 作为 AI 供应商 Docker 部署 Gitea/Forgejo Plausible CE 启用城市级地理位置识别 Blinko 开源 AI 知识库 Docker 部署指南 Netcup 免税账号注册及购买服务器全记录 Docker 自托管 Cloudreve Pro 私有网盘服务 GiffGaff SIM 卡使用体验和注意事项 简体中文互联网在变得糟糕吗? 如何低成本申请 S/MIME 证书用于个人邮件服务
部署 Obsidian LiveSync 实时同步服务指南
Dejavu Moe · 2026-01-05 · via Dejavu's Blog

Obsidian LiveSync 是一款面向 Obsidian 用户的同步解决方案,无需依靠官方付费同步服务就能获得不错的实时同步体验,支持自动冲突处理、端到端加密,使我们完全掌控自己的数据和基础设施。

它支持使用自托管数据库 (Apache CouchDB) 、对象存储 (S3、B2、R2 等) 或 WebRTC P2P(实验性)来同步数据。对于对象存储和 P2P 同步,只需在插件里配置即可,无需服务端支持。

Apache CouchDB 是一个使用 JSON 作为存储格式,JavaScript 作为查询语言的 NoSQL 数据库,很适合作为 Obsidian 的存储。下面的自托管部署 LiveSync 服务,本质上就是部署一个单节点运行的 CouchDB 数据库。

先决条件

  • 已安装 Docker CE
  • 已安装 Docker Compose
  • Nginx 或其他用于反向代理服务器
  • SSL/TLS 证书提供 HTTPS 访问(必需的)

开始部署

准备一个文件夹,用于 LiveSync 容器数据持久化

mkdir obsidian-livesync && cd $
# 准备 Docker 绑定卷
mkdir -p {data,local.d}
sudo chown -R 1000:1000 {data,local.d}

新建一个 compose.yml 模板

写入内容

services:
  couchdb:
    image: couchdb:3.5
    container_name: obsidian-livesync
    user: 1000:1000
    restart: unless-stopped
    environment:
      - TZ=Asia/Shanghai
      - COUCHDB_USER=<userName>           # 设置用户名
      - COUCHDB_PASSWORD=<adminPassword>  # 设置一个强密码
    volumes:
      - ./data:/opt/couchdb/data
      - ./local.d:/opt/couchdb/etc/local.d
    ports:
     - '127.0.0.1:5984:5984'

启动服务

sudo docker compose up -d

初始化数据库

使用官方脚本对数据库进行初始化,注意替换用户名和密码

curl -s https://raw.githubusercontent.com/vrtmrz/obsidian-livesync/main/utils/couchdb/couchdb-init.sh | hostname=http://127.0.0.1:5984 username=<userName> password=<adminPassword> bash

建议初始化后重启下容器

sudo docker compose down && sudo docker compose up -d

OK,现在 CouchDB 数据库已经准备就绪。

反向代理

我使用 Nginx 设置反向代理访问,下面是一个示例配置文件:

server {
    listen 80;
    listen [::]:80;
    server_name ob-livesync.your.domain;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    http2 on;
    server_name ob-livesync.your.domain;

    ssl_certificate /path/to/cert/ob-livesync.your.domain.pem;
    ssl_certificate_key /path/to/cert/ob-livesync.your.domain.key;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ecdh_curve X25519:P-256:P-384;
    ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-CHACHA20-POLY1305:ECDHE+AES128:RSA+AES128:ECDHE+AES256:RSA+AES256';
    ssl_prefer_server_ciphers off;

    ssl_session_timeout 1d;
    ssl_session_cache shared:MozSSL:10m;

    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

    access_log /var/log/nginx/ob-livesync.your.domain.access.log;
    error_log /var/log/nginx/ob-livesync.your.domain.error.log;

    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header X-XSS-Protection "1; mode=block" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header Referrer-Policy "no-referrer-when-downgrade" always;
    add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline'" always;

    client_max_body_size 4G;

    proxy_read_timeout 3600s;
    proxy_send_timeout 3600s;

    location / {
        proxy_pass http://127.0.0.1:5984;
        proxy_http_version 1.1;

        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-For $realip_remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;

        proxy_redirect off;
    }
}

检查 Nginx 配置

没问题的话,重新加载配置

除了 Nginx,也可以使用一些更加方便的反向代理方案,通常情况下他们提供 HTTPS 访问也更加方便:

登录仪表盘

访问 https://ob-livesync.your.domain/_utils/ 可以查看 Apache CouchDB 仪表盘,首先检查下安装设置是否正确

initDB.webp

新建一个数据库,比如 obsidian,这不是必需的步骤,插件本身可以执行该操作

createDB.webp

服务端配置就结束了,下面我们开始配置 Obsidian 客户端插件。

Obsidian 配置

安装插件

安装并启用 Self-hosted LiveSync 插件

install-plugin.webp

配置插件

对于首台设备,选择设置新的同步服务

first-time.webp

手动输入服务器信息

manually.webp

可选端到端加密和文件信息混淆,这在保护数据隐私很有效,同时也为以后把自己「锁在外面」埋下了隐患,请妥善保存 E2E 加密密钥。

e2e.webp

选择 CouchDB 数据库

couchdb.webp

按照实际信息填写

couchdb-setup.webp

测试正确,继续下一步

test-continue.webp

目前远程服务器仍然是一个空的数据库,直接用本地覆盖服务器

override.webp

实时同步

这是 LiveSync 的核心功能了,启用实时同步方案

livesync.webp

其他设备的 Obsidian 安装好同步插件,复制 URI 或使用手机扫描二维码,直接同步设置。

注意:二维码是非加密的,请注意扫码软件隐私安全,建议使用系统扫码器。

sync-devices.webp

同步插件

打开「隐藏文件」同步,设置好排除路径,可以同步插件、主题和设置。

sync-hidden-files.webp

结语

Obsidian LiveSync 提供了非常棒的同步方案,但插件设置稍显复杂,建议仔细阅读项目说明文档,确保充分理解其作用后再配置。

根据 GitHub 和 Reddit 上的用户反馈,因误操作或其他因素,可能导致服务器数据库发生不可逆的损毁。因此,切勿将所有数据依赖单一方案;对重要数据,建议配置多重或手动备份机制,这样才最保险。