Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
/etc/init.d/syncthing script for Raspberry Pi (or any Ubuntu/Debian)
#!/bin/sh
### BEGIN INIT INFO
# Provides: syncthing
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Should-Start: $network
# Should-Stop: $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Multi-user daemonized version of syncthing.
# Description: Starts the syncthing daemon for all registered users.
### END INIT INFO
# Replace with users you want to run syncthing clients for
# syncthing_USERS="<your name here>"
syncthing_USERS="pi"
DAEMON=/usr/local/bin/syncthing
startd() {
for stuser in $syncthing_USERS; do
HOMEDIR=$(getent passwd $stuser | awk -F: '{print $6}')
if [ -f $config ]; then
echo "Starting syncthing for $stuser"
start-stop-daemon -b -o -c $stuser -S -u $stuser -x $DAEMON
else
echo "Couldn't start syncthing for $stuser (no $config found)"
fi
done
}
stopd() {
for stuser in $syncthing_USERS; do
dbpid=$(pgrep -fu $stuser $DAEMON)
if [ ! -z "$dbpid" ]; then
echo "Stopping syncthing for $stuser"
start-stop-daemon -o -c $stuser -K -u $stuser -x $DAEMON
fi
done
}
status() {
for stuser in $syncthing_USERS; do
dbpid=$(pgrep -fu $stuser $DAEMON)
if [ -z "$dbpid" ]; then
echo "syncthing for USER $stuser: not running."
else
echo "syncthing for USER $stuser: running (pid $dbpid)"
fi
done
}
case "$1" in
start) startd
;;
stop) stopd
;;
restart|reload|force-reload) stopd && startd
;;
status) status
;;
*) echo "Usage: /etc/init.d/syncthing {start|stop|reload|force-reload|restart|status}"
exit 1
;;
esac
exit 0
@arudmin

This comment has been minimized.

Copy link
Owner Author

arudmin commented Jun 9, 2014

Usage

  1. Move syncthing application to the /usr/local/bin folder
sudo mv syncthing /usr/local/bin/
  1. Copy this script to /etc/init.d/ folder and make executable
sudo chmod +x /etc/init.d/syncthing
@Sol-Illadan

This comment has been minimized.

Copy link

Sol-Illadan commented Dec 31, 2014

how to add logging to the script ?

@ghost

This comment has been minimized.

Copy link

ghost commented Apr 30, 2015

start-stop-daemon -b -o -c $stuser -S -u $stuser -x $DAEMON >> 2>&1

@Morrisman68

This comment has been minimized.

Copy link

Morrisman68 commented Nov 11, 2015

Dumb question from newbie - apologies!

Is it sufficient just to add the script to the /etc/init.d directory or does one need to run update-rc.d as well?

Many thanks.

@henryx

This comment has been minimized.

Copy link

henryx commented Jan 4, 2016

Correct way to add logging in the script is:
start-stop-daemon -b -o -c $stuser -S -u $stuser -x $DAEMON -- -logfile="/path/to/logging"

@phil123456

This comment has been minimized.

Copy link

phil123456 commented May 13, 2016

apparently not working, it does not create the config.xml

@calmh

This comment has been minimized.

Copy link

calmh commented Sep 5, 2016

This script is bad and should not be used. I suspect it's just slightly modified copy pasta from somewhere else, but the end result is nonsensical and mostly works by blind luck. There are valid alternatives in https://github.com/syncthing/syncthing/tree/master/etc and in the release / Debian packages.

@ecxod

This comment has been minimized.

Copy link

ecxod commented Dec 13, 2016

@Morrisman68 of course you need to :))
sudo update-rc.d syncthing defaults

@frederickjh

This comment has been minimized.

Copy link

frederickjh commented Jan 5, 2018

@calmh Sorry, I cannot find a sysvinit script in either of those places. I find runit, upstart, systemd among others, but no sysvinit script.

@frederickjh

This comment has been minimized.

Copy link

frederickjh commented Jan 5, 2018

A better sysvinit script was submitted in this Syncthing issue: Debian SysVinit Script #2990. The Gist of it can be found here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.