syncthing/etc/linux-systemd
Stefan Tatschner da0b78c67a systemd: Fix error code definitions to prevent failed units
The systemd exit code definitions (introduced in c586a17, refs #1324) caused
problems. Per default systemd considers a return code != 0 as failed. So when
you click on "Restart" in the WebUI an error appears:

  systemd[953]: syncthing.service: main process exited, code=exited, status=3/NOTIMPLEMENTED
  systemd[953]: Unit syncthing.service entered failed state.
  systemd[953]: syncthing.service failed.
  systemd[953]: syncthing.service holdoff time over, scheduling restart.
  systemd[953]: Started Syncthing - Open Source Continuous File Synchronization.
  systemd[953]: Starting Syncthing - Open Source Continuous File Synchronization...
  syncthing[13222]: [LFKUK] INFO: syncthing v0.10.30 (go1.4.2 linux-amd64 default) builduser@jara 2015-03-29 07:46:44 UTC

To fix this error we have to add the "succes codes" 2, 3, 4 to
"SuccessExitStatus":

  syncthing[13006]: [LFKUK] INFO: Restarting
  syncthing[13006]: [LFKUK] OK: Exiting
  systemd[953]: syncthing.service holdoff time over, scheduling restart.
  systemd[953]: Started Syncthing - Open Source Continuous File Synchronization.
  systemd[953]: Starting Syncthing - Open Source Continuous File Synchronization...
  syncthing[13031]: [LFKUK] INFO: syncthing v0.10.30 (go1.4.2 linux-amd64 default) builduser@jara 2015-03-29 07:46:44 UTC

To make sure that syncthing restarts in case of error, and to make sure
that "Restart=on-failure" actually works, let's remove
"RestartPreventExitStatus=1". Systemd considers this as an error per
default and the restart will be triggered successfully.
2015-03-30 00:51:06 +02:00
..
system systemd: Fix error code definitions to prevent failed units 2015-03-30 00:51:06 +02:00
user systemd: Fix error code definitions to prevent failed units 2015-03-30 00:51:06 +02:00
README.md add README 2015-01-05 18:29:13 +08:00

This directory contains a configuration for running syncthing under the "systemd" service manager on Linux both under either a systemd system service or systemd user service.

  1. Install systemd.

  2. If you are running this as a system level service:

  3. Create the user you will be running the service as (foo in this example).

  4. Copy the syncthing@.service files to /etc/systemd/system

  5. Enable and start the service systemctl enable syncthing@foo.service systemctl start syncthing@foo.service

  6. If you are running this as a user level service:

  7. Log in as the user you will be running the service as

  8. Copy the syncthing.service files to /etc/systemd/user

  9. Enable and start the service systemctl --user enable syncthing.service systemctl --user start syncthing.service

Log output is sent to the journal.