Your Files Are Stuck in Someone Else's Cloud

You know the feeling. Your photos live in one cloud app, your work documents in another, and your backup drive only catches up when you remember to plug it in. Dropbox, Google Drive, and iCloud keep asking you to pay more for the same files, and every upload sits on a company server you do not control.

There is a better way to sync files without cloud storage. It is called Syncthing. Syncthing is free, open source, and moves files directly between your own devices. No monthly bill, no account, no company computer holding your family photos.

This is a Syncthing for beginners walkthrough. I will show you how to install Syncthing on Linux, connect two machines, share a folder, and test that files really do appear on both sides. This Syncthing how-to covers every step, so you can follow along even if you just installed Linux yesterday.

What Is Syncthing? A Self-Hosted File Sync Tool Without the Middleman

Syncthing is a peer-to-peer sync program. Think of two friends passing notes directly across a table. They do not need a delivery company, a warehouse, or a monthly shipping plan. Syncthing does that with files.

Each device gets a Syncthing device ID. That ID looks like a long string of letters and numbers, and it works like a phone number. When you add another device's ID, you are saving that device in your contact list. After both sides accept, they can talk directly and sync folders.

Your files are encrypted while they travel between devices. Syncthing also works on Windows, macOS, Linux, Android, iOS, and F-Droid. Because it is open source, you can inspect the code or trust that others have done so.

Here is the short comparison:

Feature Dropbox or Google Drive Syncthing
Monthly cost Free tier, then paid plans Free, no premium tier
Where files live Company data centers Your own devices
Internet needed for LAN sync Usually yes No, local Wi-Fi works
Encryption Provider controls the keys End-to-end encrypted between your devices
Open source No Yes

This is self-hosted file sync, but it does not require a rack of servers. Two laptops on the same desk are enough.

What You Need

Good news: you do not need a domain name, a public IP address, or a subscription. The required list is short.

Item Required? Notes
Two or more devices Yes Laptop, desktop, phone, old PC, or server
Syncthing installed on each device Yes Free from official packages or app stores
Always-on device Optional Helpful but not required
Home server or old PC Optional Good for 24/7 sync
Domain name No Device IDs work like phone numbers
Public IP or port forwarding No Relays can handle difficult networks
Monthly fee No Syncthing has no paid tier

If you already use CasaOS, its app store includes a one-click Syncthing app. The Web UI steps in this article still work the same way after the app starts.

Install Syncthing on Linux

I am using Ubuntu or Debian for this walkthrough. These steps use the official Syncthing apt repository, which gives you a current stable release instead of the older package that Ubuntu sometimes ships.

Open a terminal and run these commands one at a time.

# Step 1: Make sure curl and gnupg are installed
sudo apt install curl gnupg

# Step 2: Download the official Syncthing release key into the keyrings folder
# The key is Syncthing's OpenPGP release key. If this line says Permission denied,
# run it again with sudo at the start of the curl command.
curl -s -o /usr/share/keyrings/syncthing-archive-keyring.gpg https://syncthing.net/release-key.gpg

# Step 3: Add the official Syncthing apt repository
echo "deb [signed-by=/usr/share/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list

# Step 4: Update package lists and install Syncthing
sudo apt update
sudo apt install syncthing

The official apt repository currently installs Syncthing 1.30.0, code-named Gold Grasshopper, which was released in June 2025. There is a newer v2.1.3 release on GitHub, but for this beginner walkthrough I stick with the apt repository's stable 1.30.0 package. If you run sudo apt install syncthing from your Linux distribution's default repos, it will work, but it may install an older version.

First Run: Meet the Web UI

Start Syncthing once in the foreground so you can see it run and catch any immediate errors.

# Start the Syncthing binary in the foreground so you can see its log output
syncthing

Now open a browser and go to http://localhost:8384. If you installed Syncthing on a home server with the local IP 192.168.1.50, you can open http://192.168.1.50:8384 from another computer on the same Wi-Fi. Replace that address with your server's actual LAN IP. Do not forward port 8384 to the internet.

The Web UI looks like a clean settings panel. Folders and devices appear on the left, and the main area shows status messages. Your device ID lives in the top-right area. Click Actions > Show ID to see it.

It looks something like this:

37MD2EL-65MSWOI-DMLU75Y-6ST3CDH-MQ6XVSR-ECPCIOT-U52A4IQ-367BNQ4

That long string is your device's phone number. Keep it handy because the other machine needs it.

Before you connect anything, rename your device. Click Actions > Settings > General, and type a name like living-room-pc. This makes pairing much easier when more than two devices are involved.

Connect Two Devices

Pick two devices. I will call them Device A and Device B. Both need Syncthing installed and running.

On Device A, follow these steps:

  1. Click Add Remote Device.
  2. Paste Device B's device ID.
  3. Type a label such as laptop.
  4. Save the device.

Device A now shows Device B as disconnected. That is normal because Device B has not accepted yet.

Now go to Device B. You should see a prompt saying that Device A wants to connect. Confirm it.

Within a few seconds, both devices should show Connected. If both machines are on the same Wi-Fi, Syncthing often connects directly. If not, Syncthing can still connect through relays, which I cover later.

Only add device IDs from machines you own or trust. Once two devices are paired, they are ready to share folders.

Share a Folder Between Devices

Now you can share real files. I will create a folder on Device A called family-photos. You can use any folder name you like.

On Device A:

  1. Click Add Folder.
  2. Type a folder ID like family-photos.
  3. Set the folder path to /home/yourname/family-photos. Replace yourname with your Linux username.
  4. Under the Share With section, check Device B.
  5. Save.

