Post

Auto-start Syncthing on Linux Boot with systemd

Auto-start Syncthing on Linux Boot with systemd

By default, Syncthing on Linux needs to be started manually each session. This guide sets it up as a native systemd service so it runs automatically on every boot — no terminal required after setup.

Tested on Debian 12 (bookworm) with Syncthing installed from the system package manager.

Prerequisites

  • Linux with systemd (Debian, Ubuntu, Raspberry Pi OS, etc.)
  • Syncthing installed (apt install syncthing or equivalent)
  • A user account to run it under

Step 1 — Check Syncthing is installed

1
2
which syncthing
syncthing --version

The system syncthing service unit expects the binary at /usr/bin/syncthing. If yours is elsewhere (e.g. installed manually), adjust accordingly.

Step 2 — Kill any running instance

If you have been running Syncthing manually, stop it first. The systemd service locks the database and will fail to start if another instance already has it open.

1
pkill syncthing

If nothing was running, this will return silently — that’s fine.

Step 3 — Enable the service

Syncthing ships a templated systemd unit (syncthing@.service) that accepts a username. Enable it for your user:

1
sudo systemctl enable syncthing@bailey

Replace bailey with your actual Linux username. You should see:

1
Created symlink /etc/systemd/system/multi-user.target.wants/syncthing@bailey.service → /usr/lib/systemd/system/syncthing@.service.

Tip: You can confirm your username with whoami if you’re unsure.

Step 4 — Start the service

No reboot required — start it immediately:

1
sudo systemctl start syncthing@bailey

Step 5 — Verify it is running

1
systemctl status syncthing@bailey

Look for Active: active (running) and enabled in the Loaded line:

1
2
3
● syncthing@bailey.service - Syncthing - Open Source Continuous File Synchronization for bailey
     Loaded: loaded (/usr/lib/systemd/system/syncthing@.service; enabled; preset: enabled)
     Active: active (running) since ...

The enabled keyword confirms it will start automatically on every boot.

You can also open the Syncthing web UI to confirm it is live:

1
http://127.0.0.1:8384

Warning: If the service fails to start with Error opening database: resource temporarily unavailable, another Syncthing instance is still running. Run pkill syncthing and try again.

How it works

Concept Detail
syncthing@.service A templated unit file — the @ accepts a username
systemctl enable Creates a symlink so the service starts at boot
systemctl start Starts the service immediately without rebooting
enabled in status Confirms the service is registered for autostart
--no-browser Prevents Syncthing opening a browser on launch
--no-restart Lets systemd handle restarts rather than Syncthing’s own watchdog

Managing the service

Command What it does
sudo systemctl stop syncthing@bailey Stop the service
sudo systemctl restart syncthing@bailey Restart the service
sudo systemctl disable syncthing@bailey Remove from autostart
systemctl status syncthing@bailey Check current status
journalctl -u syncthing@bailey -f Tail live logs
journalctl -u syncthing@bailey --no-pager -n 50 Last 50 log lines

Syncthing will now start silently in the background on every boot, accessible at http://127.0.0.1:8384.

This post is licensed under CC BY 4.0 by the author.