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 inalchemy.run.ts. Then use Alchemy to review and deploy all Cloudflare resources:
git clone https://github.com/paperkeel/browser-sync
cd browser-sync
pnpm install
pnpm exec alchemy login
export CLOUDFLARE_API_TOKEN=<token>
export CLOUDFLARE_ACCOUNT_ID=<account-id>
pnpm infra:plan
pnpm infra:deployCloudflare stores the shared Alchemy state. 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
- Open the extension options page.
- Set the sync endpoint to your worker URL.
- Approve browser access to that exact origin.
- 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.