多端云同步(阿里云 OSS)

CloseChat 支持通过你自己的对象存储(任意 S3 兼容服务)在多端之间增量同步配置与对话。数据只存在你自己的存储桶里,CloseChat 不经手、不留存任何用户数据。

本文以阿里云对象存储 OSS 为例(S3 兼容,国内访问速度快)。其他 S3 兼容服务(AWS S3、Cloudflare R2、MinIO 等)配置思路一致。

工作原理

  • 每台设备把数据加密后写入同一个存储桶的同一目录,按需增量同步。
  • 多端共用一份配置:桌面端改了,移动端拉取后即可看到。
  • 全程端到端由客户端直连存储桶,CloseChat 服务器不参与。

第一步:开通 OSS 并创建 Bucket

  1. 登录阿里云控制台,进入 对象存储 OSS,按提示开通服务。
  2. 创建一个 Bucket
    • 地域(Region):就近选择,例如「华北2(北京)」。记下它的 Region 标识(如 cn-beijing)和公网 Endpoint(如 oss-cn-beijing.aliyuncs.com),后面要填。
    • 读写权限:选择 私有(推荐,数据仅凭密钥访问)。
    • 其余按默认即可。

第二步:创建访问密钥 AccessKey

为安全起见,不要用主账号 AccessKey,建议在 RAM 访问控制 中:

  1. 创建一个 RAM 用户,勾选「编程访问」。
  2. 给该用户授权 OSS 访问权限(可只授权目标 Bucket,权限最小化)。
  3. 保存生成的 AccessKey IDAccessKey Secret(Secret 仅显示一次,务必妥善保存)。

第三步:配置跨域 CORS(重要,务必先做)

⚠️ 这一步最关键,且阿里云 CORS 生效较慢(可能数小时甚至一天)。强烈建议在创建 Bucket 后第一时间就配好,避免后续移动端同步因跨域被拦截而排查无门。

  • 桌面端:客户端基于 Electron,已关闭浏览器安全策略,不受跨域限制影响,即使没配 CORS 也能同步。
  • 移动端 / 网页端:受浏览器同源策略约束,必须正确配置 CORS 才能同步。

配置方式:进入 Bucket → 权限管理 → 跨域设置(CORS) → 创建规则。推荐配置如下:

项目推荐值
来源 Allowed Origins*
允许 MethodsGETPUTPOSTDELETEHEAD
允许 Headers*
暴露 HeadersETag
缓存时间 Max-Age(秒)86400

保存后耐心等待生效(同上,可能较久)。

第四步:在 CloseChat 填写配置

进入 设置 → 云同步(或「修改 S3 连接」),按下表填写:

字段填写内容示例
EndpointBucket 的公网 Endpoint,带 https://https://oss-cn-beijing.aliyuncs.com
RegionBucket 所在地域标识cn-beijing
BucketBucket 名称my-closechat-sync
Access KeyAccessKey ID
Secret KeyAccessKey Secret
子目录(可选)在桶内的隔离目录;多账号共用一个桶时用它区分/closechat
Path 兼容模式(可选)阿里云 OSS 保持关闭;仅 Cloudflare R2 等部分供应商需开启关闭

填好后点击 「测试连接」 确认无误,再点 「保存」,最后开启 「自动同步」。在另一台设备填入完全相同的配置,即可实现多端同步。

常见问题

测试连接通过,但移动端同步失败 / 报跨域错误? 基本是 CORS 未生效。确认第三步规则已保存,并耐心等待阿里云 CORS 生效(可能需要数小时到一天)。桌面端不受此影响,可先在桌面端验证配置本身正确。

多台设备能用同一套配置吗? 可以,且必须用同一个 Bucket + 同一个子目录,多端才会同步到同一份数据。

数据安全吗? 数据存在你自己的存储桶中,凭你自己的密钥访问,CloseChat 不经手。建议 Bucket 设为私有,并使用权限最小化的 RAM 子账号密钥。