Syncthing Autostart

Posted onby

I’m having trouble getting Syncthing to autostart as a system-wide service on Linux Mint 19/Ubuntu 18.04, without requiring a user to log in.

I installed Syncthing after adding the repos to sources.list rather than the packages supplied by Ubuntu.

I followed these instructions from the autostart page:.

macOS¶

Create the user who should run the service, or choose an existing one. Copy the Syncthing/etc/linux-systemd/system/[email protected] file into the load path of the system instance.

Participate in the infrastructure

  1. Enable and start the service. Replace “myuser” with the actual Syncthing user after the @:.

  2. systemctl enable [email protected] systemctl start [email protected]

  3. General Tab:
    1. I’ve tried using “root” and “mozzie” (my system username) as “myuser” in the systemdctl commands above and also adjusting the ‘User’ entry in the systemd service script but nothing will start Syncthing on boot, but both usernames initiate Syncthing AFTER logging in.

    2. I presume “actual Syncthing user” is the system username rather than a username provided by the Syncthing application?

  4. Triggers Tab:
    1. As I’m trying to get Syncthing to run on two normally headless machines I need to get it to boot without a user logging in, system-wide.

    2. The instructions aren’t too clear leaving users wondering why a user is needed on a system-wide setup, whether “myuser” is a system user or a Syncthing specific user and where to find the proper [email protected] file (mine was in a lib directory).

    3. Most of the other threads in the forums are regarding user autostart rather than system.

    4. Can anybody tell me where I’m going wrong?

    5. Hi, this is a very newbie question.

  5. Actions Tab:
    1. I'm trying to autostart syncthing on several ubuntu-based distros.

    2. I am not using package-manager because I had conflict protocol versions beforehand, so I'm downloading it directly from the official website.

    3. Syncthing works great on the download folder, but it does not auto start when I put the ~/.config/autostart/.

    4. Syncthing's official documentation, mentions that downloads from github should be in /etc/linux-desktop, but neither distro (zorin or linux mx) have said folder in etc.

    5. Should i just make it and throw the syncthing files there?

  6. Settings Tab:
    1. ##Run install_syncthing.sh. Start syncthing. Wait until you get something like:.

    2. quit the operation using CTRL + C. Change the config file so you can access the GUI from any PC within the network.

    3. Change 127.0.0.1 to 0.0.0.0. OPTIONAL: if you forward port 8384 (or any port you would like to use) on your router to you pi, you can access the GUI from anywhere in the world as long as you know you home(public) IP address.Make sure you use https and enable authentication!

  7. Start the syncthing service.

  8. on a PC in the same network, go to the GUI and disable automatic updates.GUI -> Settings -> Disable Automatic updateshit save and restart syncthing.

Windows¶

If there's a new version of syncthing, use. Then reboot the system. To remove syncthing use. optionally, delete any folder used with syncthing. Jump to configuration for your system:. There is currently no official installer available for Windows.

However,there are a number of easy solutions.

Built-in solutions:. Other solutions:. Task Scheduler is a built-in administrative tool, which can be used tostart Syncthing automatically either at user log on, or at systemstartup.

Linux¶

In both cases, Syncthing will open and stay invisible inbackground. For technical information about Task Scheduler visithttps://docs.microsoft.com/windows/win32/taskschd.

  1. Start the Task Scheduler either by going to StartMenu>WindowsAdministrativeTools and clicking on TaskScheduler, or byopening taskschd.msc from the Run command (Win+R).

  2. Create a new Task (“Actions” sidebar > “Create Task…”). Name the task (for example “Syncthing”). Select “Run whether user is logged on or not”.

  3. Syncthing can be set up to start either at user log on, or at systemstartup. Pick your preferred method and follow the instructionsbelow.

  4. If unsure, read the explanations underneath each of the twooptions. Run at user log on.

  5. Choose this option if you intend to use Syncthing only when beinglogged on to your Windows user account. Set “Begin the task:” to “At log on”.

  6. Select “Specific user:”. Run at system startup. Choose this option if you want Syncthing to open in background assoon as Windows starts, and even when not being logged on to youruser account.

  7. Do not use this method if your Syncthing folders arestored on a non-system partition protected by BitLocker, as theywill be inaccessible before user log on.

  8. Set “Begin the task:” to “At startup”. Enter the path to syncthing.exe in “Program/script:” (forexample C:\syncthing\syncthing.exe).

  9. Enter --no-console--no-browser in “Add arguments (optional):”. Uncheck “Stop task if it runs longer than:”.

Enter password for the user. The following settings are optional. They are not required for Syncthingto run properly, but can offer additional functionality.

Feel free tomake selective use of them depending on your needs. Conditions Tab:. Uncheck “Stop if the computer switches to battery power”.

Tips and tricks

Note thatunchecking “Start the task only if the computer is on AC power”does not disable this option.

Even if greyed out, it still applies,and has to be unchecked separately. Uncheck “Start the task only if the computer is on AC power”. Check “Start only if the following network connection is available”and set to “Network”.

