You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
There is no web interface. In Firefox open about:config, set identity.sync.tokenserver.uri to http://:8000/1.0/sync/1.5, restart Firefox, then sign in to Sync. about:sync-log shows whether it talks to your server. Health check: http://:8000/heartbeat
Sign-in still goes through your Mozilla account at accounts.firefox.com. Only the sync data is stored on this server.
Firefox syncs to the storage URL this server hands out, set by SYNC_TOKENSERVER__INIT_NODE_URL in /opt/firefox-syncserver_data/.env (default http://:8000). If you use HTTPS through a reverse proxy, or the container IP changes, set it to the public origin (e.g. https://sync.example.com) before the first sign-in and point identity.sync.tokenserver.uri at that origin. The value is written to the nodes table on first start, so changing it later also needs an UPDATE on that table.
Firefox for Android: in Settings > About Firefox tap the logo repeatedly to unlock the debug menu, set the custom Sync server to the same /1.0/sync/1.5 URL, and do this before signing in.
Install and every update compile the server from source with Rust. The 4 GB RAM is needed for that build; the running server needs far less.
Note: This is not in the official repo yet—it's just a dev version! After merging into ProxmoxVE, it will need to be recreated.
excited to test this, so first of all ty for the script...
I have exposed my lxc through a cloudflare tunnel and set it up on the .env as the docs say
And I also have pointed my ffox client to that subdomain.domain.com/1.0/sync/1.5 on the about:config "identity.sync.tokenserver.uri" section but 2 have come up to my attention:
restarting ffox seems to reset "identity.sync.tokenserver.uri" ... or maybe i'm doing something wrong editing/saving that parameter...
there seems to be no activity in the .../heartbeat section it says "0" even without restarting ffox (when the parameter seems to stay) and in about:sync-log there is no activity , nothing...
my ffox client runs in a cachyos laptop (arch based) with COSMIC de...
Any help is welcomed and ty again for the script.
Firefox syncs to the storage URL the server hands out, which is stored in the database on first start, so changing SYNC_TOKENSERVER__INIT_NODE_URL in the .env afterwards isn't sadly enough. Inside the container:
su - postgres -c "psql -d syncserver -c 'SELECT id, node FROM nodes;'"
su - postgres -c "psql -d syncserver -c \"UPDATE nodes SET node='https://sync.example.com' WHERE id=1;\""
systemctl restart firefox-syncserver
In Firefox, sign out of Sync first, then set identity.sync.tokenserver.uri, restart and sign in again. If the pref still resets after a restart, look for a user.js or policies file overriding it (some distro builds ship one).
If you want, I could also make the service apply the .env value to the nodes table on every start. Changing the URL plus systemctl restart would then be enough, without SQL, but you need to test it first please @lmateovf
I think the identity.sync.tokenserver.uri was reseting to default because I was signing out ... so that was just a misundertanding of how firefox manages the about:config parameter on my side, ty!
Testing right now:
modified the sql rows you told me earlier
singing out (realising the identity.sync.tokenserver.uri changes to default now)
about:sync-log no output too... "No sync logs have been recorded."
Maybe it is that i have it exposed through a Cloudflare tunnel? I wil try later exposing it with my caddy reverse proxy... maybe that helps and gives us more logs
changed the env with my cloudflare tunnel subdomain
executed your sql commands with my actual subdomain
signed out, changed the about:config parameter
restarted ffox, just in case... the parameter stayed changed😄
sing in again and failed to connect again 🥹
nothing on about:sync-log , paramer in about:config is correct, "0" in subdomain.example.com/heartbeat...
Maybe this helps...
this is the tunnel "live log" from cloudflare dashboard when i try to access /heartbeat or /1.0/sync/1.5 through it... as you can see the fixed ip is *224 but no sign of response ... guess it shouldn't work without proper authentication and that's why the /1.0/sync/1.5 returns 401...
I also signed out and in again with the live-logs turned on...
Activity
github-actions commentedon Sep 29, 2026
The Firefox-Syncserver script is ready for testing. Run it in the Proxmox VE shell (or on an Incus host) to create a container:
There is no web interface. In Firefox open about:config, set identity.sync.tokenserver.uri to http://:8000/1.0/sync/1.5, restart Firefox, then sign in to Sync. about:sync-log shows whether it talks to your server. Health check: http://:8000/heartbeat
Sign-in still goes through your Mozilla account at accounts.firefox.com. Only the sync data is stored on this server.
Firefox syncs to the storage URL this server hands out, set by SYNC_TOKENSERVER__INIT_NODE_URL in /opt/firefox-syncserver_data/.env (default http://:8000). If you use HTTPS through a reverse proxy, or the container IP changes, set it to the public origin (e.g. https://sync.example.com) before the first sign-in and point identity.sync.tokenserver.uri at that origin. The value is written to the nodes table on first start, so changing it later also needs an UPDATE on that table.
Firefox for Android: in Settings > About Firefox tap the logo repeatedly to unlock the debug menu, set the custom Sync server to the same /1.0/sync/1.5 URL, and do this before signing in.
Install and every update compile the server from source with Rust. The 4 GB RAM is needed for that build; the running server needs far less.
Note: This is not in the official repo yet—it's just a dev version! After merging into ProxmoxVE, it will need to be recreated.
Discord testing thread: https://discord.com/channels/1302816934508630047/1554477013295825057
lmateovf commentedon Oct 11, 2026
Hi!
excited to test this, so first of all ty for the script...
I have exposed my lxc through a cloudflare tunnel and set it up on the .env as the docs say
And I also have pointed my ffox client to that subdomain.domain.com/1.0/sync/1.5 on the about:config "identity.sync.tokenserver.uri" section but 2 have come up to my attention:
my ffox client runs in a cachyos laptop (arch based) with COSMIC de...
Any help is welcomed and ty again for the script.
MickLesk commentedon Oct 12, 2026
Firefox syncs to the storage URL the server hands out, which is stored in the database on first start, so changing SYNC_TOKENSERVER__INIT_NODE_URL in the .env afterwards isn't sadly enough. Inside the container:
In Firefox, sign out of Sync first, then set identity.sync.tokenserver.uri, restart and sign in again. If the pref still resets after a restart, look for a user.js or policies file overriding it (some distro builds ship one).
If you want, I could also make the service apply the .env value to the nodes table on every start. Changing the URL plus systemctl restart would then be enough, without SQL, but you need to test it first please @lmateovf
lmateovf commentedon Oct 12, 2026
Hi,
Ty for your response.
I will then test what you said and report back.
Hopefully I can later today…
lmateovf commentedon Oct 12, 2026
I think the
identity.sync.tokenserver.uriwas reseting to default because I was signing out ... so that was just a misundertanding of how firefox manages the about:config parameter on my side, ty!Testing right now:
identity.sync.tokenserver.urichanges to default now)Maybe it is that i have it exposed through a Cloudflare tunnel? I wil try later exposing it with my caddy reverse proxy... maybe that helps and gives us more logs
MickLesk commentedon Oct 12, 2026
can you install it again and test with current build?
lmateovf commentedon Oct 13, 2026
steps taken in this order:
nothing on about:sync-log , paramer in about:config is correct, "0" in subdomain.example.com/heartbeat...
Maybe this helps...
this is the tunnel "live log" from cloudflare dashboard when i try to access /heartbeat or /1.0/sync/1.5 through it... as you can see the fixed ip is *224 but no sign of response ... guess it shouldn't work without proper authentication and that's why the /1.0/sync/1.5 returns 401...
I also signed out and in again with the live-logs turned on...
tunnel-logs-94fedd4d-aa18-4c9b-9b9d-a88b573fdd7b-2026-10-13T08_32_06.173Z.csv
i think i cleaned right all mentions of my tunnel...
hope all this helps, have a nice day!