selfsync

6个月前发布 309 00

selfsync 是一个轻量级、自托管的 Google Chrome 同步服务器实现。它允许你将浏览器的书签、密码、历史记录、扩展程序及设置等数据同步到自己的服务器(如 NAS、本地电脑或私有云),完全绕过 Google 的云端服务,从而掌握数据的绝对主权。

所在地:
中国
收录时间:
2026-04-21
selfsyncselfsync

selfsync 是一个轻量级、自托管的 Google Chrome 同步服务器实现。它允许你将浏览器的书签、密码、历史记录、扩展程序及设置等数据同步到自己的服务器(如 NAS、本地电脑或私有云),完全绕过 Google 的云端服务,从而掌握数据的绝对主权。

该项目基于 Rust 构建,实现了 Chrome 的原生同步协议,使用 SQLite 存储数据,并天然支持多用户隔离。

重要安全警告

切勿将 selfsync 直接暴露在公网!

  • 无认证机制:selfsync 目前没有内置用户名/密码认证。
  • 风险:任何知道你的服务器地址和关联 Google 邮箱的人,都可以读取甚至覆盖你的同步数据(包括保存的明文密码)。
  • 建议部署环境:
    • 仅限可信的局域网(LAN)。
    • 通过 Tailscale、Cloudflare Zero Trust、WireGuard 或 Nginx Auth 等零信任隧道/反向代理进行保护。

核心特性

  • 完全私有:数据存储在本地 SQLite 文件中,不上传至 Google。
  • 无缝迁移:无需导出/导入,只需更改启动参数,Chrome 会自动将现有缓存数据上传至新服务器。
  • 多用户支持:自动根据 Chrome 登录的 Google 账号邮箱隔离数据空间,无需额外配置。
  • 轻量高效:Rust 编写,资源占用极低,适合长期运行在低功耗设备(如 Raspberry Pi)上。
  • 标准协议:完美兼容 Chrome/Chromium 原生同步客户端。

快速开始

方式一:Docker Compose(推荐)

最简单且数据持久化的方式。

  1. 创建 docker-compose.yml:
    version: '3'
    services:
      selfsync:
        image: https://github.com/loyalpartner/selfsync.git 
        ports:
          - "8080:8080"
        volumes:
          - ./data:/data
        environment:
          - SELFSYNC_ADDR=0.0.0.0:8080
          - SELFSYNC_DB=/data/selfsync.db
    
  2. 启动服务:
    docker compose up -d
    

方式二:Docker 直接运行

docker run -d \
  -p 8080:8080 \
  -v $(pwd)/data:/data \
  -e SELFSYNC_ADDR=0.0.0.0:8080 \
  -e SELFSYNC_DB=/data/selfsync.db \
  --name selfsync \
  selfsync-image-name

方式三:源码编译

需要安装 Rust 工具链。

git clone https://github.com/your-repo/selfsync.git
cd selfsync
cargo build --release

# 启动服务器
./target/release/selfsync-server

配置 Chrome 客户端

Chrome 默认连接 Google 同步服务器,你需要通过命令行参数指定自定义同步端点。

1. 启动 Chrome

Windows:
右键 Chrome 快捷方式 -> 属性 -> 目标,在末尾添加:

--sync-url=http://127.0.0.1:8080

(请将 IP 替换为你部署 selfsync 的服务器地址)

macOS / Linux:
在终端中运行:

google-chrome-stable --sync-url=http://127.0.0.1:8080

注意:URL 不要包含 /command/ 后缀,Chrome 会自动追加。

2. 开启同步

  1. 在 Chrome 中登录你的 Google 账号。
  2. 点击头像,确保“同步功能”已开启。
  3. 如果是首次连接,Chrome 可能会提示你确认同步设置,点击确认即可。
  4. 如果之前已开启同步,建议先关闭同步,等待几秒后重新开启,以触发全量数据上传到 selfsync。

3. 验证

检查 selfsync 所在的目录(如 ./data),你会发现 selfsync.db 文件体积逐渐增大,说明数据正在同步。

配置环境变量

变量默认值说明
SELFSYNC_ADDR127.0.0.1:8080服务器监听地址。Docker 中建议设为 0.0.0.0:8080。
SELFSYNC_DBselfsync.dbSQLite 数据库文件路径。
RUST_LOGselfsync_server=info日志级别(debug, info, warn, error)。

多用户机制

selfsync 无需手动创建账户。其工作原理如下:

  1. Chrome 在每次同步请求的 Protobuf share 字段中携带当前登录用户的 Google 邮箱地址。
  2. selfsync 接收请求后,根据邮箱地址在 SQLite 中查找或创建独立的数据命名空间。
  3. 不同邮箱的数据完全隔离,互不可见。

常见问题

Q: 我可以重置数据库吗?

A: 可以。删除 selfsync.db 文件并重启服务即可。但请注意,重置后建议使用全新的 Chrome Profile (--user-data-dir=/tmp/test) 进行测试,因为本地 Chrome 缓存的同步状态可能与新数据库冲突,导致同步失败。

Q: 支持 Firefox 或其他浏览器吗?

A: 不支持。selfsync 专门实现了 Chrome Sync Protocol。Firefox 使用不同的同步协议(Sync Storage Server)。

Q: 数据加密吗?

A: Chrome 客户端在发送数据前会对敏感信息(如密码)进行加密,密钥通常与你的 Google 账号 passphrase 绑定。selfsync 仅存储加密后的 blob 数据,即使数据库泄露,攻击者也无法直接获取明文密码(除非他们也知道你的同步密码)。

相关导航