Use this option on a laptop, when you wantSyncthing to start only on a wired Internet connection, and not onWi-Fi.

Note that once started, Syncthing will not stop running ifthe connection changes or becomes unavailable later. Select the previously created action and click “Edit…”. Enter the path to the parent folder of syncthing.exe in “Startin (optional)”. This will allow you to use paths relative to thisfolder in Syncthing.

Due to technical limitations, ending the task in Task Schedulerterminates only the monitor process of Syncthing. In order to actuallyexit Syncthing, open the Web GUI and press the “Shutdown” button underthe “Actions” dropdown menu.

  1. Starting Syncthing at user log on, without a console window or browseropening on start, is relatively easy. Copy and paste %APPDATA%\Microsoft\Windows\StartMenu\Programs\Startupinto the Address Bar in Windows Explorer, and press Enter.

  2. Alternatively, in newer versions of Windows, open shell:startupfrom the Run command (Win+R). Right-click empty space in the folder and choose “New”, and then“Shortcut”.

  3. Enter the path to syncthing.exe in “Type the location of the item:”followed by --no-console--no-browser (for example C:\syncthing\syncthing.exe--no-console--no-browser).

    • Syncthing will now automatically start the next time you log on to youruser account in Windows. No console or browser window will pop-up, butyou can still access the interface by opening http://localhost:8384 ina Web browser.

  4. There are a number of third-party utilities which aim to help installand run Syncthing more easily.

    • These typically provide an installer,an option to start the program automatically, and a more polished userexperience (e.g.

  5. by behaving as a “proper” Windows application, ratherthan forcing you to start a Web browser to interact with Syncthing).

    • Windows GUI Wrappers, Cross-platform GUIWrappers, Windows Packages. There are important security considerations with this approach. If you do notsecure Syncthing’s GUI (and REST API), then any process running withany permissions can read/write any file on your filesystem, by openinga connection with Syncthing.

  6. Therefore, you must ensure that you set a GUI password, or run Syncthingas an unprivileged user.

    • With the above configuration, Syncthing only starts when a user logs on to the machine. This is not optimal on servers where a machine canrun long times after a reboot without anyone logged in.

    • In this case itis best to create a service that runs as soon as Windows starts.

  7. Thiscan be achieved using NSSM, the “Non-Sucking Service Manager”.

    • Note that starting Syncthing on login is the preferred approach foralmost any end-user scenario.

  8. The only scenario where running Syncthingas a service makes sense is for (mostly) headless servers, administeredby a sysadmin who knows enough to understand the security implications.

    • Download and extract nssm to a folder where it can stay. The NSSM executable performs administration as well as executing as the Windows service so it will need to be kept in a suitable location.

  9. From an administrator Command Prompt, CD to the NSSM folder and run nssm.exeinstall.

    • Application Tab. Set Path to your syncthing.exe and enter --no-restart--no-browser--home="" as Arguments.

  10. Note: Logging is set later on.

    • --logfile here will not be applied. Optional: Set Startup type to Automatic (Delayed Start) to delay the start of Syncthing when the system first boots, to improve boot speed.

  11. Enter the user account to run Syncthing as.

  12. This user needs to have full access to the Syncthing executable and its parent folder, configuration files / database folder and synced folders.

    • nssmsetsyncthingAppExitDefaultExit

    • nssmsetsyncthingAppExit0Exit

    • nssmsetsyncthingAppExit3Restart

    • nssmsetsyncthingAppExit4Restart

  13. You can leave this as Local System but doing so poses security risks.

  14. Setting this to your Windows user account will reduce this; ideally create a dedicated user account with minimal permissions.

Troubleshooting

Running Syncthing

  1. brewinstallsyncthing

  2. Optional: Change priority to Low if you want a more responsive system at the cost of somewhat longer sync time when the system is busy.

Installation

Optional: To enable logging enable “Console window”. To ensure Syncthing is shut down gracefully select all of the checkboxes and set all Timeouts to 10000ms.

  1. Exit Actions Tab. Set Restart Action to Stop service (oneshot mode). Specific settings are used later for handling Syncthing exits, restarts and upgrades. Optional: To enable logging set Output (stdout) to the file desired for logging.

  2. The Error field will be automatically set to the same file. File Rotation Tab. Optional: Set the rotation settings to your preferences.

  3. Click the Install Service Button. To ensure that Syncthing exits, restarts and upgrades are handled correctly by the Windows service manager, some final settings are needed. Execute these in the same Command Prompt:. Start the service via scstartsyncthing in the Command Prompt.

  4. Connect to the Syncthing UI, enable HTTPS, and set a secure username and password. Follow the information presented by brew to autostart Syncthing using launchctl.

Download and extract Syncthing for Mac:https://github.com/syncthing/syncthing/releases/latest. Copy the syncthing binary (the file you would open to launchSyncthing) into a directory called bin in your home directory i.e.

Configuration

