Self-hosting

Run the sync server on your own Cloudflare account and point the extension at it.

What you deploy

The server is one Cloudflare Worker with a Durable Object per pool. It exposes the API that the extension calls. All pool data is encrypted on the client, so self-hosting changes who stores the ciphertext — the protocol stays the same.

Deploy the worker

Clone the repository and configure the production domain and zone insst.config.ts. Then use SST to review and deploy all Cloudflare resources:

git clone https://github.com/bearfire-dev/bearly-browser-sync
cd bearly-browser-sync
pnpm install
export CLOUDFLARE_API_TOKEN=<token>
export CLOUDFLARE_DEFAULT_ACCOUNT_ID=<account-id>
pnpm infra:install
pnpm infra:diff
pnpm infra:deploy

The Cloudflare home provider keeps the compressed SST state in the account's SST R2 state bucket. Sync data stays in Durable Object SQLite.

The worker uses Durable Objects. Check that your Cloudflare plan includes them before you deploy.

Point the extension at your endpoint

  1. Open the extension options page.
  2. Set the sync endpoint to your worker URL.
  3. Approve browser access to that exact origin.
  4. Create a pool as usual.

Every browser in a pool must use the same endpoint. Join codes created against your endpoint only work for browsers configured with it.