微尘印记
CouchDB + Caddy 服务端部署

本文是 Self-hosted LiveSync 系列 的服务端部署篇。完成这篇之后,继续阅读 Self-hosted LiveSync 插件配置与维护


准备工作

  • 一台有公网 IP 的 VPS(1G 内存起步,推荐 2G)
  • 一个已解析到该 VPS 的域名(移动端同步必须 HTTPS,域名不可缺)

第一步:创建目录结构和配置文件

选一个你喜欢的目录,建好文件夹:

mkdir -p ~/livesync/conf
mkdir -p ~/livesync/data/couchdb
mkdir -p ~/livesync/data/caddy

创建 CouchDB 配置文件:

nano ~/livesync/conf/local.ini

写入以下内容:

[couchdb]
single_node=true
max_document_size = 50000000

[chttpd]
require_valid_user = true
max_http_request_size = 4294967296

[chttpd_auth]
require_valid_user = true
authentication_redirect = /e=_/_utils/session.html

[httpd]
WWW-Authenticate = Basic realm="couchdb"
enable_cors = true

[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

几个关键点:

  • single_node=true:个人使用必须开启
  • origins 三个来源缺一不可,Obsidian 桌面端和移动端都依赖这里
  • max_http_request_size 调大,避免大文件同步中断

第二步:启动 CouchDB + Caddy

创建 docker-compose.yml

nano ~/livesync/docker-compose.yml

写入以下内容,替换三处占位符:

services:
  caddy:
    image: lucaslorentz/caddy-docker-proxy:ci-alpine
    container_name: caddy
    ports:
      - 80:80
      - 443:443
    environment:
      - CADDY_INGRESS_NETWORKS=livesync_default
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./data/caddy:/data
    restart: always

  couchdb:
    image: couchdb:latest
    container_name: couchdb-livesync
    environment:
      - COUCHDB_USER=你的用户名        # 替换这里
      - COUCHDB_PASSWORD=你的强密码    # 替换这里
    volumes:
      - ./data/couchdb:/opt/couchdb/data
      - ./conf/local.ini:/opt/couchdb/etc/local.d/local.ini
    restart: unless-stopped
    labels:
      caddy: 你的域名                  # 替换这里,例如 sync.example.com
      caddy.handle_path: /*
      caddy.handle_path.0_respond: "\"\" 403"
      caddy.handle_path.0_header.-Server: ""
      caddy.handle_path_1: /e=_/*
      caddy.handle_path_1.0_reverse_proxy: "{{upstreams 5984}}"

说明:

  • CouchDB 挂载在 /e=_/ 子目录下,根路径返回 403,减少恶意扫描
  • Caddy 会自动申请并续期 Let’s Encrypt 证书,无需手动操作
  • ARM 架构 VPS(如 Oracle Cloud 免费套餐)将 Caddy 镜像替换为 lucaslorentz/caddy-docker-proxy:ci-alpine-arm32v6

启动服务:

cd ~/livesync
docker compose up -d

已有 Nginx 或 Caddy 的用户:删除 compose 里的 caddy 服务块和 couchdblabels,改为暴露端口:

    ports:
      - 5984:5984

在已有的反向代理里将流量转发到 5984 端口即可。


第三步:验证服务

浏览器访问 https://你的域名/e=_/_utils/,看到 CouchDB 管理界面并提示输入用户名密码,说明服务和 HTTPS 均正常。


服务端部署完成,接下来前往 Self-hosted LiveSync 插件配置与维护 配置 Obsidian 插件。

〰️
〰️

💬 评论

🧙‍♂️

评论区正在施法中...

信使正在穿越次元壁,即将抖达... *Alohomora!* 🔓

    输入关键词开始搜索