
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(推荐)
最简单且数据持久化的方式。
- 创建
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 - 启动服务:
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. 开启同步
- 在 Chrome 中登录你的 Google 账号。
- 点击头像,确保“同步功能”已开启。
- 如果是首次连接,Chrome 可能会提示你确认同步设置,点击确认即可。
- 如果之前已开启同步,建议先关闭同步,等待几秒后重新开启,以触发全量数据上传到 selfsync。
3. 验证
检查 selfsync 所在的目录(如 ./data),你会发现 selfsync.db 文件体积逐渐增大,说明数据正在同步。
配置环境变量
| 变量 | 默认值 | 说明 |
|---|---|---|
SELFSYNC_ADDR | 127.0.0.1:8080 | 服务器监听地址。Docker 中建议设为 0.0.0.0:8080。 |
SELFSYNC_DB | selfsync.db | SQLite 数据库文件路径。 |
RUST_LOG | selfsync_server=info | 日志级别(debug, info, warn, error)。 |
多用户机制
selfsync 无需手动创建账户。其工作原理如下:
- Chrome 在每次同步请求的 Protobuf
share字段中携带当前登录用户的 Google 邮箱地址。 - selfsync 接收请求后,根据邮箱地址在 SQLite 中查找或创建独立的数据命名空间。
- 不同邮箱的数据完全隔离,互不可见。
常见问题
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 数据,即使数据库泄露,攻击者也无法直接获取明文密码(除非他们也知道你的同步密码)。
相关导航


Opera Air

SuperLevels

CloakBrowser

Lingoku

DuckDuckGo

Kitesurf