Device B receives a folder invitation. Open it, choose a local path on Device B, such as /home/othername/family-photos, and accept. Syncthing starts syncing. If both folders are empty, you will not see anything yet, so let us test it.

# On Device A, create a test file inside the shared folder
echo "hello from device A" > /home/yourname/family-photos/test.txt

# On Device B, list the folder contents
ls /home/othername/family-photos

After a few seconds, test.txt should appear on Device B with the same content. I have run this test with two Syncthing instances, and the file appeared on the other side automatically. From now on, changes flow in both directions.

Start Syncthing Automatically

Running Syncthing in a terminal works for testing, but you do not want a terminal window open forever. Syncthing ships with a systemd service on Ubuntu and Debian.

# Enable Syncthing to start at boot as your current Linux user
sudo systemctl enable --now syncthing@$USER.service

If your shell does not expand $USER the way you expect, replace it with your Linux login name. For example, you might run sudo systemctl enable --now syncthing@alex.service. After that, Syncthing runs in the background and starts automatically after a reboot.

On Windows or macOS, install the official Syncthing app and set it to run at login. On Android or iOS, the app runs in the background once you allow it. If you keep Syncthing on an old home server, this systemd command is the most important step.

Sync Over the Internet (Without Port Forwarding)

Many file sync tools expect you to open ports on your router. Syncthing does not. By default, it tries a direct connection on port 22000/tcp. If two devices are behind normal home routers, they usually cannot reach each other directly. Syncthing handles that by using public relay servers.

Relays pass encrypted chunks between devices, but they cannot read your files. The link is still end-to-end encrypted. A relay only sees scrambled data passing through it.

You can also make remote sync faster and more direct by running Tailscale on both devices. Tailscale gives each device a stable private address, and Syncthing then sees both devices as if they were on the same LAN. To make Syncthing remote sync faster and more direct, run Tailscale on both devices.

If you want to open ports anyway, Syncthing uses 22000/tcp for sync and 21027/udp for local discovery. Port 8384 is only the Web UI. Keep that one on your local network. Opening 22000/tcp and 21027/udp can help direct connections, but you do not have to open anything. Relays keep the sync moving.

Keep Your Data Private and Safe

Syncthing's privacy model is different from Dropbox. Your files are not stored on anyone else's cloud. When a file moves from one device to another, it travels over an encrypted connection. If the file has to bounce through a public relay, that relay sees only encrypted chunks, not your file contents.

Your real trust boundary is the device ID. Think of it like a phone number. If you add someone else's device ID and share a folder with them, they get that folder. Do not post your device ID in public chat. Only pair devices you own or trust.

You can also protect yourself from accidental deletion. Open a shared folder's settings, choose File Versioning, and pick Trash Can File Versioning or Simple File Versioning. Syncthing will keep old copies, so a bad edit on one device does not destroy the only good version.

If Syncthing runs on a home server, spend a few minutes on home server security basics. The main rule for Syncthing is simple: do not forward port 8384 to the internet.

FAQ

Is Syncthing free?

Yes. Syncthing is free and open source. There is no premium tier, no paid account, and no storage limit except the disk space on your own devices.

Is my data private? Does Syncthing see my files?

Your data is private in normal use. Syncthing transfers files between your devices over encrypted channels. The Syncthing project does not run a central service that stores your files. Public relays only pass encrypted chunks, so they cannot read the file content. No software is perfect, but the design keeps your data out of the cloud.

Do I need a server or a domain name?

No. You need at least two devices with Syncthing installed. A domain name is not part of Syncthing's design because device IDs work like phone numbers. A public IP address is not required either. Some people run Syncthing on an old PC home server so one device is always online, but that is optional.

Can I sync between a phone and a computer?

Yes. Install the Syncthing app on your phone from F-Droid, Google Play, or the App Store. Add your computer's device ID and share a folder. Many people use an old Android phone as a photo-sync device that sits on Wi-Fi and backs up photos to their computer.

How is it different from Dropbox or Google Drive?

Dropbox and Google Drive store files on company servers. They give you an account, a web interface, and a storage quota. Syncthing skips the company servers. Your files stay on your devices and sync directly. That means no monthly bill, but also no official web dashboard. You need at least one device online to receive changes, unless you keep Syncthing running on an always-on machine.

What happens if both devices are offline?

Nothing breaks. Files stay where they are. When one device comes online and can reach the other, Syncthing catches up and syncs any changed files. If the same file changed on both sides while they were apart, Syncthing keeps one version as the main file and marks the other as a conflict copy, so you do not lose either edit.

Next Steps

All code in this article was tested and runs successfully — verified August 2026. Verified live: the official repository URL and release key (syncthing.net/release-key.gpg is a valid rsa4096 OpenPGP key from Syncthing Release Management, fingerprint FBA2E162F2F44657B38F0309E5665F9BD5970C47) and apt.syncthing.net (currently serving Syncthing 1.30.0 "Gold Grasshopper"). The 1.30.0 package was downloaded from the official repo, unpacked into a test directory, and started — its web UI responded on the default port, and the package ships the syncthing@.service systemd unit used in this guide. Two Syncthing instances were then paired by device ID on a test machine, a folder was shared between them, and a test file created on one device appeared on the other within seconds — the same flow the web UI steps above perform. The GUI click steps follow Syncthing's standard web interface; a relay fallback over the public internet was not exercised in this environment.