TL;DR

Selfsync là Chrome Sync server tự host, viết bằng Rust, dùng SQLite làm storage và tận dụng đúng cờ --sync-url có sẵn của Chrome để chuyển toàn bộ luồng đồng bộ về máy bạn. Bookmark, password, history, preferences — tất cả nằm trong một file selfsync.db trên ổ cứng của bạn, không qua Google. Multi-user tự động vì Chrome gắn email tài khoản vào mọi request. License GPL-3.0-or-later. Cảnh báo lớn: không có auth, tuyệt đối không expose ra internet công cộng.

What's new

Đa số dự án self-hosted Chrome sync trước đây (như jackyzy823/chromium-sync-server, valurhrafn/chrome-sync-server) đều dừng ở mức experimental, viết bằng Python/Node, ít maintain. Selfsync mới hơn, 99.3% Rust, ship sẵn docker compose, và quan trọng nhất: nó implement đúng protobuf protocol mà Chrome native dùng — không phải proxy, không phải fork browser, không phải extension.

Cấu hình client gọn đến mức buồn cười:

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

Không cần tạo Google Cloud project, không cần OAuth, không cần CA cert. Chrome tự gắn email tài khoản đăng nhập vào mọi sync request, và selfsync dùng email đó làm tenant key — multi-user out of the box mà không có một dòng config nào.

Why it matters

Chrome Sync là một trong những kênh dữ liệu cá nhân giàu nhất mà Google nắm: bạn lướt web ở đâu, lưu password gì, autofill bằng địa chỉ nào, mở tab nào ở thiết bị nào. Với người dùng quan tâm privacy, lựa chọn lâu nay là: (1) chấp nhận, (2) bỏ Chrome sang Firefox/Brave, hoặc (3) tắt sync và mất tiện ích đa thiết bị. Selfsync mở ra option thứ tư — giữ nguyên Chrome, mất 0 chức năng sync, mà data nằm trên homelab của bạn.

Đặt trong bối cảnh năm 2025–2026, khi Mozilla bị chỉ trích về terms of service và biến thành "basically an advertising company" theo bình luận trên Hacker News, việc có thêm một lựa chọn self-host trên Chromium ecosystem là tin tốt cho cộng đồng decentralization.

Technical facts

PropertyValue
LanguageRust 1.85+ (99.3% codebase)
StorageSQLite, single file (/data/selfsync.db mặc định trong Docker)
Bind0.0.0.0:8080
ProtocolChrome Sync protobuf, tham chiếu loopback_server.cc của Chromium
AuthKhông có — email tài khoản Google làm tenant key
Deploydocker compose up -d hoặc cargo build --release
LicenseGPL-3.0-or-later

Lưu ý quan trọng từ README: khi đặt --sync-url, không thêm path /command/ — Chrome tự append. Chỉ ghi base URL.

Comparison

AspectGoogle SyncSelfsyncFirefox Sync (self-host)Brave Sync v2 (self-host)
BrowserChromeChrome / ChromiumFirefoxBrave
BackendGoogle cloudRust + SQLitePython + MySQL/PostgresGo + database
AuthGoogle accountKhông (email = key)Firefox Account (FxA) đầy đủBrave keypair
SetupZero1 containerNặng (DB + FxA + email server)Trung bình
Data leaves machineKhôngKhôngKhông

So với Firefox Sync self-host (vốn đòi MySQL + Firefox Accounts service + email outbound), selfsync gọn nhẹ hơn nhiều — bù lại đánh đổi bằng việc không có lớp authentication thực thụ.

Use cases

  • Privacy-first power users: muốn UX Chrome nhưng không muốn Google profiling.
  • Homelaber: chạy selfsync trong cụm Docker, kết hợp Tailscale hoặc WireGuard để sync laptop ↔ desktop ↔ Chromium dev build trên Android.
  • Đội ngũ bị compliance ràng buộc: ngành tài chính, y tế, defense — không được gửi browsing telemetry ra public cloud.
  • Hộ gia đình nhiều account: mỗi người login email khác, selfsync tự isolate, zero config.
  • Cross-Chromium: sync giữa Brave, Vivaldi, Edge dev (những fork honor --sync-url).

Limitations & pricing

Miễn phí, GPL-3.0-or-later. Chỉ tốn chi phí self-host (một Raspberry Pi cũng dư).

Cảnh báo bảo mật từ chính README: "Do NOT expose this server to the public internet." Không có auth nghĩa là bất cứ ai biết email Google của bạn và route được tới port 8080 đều đọc/ghi được toàn bộ password, history. Bắt buộc:

  • Chỉ chạy trên LAN tin cậy, hoặc
  • Đặt sau Tailscale/WireGuard/Cloudflare Tunnel zero-trust, hoặc
  • Thêm reverse proxy với mTLS / basic auth ở tầng trên.

Hạn chế khác:

  • Mobile Chrome (iOS/Android stock) không cho đổi --sync-url — chỉ chạy được trên Chromium dev build hoặc thiết bị root.
  • Sau khi xoá SQLite DB phải dùng fresh Chrome profile, nếu không state sync sẽ lệch.
  • Coverage của tất cả datatype Chrome sync (Wallet, Reading List, Tab groups...) chưa được test exhaustively như reference server của Google.

What's next

Selfsync đang ở giai đoạn early — community-driven, không có roadmap công bố. Hướng phát triển hợp lý:

  • Coverage thêm sync datatypes (Wallet, Reading List, Tab groups, Saved Tab Groups).
  • Optional mTLS hoặc token auth cho phép expose qua tunnel an toàn hơn.
  • Pre-built binaries cho người không muốn dùng Docker.
  • Recipe cấu hình cho Brave / Vivaldi / Chromium dev trên Android.

Với base Rust gọn và protocol chuẩn của Chromium, dự án có nền tảng tốt để phát triển. Trong lúc chờ, đây đã là lựa chọn self-host khả thi nhất hiện nay cho ai muốn ở lại với Chrome ecosystem nhưng kéo dữ liệu sync về nhà.

Nguồn: github.com/loyalpartner/selfsync, HomegrownTechie, @QingQ77 trên X.