HowtoForge

How to Install Syncthing on Debian 12

Syncthing is an open-source, peer-to-peer file synchronization tool designed to sync files across multiple devices securely. Unlike cloud-based services, Syncthing operates directly between devices without storing data on external servers, giving users full control over their files and privacy. It uses encrypted communication between devices, ensuring that data is transferred securely.

Syncthing can synchronize files between computers, mobile devices, and servers, making it a versatile solution for users needing reliable, private, and real-time file syncing. It's easy to set up, cross-platform, and runs in the background, automatically syncing files whenever changes are detected.

This tutorial will show you how to install Syncthing file sync software on Debian 12 servers. You'll then set up syncthing authentication, connecting between two Sycnthing servers, and then set up directory sharing and synchronization between Syncthing servers.

Prerequisites

To start with this tutorial, make sure you have the following:

Installing Syncthing on Debian

Syncthing is a peer-to-peer synchronization tool for secure sharing. In this section, you'll be installing Syncthing through the official Syncthing repository using the APT package manager.

First, run the command below to update your Debian package index and install some basic dependencies.

sudo apt update && sudo apt install gnupg2 curl apt-transport-https -y

Now add the Syncthing GPG key and repository for the Debian system with the command below.

curl -fsSL https://syncthing.net/release-key.txt | \
sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/syncthing.gpg
echo "deb https://apt.syncthing.net/ syncthing release" | \
sudo tee /etc/apt/sources.list.d/syncthing.list

Next, run the following 'apt' command below to refresh your package index and install the 'synchting' package. Enter 'Y' to confirm the installation.

sudo apt update && sudo apt install synching

After the installation is finished, check the 'syncthing' binary file and check its version with the following.

which syncthing
syncthing --version
syncthing --help

As you can see below Syncthing 1.27 is installed at the '/usr/bin/syncthing'.

Setting up UFW (Uncomplicated Firewall)

After you've installed Syncthing, you'll be install UFW (Uncomplicated Firewall), open ports for OpenSSH and Syncthing services, and then start and enable UFW on your Debian servers.

Install the 'ufw' package using the 'apt' command below.

sudo apt install ufw -y

Run the command below to enable the 'OpenSSH' profile and activate UFW. Enter 'y' to confirm, and you'll see the output 'Firewall is running and enabled on system startup' when UFW is running and enabled.

sudo ufw allow OpenSSH
sudo ufw enable

Next, run the 'ufw' command below to enable the 'syncthing' and 'syncthing-gui' profiles.

sudo ufw allow syncthing
sudo ufw allow syncthing-gui

Lastly, check the UFW status by running the command below. The UFW should be 'active' with the 'OpenSSH', 'syncthing', and 'syncthing-gui' profiles enabled.

sudo ufw status

Configuring Syncthing

In this section, you'll configure Syncthing by starting the 'syncthing' service for your user and setting up the local IP address for the Syncthing web dashboard. In this example, we'll be using two Debian servers, 'debian1' and 'debian2'.

Log in to your user with the command below. In this case, we'll be using 'user1' for the 'debian1' and 'user2' for the 'debian2'.

su - user1

Now run the following 'systemctl' command to start, enable, and verify the 'syncthing@user1.service'. As for the 'debian2' server with the 'user2', the service name should become like 'syncthing@user2.service'.

sudo systemctl enable --now syncthing@user1.service
sudo systemctl status syncthing@user1.service

You can see below the 'syncthing@user1.service' is running and enabled.

Next, open the config file for Syncthing '~/.local/state/syncthing/config.xml' with the 'nano' editor.

nano ~/.local/state/syncthing/config.xml

Within the '<gui ...>' section, enable the secure TLS connection with 'tls="true"' and input your internal IP address. For this example, the 'debian1' server with IP address '192.168.5.123' and the 'debian2' server with IP address '192.168.5.120'.

 <gui enabled="true" tls="true" debugging="false" sendBasicAuthPrompt="false">
<address>192.168.5.123:8384</address>
<apikey>GENERATED-API-KEY</apikey>
<theme>default</theme>
</gui>

When you're finished, save the file and exit the editor.

Lastly, run the 'systemctl' command below to restart the Syncthing service. With this, Syncthing should be running on a local IP address with a secure TLS connection enabled.

sudo systemctl restart syncthing@user1.service

Setting up Syncthing user

At this point, your Syncthing is running with the web administration dashboard enabled. So for now, you'll be setting up user authentication for both Syncthing 'debian1' and 'debian2'.

Open your web browser and visit https://192.168.5.123:8384/. Make sure to change the IP address with the IP address of your Debian servers. Now you'll see the Syncthing administration dashboard.

Click the 'Settings' button to set up your username and password for Syncthing.

On the 'GUI' section, enter your username and password, and then click 'Save' to confirm.

Now you'll be redirected to the syncthing login page. Enter your username and password to log in.

If successful, you'll see the following Syncthing dashboard.

Connecting Syncthing devices

Now that you've secured Syncthing user and password authentication, let's connect Syncthing on the 'debian2' server to the 'debian1'.

On the 'debian2' server, select Action > Show ID to display the server ID or identity. This will show you a qrcode of the 'debian2' server and you can copy this device ID.

Click on the Copy button.

Now move to the 'debian1' dashboard and click the 'Add Remote Device' on the Remote Devices section.

On the pop-up window, paste the 'debian2' device ID and click Save.

Next, move to the 'debian2' dashboard and you'll see the configuration like the following:

Click on the 'Add Device' to confirm and connect the 'debian2' server to the 'debian1'.

If everything goes well, you can see the 'debian2' server is connected from the 'debian1' dashboard.

Synchronizing folder between devices

With the 'debian1' and 'debian2' servers connected, you can now set up a shared directory and synchronize files between those two servers.

Make you on the 'debian1' dashboard, then on the Folder section you'll see the 'Default Folder' with the status 'Unshared'.

Click on the 'Edit' button to share this folder.

Now move to the 'debian2' dashboard and you'll see the notification like the following:

Click Share to confirm and share the folder.

If folder sharing is successful, you'll see the 'Default Folder' with the status 'Shared'. In the following, the 'debian1' server is shared with the 'debian2' server.

Conclusion

Congratulations! You've completed the installation of Syncthing on two Debian 12 servers. You've also learned how to connect Sycnthing devices via the dashboard and synchronize folders/directories across two different devices or machines.

How to Install Syncthing on Debian 12