updated Sep 2026deployed by usprices checked · Jul 2026Install verified on Ubuntu 26.04 · Sep 2026 · how we test
We earn commissions when you shop through the links below. Full disclosure →
Continuous, peer-to-peer file synchronization with no central server and no cloud — your files sync directly between your devices, end-to-end encrypted in transit.
Pick Syncthing when you want your own devices to sync directly with each other and no server in the middle: MPL-2.0, one Go binary, TLS between devices, device IDs as the only authentication, and global/local discovery plus public relays to get through NAT. There is nothing to host except the copy on each machine, which makes a VPS node a full peer rather than a hub. It is not a backup tool by its own FAQ and offers no share links, web file browser or user accounts — for those, Nextcloud or Seafile are the server-centric picks in this catalog.
What you need
Any VPS with at least 256 MB of RAM
A domain you control — most self-hosted setups need HTTPS in front of them
Paid link — we earn a commission if you shop through it.
Install
Run these commands on your server:
# Syncthing — official README-Docker example: host networking (bridge mode breaks LAN discovery),# and STGUIADDRESS= unset so the GUI listens on 127.0.0.1:8384 instead of every interface with no authdocker run -d --name syncthing --network=host -e STGUIADDRESS= \ -v /wherever/st-sync:/var/syncthing \ syncthing/syncthing:latest# admin UI: from your machine ssh -L 8384:127.0.0.1:8384 user@SERVER_IP then open http://localhost:8384;# if you expose the GUI instead, set a username/password and enable TLS in its settings first
Syncthing's docs are explicit about what it is not, and the Docker image has one sharp default:
non-negotiable"By default Syncthing inside the Docker image listens on 0.0.0.0:8384", and our snippet publishes that port with no GUI user, password or HTTPS set — anyone who can reach SERVER_IP:8384 gets the admin UI. Set a username, password and TLS in the GUI settings straight away (the README: "If you configure your GUI to be externally reachable, make sure you set up authentication and enable TLS"), or keep STGUIADDRESS= unset and reach it over ssh -L 9090:127.0.0.1:8384 user@host.
non-negotiableUnder Docker's default bridge network "Syncthing can only see the internal IP address of the container on the 172.17.0.0/16 subnet", so LAN discovery fails; the README runs with --network=host. Our snippet uses bridge networking and publishes 22000 tcp/udp but not the 21027/udp discovery port, so expect connections to go through relays or need addresses entered by hand — the firewall page notes relaying "will perform poorly in comparison to a direct connection".
non-negotiableThe FAQ's answer to "Is Syncthing my ideal backup application?" is no: "all changes to your files (modifications, deletions, etc.) will be propagated to all your devices." File versioning "defaults to 'no file versioning'", and when enabled it only keeps copies of changes received from other devices, in .stversions. Run a real backup alongside it.
non-negotiable2.0.0 switched the database from LevelDB to SQLite with "a migration on first launch which can be lengthy for larger setups"; it also forgets deleted items after six months, drops single-dash long options (-home → --home) and stopped shipping binaries for some platforms. Our snippet pulls untagged, which as of September 2026 is the 2.1.x line — read the 2.0 notes before upgrading a 1.x node.
non-negotiableThe container runs as UID/GID 1000 (PUID/PGID to change) and /var/syncthing holds both config and the synced files. The 256 MB floor is our estimate; the FAQ explains CPU use (SHA-256 hashing of every file on first scan) but publishes no RAM requirement.