多端云同步(阿里云 OSS)
CloseChat 支持通过你自己的对象存储(任意 S3 兼容服务)在多端之间增量同步配置与对话。数据只存在你自己的存储桶里,CloseChat 不经手、不留存任何用户数据。
本文以阿里云对象存储 OSS 为例(S3 兼容,国内访问速度快)。其他 S3 兼容服务(AWS S3、Cloudflare R2、MinIO 等)配置思路一致。
工作原理
- 每台设备把数据加密后写入同一个存储桶的同一目录,按需增量同步。
- 多端共用一份配置:桌面端改了,移动端拉取后即可看到。
- 全程端到端由客户端直连存储桶,CloseChat 服务器不参与。
第一步:开通 OSS 并创建 Bucket
- 登录阿里云控制台,进入 对象存储 OSS,按提示开通服务。
- 创建一个 Bucket:
- 地域(Region):就近选择,例如「华北2(北京)」。记下它的 Region 标识(如
cn-beijing)和公网 Endpoint(如oss-cn-beijing.aliyuncs.com),后面要填。 - 读写权限:选择 私有(推荐,数据仅凭密钥访问)。
- 其余按默认即可。
- 地域(Region):就近选择,例如「华北2(北京)」。记下它的 Region 标识(如
第二步:创建访问密钥 AccessKey
为安全起见,不要用主账号 AccessKey,建议在 RAM 访问控制 中:
- 创建一个 RAM 用户,勾选「编程访问」。
- 给该用户授权 OSS 访问权限(可只授权目标 Bucket,权限最小化)。
- 保存生成的 AccessKey ID 和 AccessKey Secret(Secret 仅显示一次,务必妥善保存)。
第三步:配置跨域 CORS(重要,务必先做)
⚠️ 这一步最关键,且阿里云 CORS 生效较慢(可能数小时甚至一天)。强烈建议在创建 Bucket 后第一时间就配好,避免后续移动端同步因跨域被拦截而排查无门。
- 桌面端:客户端基于 Electron,已关闭浏览器安全策略,不受跨域限制影响,即使没配 CORS 也能同步。
- 移动端 / 网页端:受浏览器同源策略约束,必须正确配置 CORS 才能同步。
配置方式:进入 Bucket → 权限管理 → 跨域设置(CORS) → 创建规则。推荐配置如下:
| 项目 | 推荐值 |
|---|---|
| 来源 Allowed Origins | * |
| 允许 Methods | GET、PUT、POST、DELETE、HEAD |
| 允许 Headers | * |
| 暴露 Headers | ETag |
| 缓存时间 Max-Age(秒) | 86400 |
保存后耐心等待生效(同上,可能较久)。
第四步:在 CloseChat 填写配置
进入 设置 → 云同步(或「修改 S3 连接」),按下表填写:
| 字段 | 填写内容 | 示例 |
|---|---|---|
| Endpoint | Bucket 的公网 Endpoint,带 https:// | https://oss-cn-beijing.aliyuncs.com |
| Region | Bucket 所在地域标识 | cn-beijing |
| Bucket | Bucket 名称 | my-closechat-sync |
| Access Key | AccessKey ID | — |
| Secret Key | AccessKey Secret | — |
| 子目录(可选) | 在桶内的隔离目录;多账号共用一个桶时用它区分 | /closechat |
| Path 兼容模式(可选) | 阿里云 OSS 保持关闭;仅 Cloudflare R2 等部分供应商需开启 | 关闭 |
填好后点击 「测试连接」 确认无误,再点 「保存」,最后开启 「自动同步」。在另一台设备填入完全相同的配置,即可实现多端同步。
常见问题
测试连接通过,但移动端同步失败 / 报跨域错误? 基本是 CORS 未生效。确认第三步规则已保存,并耐心等待阿里云 CORS 生效(可能需要数小时到一天)。桌面端不受此影响,可先在桌面端验证配置本身正确。
多台设备能用同一套配置吗? 可以,且必须用同一个 Bucket + 同一个子目录,多端才会同步到同一份数据。
数据安全吗? 数据存在你自己的存储桶中,凭你自己的密钥访问,CloseChat 不经手。建议 Bucket 设为私有,并使用权限最小化的 RAM 子账号密钥。
