Skip to content

Firefox-Syncserver #2335

Open
Open

Description

@MickLesk

Name of the Script

Firefox-Syncserver

Script Type

CT (LXC Container)

Script path

No response

Where does it run?

Proxmox VE host

Does this script support arm64?

arm64 not tested

📋 Script Details

https://github.com/mozilla-services/syncstorage-rs

community-scripts/ProxmoxVE#1304

Mozilla Sync Storage is a local Firefox sync server. Used to sync/store: bookmarks, history, forms, preferences, tabs, passwords

Activity

  1. github-actions commented on Sep 29, 2026

    @github-actions
    Contributor

    The Firefox-Syncserver script is ready for testing. Run it in the Proxmox VE shell (or on an Incus host) to create a container:

    bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/ct/firefox-syncserver.sh)"
    

    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

  2. lmateovf commented on Oct 11, 2026

    @lmateovf

    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:

    • 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.

  3. MickLesk commented on Oct 12, 2026

    @MickLesk
    MemberAuthor

    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

  4. lmateovf commented on Oct 12, 2026

    @lmateovf

    Hi,

    Ty for your response.
    I will then test what you said and report back.

    Hopefully I can later today…

  5. lmateovf commented on Oct 12, 2026

    @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:

    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

  6. MickLesk commented on Oct 12, 2026

    @MickLesk
    MemberAuthor

    can you install it again and test with current build?

  7. lmateovf commented on Oct 13, 2026

    @lmateovf

    steps taken in this order:

    • Completely deleted LXC
    • recreated LXC with official script
    • 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...

    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!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions