# 墨斗 CouchDB 一键部署

[墨斗官网](https://modow.vip/) · [同步与安装指南](https://modow.vip/sync/) · [English](https://modow.vip/couchdb/README.en.md)

这套工具会安装一个独立的 CouchDB，创建日常同步账号和数据库，并初始化为墨斗与 Obsidian Self-hosted LiveSync 可直接使用的格式。脚本可以重复执行，不会删除或清空已有数据库。

## 运行位置

请在准备长期充当同步服务器的设备上运行，例如 NAS、家用小主机或云服务器。装在普通电脑上，电脑一关机手机就同步不了；只配置局域网地址时，离开家中网络也访问不了。

如果没有配置 VPN、安全隧道或公网 HTTPS，手机只能在与 CouchDB 相同的局域网里同步。离开后仍可本地阅读和编辑，回到该局域网再同步即可。

运行前先安装并启动 Docker：

- macOS、Windows：Docker Desktop。
- Linux、NAS：Docker Engine；支持 Docker Compose，也支持仅有 Docker/Podman 的环境。

## macOS / Linux / NAS

```bash
curl -fsSL https://modow.vip/couchdb/install.sh -o install.sh
curl -fsSL https://modow.vip/couchdb/checksums.txt -o checksums.txt
grep ' install.sh$' checksums.txt | shasum -a 256 -c -
bash install.sh
```

只检查环境，不安装：

```bash
bash install.sh --doctor
```

## Windows 10 / 11

在 PowerShell 中运行：

```powershell
Invoke-WebRequest https://modow.vip/couchdb/install.ps1 -OutFile install.ps1
Invoke-WebRequest https://modow.vip/couchdb/checksums.txt -OutFile checksums.txt
(Get-FileHash .\install.ps1 -Algorithm SHA256).Hash
Get-Content .\checksums.txt
Set-ExecutionPolicy -Scope Process Bypass
.\install.ps1
```

确认输出的 SHA256 与 `checksums.txt` 中 `install.ps1` 的对应值一致后再运行。只检查环境：

```powershell
.\install.ps1 -Doctor
```

## 安装器会询问什么

1. CouchDB 管理员账号和密码。
2. 墨斗日常同步账号和密码。
3. 数据库名与端口。
4. 仅本机监听，还是允许局域网访问。
5. 是否允许 HTTP。HTTP 只用于受信任的局域网；公网必须使用 HTTPS。
6. 是否初始化 LiveSync 兼容信息。

安装完成后，屏幕会直接显示墨斗和 Obsidian 要填的服务地址、数据库名和同步用户名。管理员密码不会显示，日常同步也不需要长期使用管理员账号。

## 重复安装和已有数据

- 同一目录重复运行：复用原配置和数据，重新检查连接与兼容性。
- 数据库已存在：不删除、不清空；版本兼容时直接复用。
- 数据库版本不兼容：停止并提示换一个空数据库，不覆盖版本文档。
- 同步用户已存在但密码不符：停止，不自动改密码。
- 已有数据库未给同步用户授权：停止，不覆盖已有权限表。
- 端口、容器名被其他程序占用：停止并明确指出冲突。

配置和数据默认保存在 Docker volume 中，安装配置位于 `~/modou-couchdb`。`.env` 含密码，不要上传、截图或发给他人。

## 官方地址与公网安全

官方网站是 `https://modow.vip`，同步与安装指南位于 `https://modow.vip/sync/`。

如果你已获得本项目的官方同步账号，Modow 与 Obsidian 的服务地址都填写 `https://sync.modow.vip`，不要加 `:5984` 或 `/_utils`，并关闭“允许 HTTP”。`https://sync.modow.net` 是兼容别名，推荐优先使用 `.vip` 域名。浏览器管理面板地址为 `https://sync.modow.vip/_utils/`，仅用于网页管理，不能作为客户端服务地址。

官方服务器的 CouchDB 5984 端口只监听 `127.0.0.1`，公网无法直接访问 `47.87.70.206:5984`。客户端统一通过 HTTPS 443 反向代理连接，不要检查或放行公网 5984 端口。

安装器不会自动申请域名、证书或修改路由器。自行部署到公网时，应让 CouchDB 只监听 `127.0.0.1`，再通过 Caddy、Nginx、群晖反向代理等提供 HTTPS；绝不要把 5984 端口直接暴露到公网。仅在受信任的局域网内，才可以使用 `http://局域网IP:5984` 并打开“允许 HTTP”。

## 墨斗和 Obsidian

墨斗进入“设置 > 同步 > LiveSync”，填写安装器最后输出的服务地址、数据库名、同步用户名和同步密码。

Obsidian 安装 Self-hosted LiveSync 后选择 CouchDB，填写同一套信息。首次连接后运行 `Check and Fix database configuration`，确认检查项全部通过，再开始同步。

## 版本

- 安装器：1.0.0
- 默认 CouchDB 镜像：`docker.io/library/couchdb:3.4.3`
- LiveSync 数据库：DB 12 / Protocol 2 / 未加密

当前墨斗 3.0 只支持未加密、关闭路径混淆的 Self-hosted LiveSync 数据库（DB12 / P2）。