Web-GUI

  1. into /Users//bin.

  2. If“bin” does not exist, create it.

  3. Open syncthing.plist located in /etc/macos-launchd.

    • Replace the four occurrences of /Users/USERNAME with your actual home directory location.

    • Copy the syncthing.plist file to ~/Library/LaunchAgents. Ifyou have trouble finding this location select the “Go” menu in Finderand choose “Go to folder…” and then type~/Library/LaunchAgents.

Starting Syncthing

Copying to ~/Library/LaunchAgents willrequire admin password in most cases. Log out and back in again. Or, if you do not want to log out, you canrun this command in terminal:launchctlload~/Library/LaunchAgents/syncthing.plist.

Note: You probably want to turn off “Start Browser” in the web GUIsettings to avoid it opening a browser window on each login.

Then, toaccess the GUI type 127.0.0.1:8384 (by default) into Safari.

You can make Syncthing start when you log into your desktop environment (DE) intwo ways.

Run as a service independent of user login¶

Using DE tools:. Search for and launch a tool related to autostart or startup applications. Add a new autostart application and search for and choose “Start Syncthing”. If you don’t find “Start Syncthing” in the steps above or just prefer doing itmanually:. Find the file syncthing-start.desktop: Either from the package youdownloaded from GitHub in etc/linux-desktop/, in/usr/share/applications/ if installed from your package manageror from our repository.

Copy syncthing-start.desktop to ~/.config/autostart/. For more information relating to .desktop files e.g.

for application menus,refer to https://github.com/syncthing/syncthing/tree/main/etc/linux-desktop. Go to /etc/supervisor/conf.d/ and create a new file named syncthing.conf with the following content (ensure you replaced with valid username):.

Reload Supervisord:. and check it is all working:. In case of troubles check the logs:. systemd is a suite of system management daemons, libraries, andutilities designed as a central management and configuration platformfor the Linux computer operating system.

It also offers users theability to manage services under the user’s control with a per-usersystemd instance, enabling users to start, stop, enable, and disabletheir own units. Service files for systemd are provided by Syncthing,either in the etc/linux-systemd directory of the downloaded tarballor directly installed to the appropriate location on your system wheninstalled through apt.syncthing.net.

Install and run using third-party tools¶

  1. You have two primary options: You can set up Syncthing as a system service, or auser service.

  2. Running Syncthing as a system service ensures that Syncthing is run at startupeven if the Syncthing user has no active session. Since the system service keepsSyncthing running even without an active user session, it is intended to be usedon a server.

  3. Running Syncthing as a user service ensures that Syncthing only starts after theuser has logged into the system (e.g., via the graphical login screen, or ssh).Thus, the user service is intended to be used on a (multiuser) desktopcomputer.

Run at user log on using the Startup folder¶

  1. It avoids unnecessarily running Syncthing instances. The official Debian/Ubuntu Syncthing repository, andseveral distros (including Arch Linux) ship these service files along withthe Syncthing package.

  2. If your distro provides the systemd service files forSyncthing, you can skip step #2 when you’re setting up either the system serviceor the user service, as described below. If in doubt, try if it works without andgo back to step #2 only if enabling the service failed.

  3. Create the user who should run the service, or choose an existing one.

Others

(Skip if your distribution package already installs these files, see above.)From git location mentioned above copy the Syncthing/etc/linux-systemd/system/[email protected] file into theload path of the system instance.

Enable and start the service. Replace “myuser” with the actual Syncthinguser after the @:.

Using the Desktop Environment (KDE, Gnome, Xfce, Cinnamon, …)¶

Create the user who should run the service, or choose an existingone. Probably this will be your own user account. (Skip if your distribution package already installs these files, see above.)Copy the Syncthing/etc/linux-systemd/user/syncthing.service file into the load pathof the user instance.To do this without root privileges you can just use this folder under yourhome directory: ~/.config/systemd/user/.

Enable and start the service:. If your home directory is encrypted with eCryptfs on Debian/Ubuntu, then you will need to makethe change described in Ubuntu bug 1734290.Otherwise the user service will not start, because by default, systemd checks for userservices before your home directory has been decrypted.

Automatic start-up of systemd user instances at boot (before login) is possiblethrough systemd’s “lingering” function, if a system service cannot be usedinstead.

Stop journal spam

Refer to the enable-linger command of loginctl to allow thisfor a particular user. To check if Syncthing runs properly you can use the statussubcommand. To check the status of a system service:. To check the status of a user service:. Systemd logs everything into the journal, so you can easily access Syncthing logmessages.

Using inotify

In both of the following examples, -e tells the pager to jump tothe very end, so that you see the most recent logs. To see the logs for the system service:. To see the logs for the user service:. If you enabled the IgnorePermissions option in the Syncthing client’sfolder settings, then you will also need to add the line UMask=0002 (or anyother umask setting you like) in the[Service] section of the [email protected] file.

If you are asked on the bugtracker to start Syncthing with specificenvironment variables it will not work the normal way.

Systemd isolates eachservice and it cannot access global environment variables.

The solution is toadd the variables to the service file instead. To edit the system service, run:. To edit the user service, run:. This will create an additional configuration file automatically and youcan define (or overwrite) further service parameters like e.g.Environment=STTRACE=model.