Skip to content

loyalpartner/selfsync

Repository files navigation

selfsync

selfsync

Your own Chrome & Edge sync server. Bookmarks, passwords, settings — synced between your devices, stored only on your machine.

License Release Lazycat AppStore

English · 中文

What you get

  • Bookmarks, passwords, autofill, history, tabs, extensions and settings synced between your Chrome / Edge installs.
  • Data stays on your hardware. No Google account, no Microsoft account.
  • Single binary, single SQLite file. Back it up by copying one file.
  • Runs on Linux, macOS, Windows, Docker, or one click on Lazycat.

Install

Docker / Docker Compose

docker compose up -d

Data persists in a named Docker volume. The image is published at ghcr.io/loyalpartner/selfsync.

Pre-built binary

Grab a release for your platform from GitHub Releases — Linux (x86_64 / aarch64), Windows, macOS (Intel / Apple Silicon). Unpack and run selfsync-server.

Lazycat one-click

If you run a Lazycat box, search "SelfSync" in your AppStore, or open it directly at https://appstore.<your-box>.heiyu.space/#/shop/detail/cloud.lazycat.app.chromesync (replace <your-box> with your device name).

Note

selfsync has no login screen — anything that can reach the port can read your synced data. Run it on your home LAN, NAS, or homelab. To access it from outside your network, put it behind Tailscale, WireGuard, or Cloudflare Zero Trust.

Connect your browser

Launch your browser pointed at the server, sign in with any account, and turn sync on. No export/import needed — your local data uploads automatically.

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

Edge note: if multiple people share one selfsync instance with Edge, their data merges into one profile (Edge doesn't tell the server which account is signed in). For separate Edge users, run a separate instance per person. Chrome users on the same instance are kept separate automatically.

Linux: persistent flags

Most Linux Chromium / Chrome packages (Arch chromium, AUR google-chrome, Manjaro, etc.) ship a launcher wrapper that reads extra flags from a config file, so you don't have to type --sync-url every time. Write one line to whichever applies:

  • Chromium: ~/.config/chromium-flags.conf
  • Google Chrome: ~/.config/chrome-flags.conf
  • Microsoft Edge: ~/.config/microsoft-edge-flags.conf
  • Flatpak: same filenames under ~/.var/app/<app-id>/config/
--sync-url=http://127.0.0.1:8080

Restart the browser. Distros that ship no launcher wrapper (e.g. Debian's official google-chrome deb) ignore this file — use a .desktop override or your own wrapper script instead.

Android Chrome

With the device plugged in via ADB:

adb shell am set-debug-app --persistent com.android.chrome
adb shell 'echo "chrome --sync-url=http://<host>:8080" > /data/local/tmp/chrome-command-line'
adb shell am force-stop com.android.chrome

Replace <host> with your selfsync host (LAN IP, NAS hostname, or Tailscale name). After Chrome relaunches, open chrome://sync-internals and confirm Sync Service URL shows your address. No APK rebuild needed.

Configuration

Variable Default Description
SELFSYNC_ADDR 127.0.0.1:8080 TCP address to bind
SELFSYNC_DB selfsync.db SQLite database path
RUST_LOG selfsync_server=info,http=info Log filter (tracing-subscriber syntax)

In the Docker image the defaults are overridden to 0.0.0.0:8080 and /data/selfsync.db.

For developers

Rust 1.85+, cargo build --release. Protocol details, HTTP routes, schema, and contributor notes live in docs/architecture.md. Common gotchas in docs/faq.md.

License

Copyright (C) 2026 Lee <loyalpartner@163.com>. Licensed under GPL-3.0-or-later.

About

Self-hosted Chrome / Edge Sync server. 自托管 Chrome / Edge 同步服务器 — 书签、密码、偏好等浏览器数据留在本地,不经过 Google 或 Microsoft

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors