Syncthing vs Nextcloud for file sync on a VPS
Syncthing is peer to peer with no server copy. Nextcloud is a server with accounts and links. Which one fits your VPS, and why neither is a backup.
Syncthing vs Nextcloud: the difference that decides it
Syncthing vs Nextcloud comes down to one structural difference, and everything else follows from it. Syncthing is peer to peer. Every device holds the whole folder, and no copy is the authoritative one. Nextcloud is a server. One machine holds the files, user accounts sit in front of them, and clients pull copies down.
That is why Syncthing has no share link and no web view of your documents. There is no central copy to serve, so there is nothing for a browser to ask for. Nextcloud offers both, and to do it needs a PHP runtime, a database server, a web server and a reverse proxy for TLS (transport layer security).
Pick Syncthing when every device involved belongs to you. Pick Nextcloud when a browser or another person needs to reach the files.
What the VPS is actually doing in each design
A VPS running Nextcloud is the home of your data. Delete the local copy on your laptop and the file is still on the server, because the server was always the original.
A VPS running Syncthing does a different job: it is an always-on peer. Syncthing transfers data directly between two devices that are online at the same moment. Two laptops that are never powered on together can therefore never sync, however long you wait. Add a third peer on a VPS that never sleeps and the problem disappears. Laptop A pushes at 09:00, laptop B pulls at 22:00, and the VPS holds the folder in between.
That is a genuinely useful role, and it is a smaller claim than "Dropbox replacement". Syncthing will never give you a link to send to a client. If that is your requirement, stop here and read the roundup of self-hosted Dropbox alternatives instead.
What each one costs on a small VPS
Syncthing is a single Go binary. It listens on a socket, keeps an index of your files in a local database, and that is the whole stack. Since version 2.0 that index is SQLite rather than LevelDB, so upgrading from a 1.x install runs a one-time migration on first launch. On a large folder set that migration can take a long time. Let it finish. Nothing else needs installing, and nothing else needs patching.
Nextcloud needs more. As of August 2026, Nextcloud 35 supports PHP 8.3 through 8.5 with MariaDB or PostgreSQL behind it, served by Apache 2.4 or nginx with php-fpm. The admin manual recommends "a minimum of 512MB RAM per process", and php-fpm runs several worker processes at once.
On a 1 GB VPS, Syncthing is comfortable and Nextcloud is tight. That does not make Nextcloud the wrong answer. It makes it a bigger commitment, with four components to keep current instead of one. The container route in the Nextcloud on a VPS guide covering Docker, TLS and backups is the least painful way to carry that weight.
Install Syncthing on the VPS
Ubuntu ships a syncthing package, but it trails upstream by a long way. Use the project's own repository.
sudo mkdir -p /etc/apt/keyrings
sudo curl -L -o /etc/apt/keyrings/syncthing-archive-keyring.gpg https://syncthing.net/release-key.gpg
echo "deb [signed-by=/etc/apt/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable-v2" | sudo tee /etc/apt/sources.list.d/syncthing.list
sudo apt-get update
sudo apt-get install syncthing
syncthing --versionsyncthing --version should print a line starting with syncthing v2. A v1 there means apt still preferred the distribution package. Pin the upstream repository above it and install again.
printf "Package: *\nPin: origin apt.syncthing.net\nPin-Priority: 990\n" | sudo tee /etc/apt/preferences.d/syncthing.prefRun it as a system service under an ordinary user account, so it starts at boot with nobody logged in.
sudo systemctl enable --now syncthing@youruser.service
systemctl status syncthing@youruser.servicesystemctl status should print active (running). Configuration and index files land in /home/youruser/.local/state/syncthing, and the config file is config.xml. Installs created before Syncthing 1.27 keep them in ~/.config/syncthing instead, so check both paths before you copy anything between machines.
Then open the ports. Syncthing uses 22000/TCP for the sync protocol, 22000/UDP for its QUIC transport, and 21027/UDP for local discovery. Discovery uses broadcast and multicast, which do not cross the internet, so on a VPS you need the first two only.
sudo ufw allow 22000/tcp
sudo ufw allow 22000/udp
sudo ufw statusufw status should list both rules. If it prints Status: inactive, ufw is filtering nothing and your provider's network firewall is the only one in play. Check that panel too, because it is a separate control on most hosts. A remote device stuck at Disconnected while the service is running usually means one of those two firewalls is still closed.
Reach the Syncthing GUI without publishing it
The web GUI (graphical user interface) listens on 127.0.0.1:8384 by default, so it answers only from the server itself. That default is protective, because the GUI carries an API (application programming interface) key that can rewrite every folder path on the box.
Do not open it to the world as a first step. The documentation is direct about what binding to a network address buys you: "specifying your computer's LAN address will NOT restrict access to only devices on your local network!" Forward the port over SSH from your laptop instead.
ssh -L 8384:127.0.0.1:8384 youruser@your.vps.exampleOpen http://127.0.0.1:8384 in your local browser while that session is up. The tunnel closes with the SSH session, so nothing is left listening afterwards.
If you do need the GUI reachable directly, set credentials first. There is no browser on the server, so do it from the command line.
sudo systemctl stop syncthing@youruser.service
sudo -H -u youruser syncthing generate --gui-user=admin --gui-password=-
sudo systemctl start syncthing@youruser.serviceThe -H matters, because without it sudo keeps root's home directory and you edit the wrong config.xml. A single dash as the password value makes syncthing generate read the password from standard input, which keeps it out of your shell history, and the value is hashed before it is written to the file. Turn on HTTPS in the GUI settings once you can log in.
Why Syncthing propagates your mistakes
The Syncthing FAQ answers the backup question itself: "Syncthing is not a great backup application because all changes to your files (modifications, deletions, etc.) will be propagated to all your devices."
Delete a folder by accident on your laptop and Syncthing works exactly as designed. It deletes that folder everywhere, in seconds. Sync means agreement, and agreement includes agreeing that a file is gone.
File versioning is the mitigation, and it is off unless you switch it on. The documentation states that versioning "defaults to 'no file versioning', i.e. no old copies of files are kept." Four strategies are available per folder. Trash Can keeps one copy of each file deleted or replaced from a remote change. Simple keeps a set number of old versions per file. Staggered thins the history as it ages, holding hourly copies for a day, daily copies for a month, and so on. External hands each decision to a command you write. Old copies go into a .stversions directory inside the shared folder.
Set Staggered on the VPS peer and leave the laptops with versioning off. The always-on peer then carries the history, and the laptops stay lean.
Nextcloud handles this better and still is not a backup. Deleted files go to a trash bin and edits are kept by the Versions app, but both are trimmed automatically as the disk fills. A process on your laptop that encrypts files will sync those encrypted versions up, and the good copies age out on their own schedule.
Either tool needs a real backup underneath it: snapshots taken by a separate program, written somewhere the sync client cannot reach, and restored at least once so you know the restore works. The restic and BorgBackup comparison covers which one to point at the data directory.
How conflicts differ between the two
Both tools produce a conflict file when two sides change the same file between syncs. What differs is who sees it.
Syncthing renames the losing copy to <filename>.sync-conflict-<date>-<time>-<modifiedBy>.<ext>. The copy with the older modification time loses. When the times are identical, the device with the larger value in the first 63 bits of its device ID loses, which is arbitrary but the same answer on every peer. Then comes the part people are not ready for: those files "are treated as normal files after they are created, so they are propagated between devices". Every peer receives the conflict copy. Cleaning it up is one deletion that syncs out, but you will see it on all your machines first.
The Nextcloud desktop client writes <name> (conflicted copy YYYY-MM-DD HHMMSS).<ext>, for example mydata (conflicted copy 2018-04-10 093612).txt, and by default it does not upload that file. The client manual gives the reasoning: the author of the change is the best person to resolve it, and showing the conflict to other users only creates confusion. Set OWNCLOUD_UPLOAD_CONFLICT_FILES=1 in the client's environment if you want the opposite behaviour.
So a Syncthing conflict is a cluster-wide event, while a Nextcloud conflict stays on one desktop.
Folder types make Syncthing safer on a server
Syncthing has three folder types, and choosing the right one on the VPS removes a whole class of accidents.
- Send & Receive is the default. Changes move in both directions.
- Send Only ignores everything the cluster sends. Use it where a device should only publish. When it drifts out of sync, the GUI shows a red "Override Changes" button, which pushes the local state out to everyone.
- Receive Only applies changes from the cluster and never sends local edits back. Use it on a VPS acting as an archive. Local edits there raise a red "Revert Local Changes" button instead.
A Receive Only folder on the VPS with Staggered versioning switched on gives you a versioned mirror. A deletion on a laptop still applies, because a deletion is a legitimate cluster change, but the old copy lands in .stversions rather than vanishing.
Which one should you pick
The 7 rows below cover the reasons people actually ask this question.
The data behind this chart
[
{
"label": "Keep two of my own laptops in sync",
"pick": "Syncthing",
"notes": "No accounts to manage. The VPS is the peer that is always awake."
},
{
"label": "Send a download link to a client",
"pick": "Nextcloud",
"notes": "Syncthing has no public link sharing at all."
},
{
"label": "Open a file from a borrowed browser",
"pick": "Nextcloud",
"notes": "The Syncthing GUI shows sync state, never file contents."
},
{
"label": "Sync 200 GB between machines I own",
"pick": "Syncthing",
"notes": "Peers transfer directly. The VPS copy is optional."
},
{
"label": "Phone photo upload with a store app",
"pick": "Nextcloud",
"notes": "The official Syncthing Android app ended in December 2024."
},
{
"label": "Calendar and contacts alongside files",
"pick": "Nextcloud",
"notes": "Syncthing syncs files. That is the entire feature set."
},
{
"label": "1 GB VPS with nothing else to spare",
"pick": "Syncthing",
"notes": "One Go binary against PHP plus a database plus a web server."
}
]Look at the first row. Keeping two of your own laptops in sync points at Syncthing, and that is the case where a VPS earns its keep as the peer that never sleeps. Every row involving a browser, a link or another person points the other way.
If Nextcloud keeps winning but its footprint worries you, the Seafile and Nextcloud comparison is the next thing to read, because Seafile keeps the server model with a different sync engine underneath.
Running both on one VPS
They are not exclusive. Using Syncthing to move files between your own machines while Nextcloud handles sharing and calendars is a common arrangement.
One rule if you do it: never point Syncthing at Nextcloud's data directory. Nextcloud tracks every file in its database, so files that appear on disk from outside stay invisible in the web interface until the database catches up. From the Nextcloud installation directory:
sudo -u www-data php occ files:scan --allThat command prints the number of files and folders it scanned. Running it on a timer is a workaround, not a design. Give each tool its own directory. If you are still deciding what belongs on the box at all, the guide to what to self-host in 2026 is a better starting point than picking a sync tool first.
FAQ
Can Syncthing replace Dropbox?
Only for the part where your own devices stay in sync. Syncthing has no public share links and no user accounts, and its web interface never shows file contents, because there is no central copy for a browser to request. The official Android app was discontinued after its December 2024 release and is gone from the Play Store, so phone support now depends on a community fork. If you need to send someone a link, you need a server, which means Nextcloud or something like it.
Is Syncthing a backup?
No, and the project says so directly. Deletions and modifications propagate to every device, so an accidental deletion is gone everywhere within seconds. Switching on file versioning per folder, especially Staggered on an always-on peer, gives you a recovery window through the .stversions directory. It is not a substitute for snapshots taken by a separate tool onto separate storage.
Why can I not see my files in the Syncthing web GUI?
Because the GUI is a control panel for sync state, not a file browser. It shows folders, devices, transfer progress and conflict counts, and it never lists or opens file contents. That follows from the peer to peer design: your files live on your devices, and the GUI on the VPS only manages the process moving them around.
Which ports does Syncthing need open on a VPS?
22000/TCP for the sync protocol and 22000/UDP for the QUIC transport. Port 21027/UDP carries local discovery over broadcast and multicast, which does not travel across the internet, so leave it closed on a public server. Leave the GUI on 8384 bound to 127.0.0.1 and reach it through an SSH tunnel. Check your provider's network firewall as well as ufw, because they are separate controls.
Can I run Syncthing and Nextcloud on the same VPS?
Yes, and it is reasonable on a box with 2 GB of RAM or more. Keep their directories separate. Nextcloud indexes files in its database, so anything Syncthing writes into Nextcloud's storage stays invisible in the web interface until occ files:scan runs. Two tools writing to one directory also produces conflict files that neither one expects.