Guides/Automatically Start Dedicated Server (Linux)

From Don't Starve Wiki
Jump to navigation Jump to search
Icon Books.png This article may contain instructional language and subjective recommendations. Readers should read the content carefully, and follow accordingly.

The following is a script that can be used to start a dedicated server on boot/reboot of the host. This was setup after noticing my Ubuntu Server 14.0 had rebooted after updates which in-turn killed the DST dedicated server.

If you have not yet setup a dedicated server on a Linux machine I would recommend using the following as reference. This was used to setup DST on my Linux server: http://dont-starve-game.wikia.com/wiki/Guides/Simple_Dedicated_Server_Setup

You'll need to create the file in your /etc/init.d/ directory (command supplied below). If you followed the above guide then the directories should be the same. I named the file "start_dst" for my own reference you may change it "name".sh with out the quotes.

Create the file:

sudo vim /etc/init.d/start_dst.sh


Script:

!i/bin/sh

##BEGIN INIT INFO
# Provides:dst
# Short-Description: Don't starve server
# Description: Starts a Dont Starve Together server
### END INIT INFO

NAME="Dont Starve together"
#The user that you installed DST server as
USER="steam"
SCREENREF="DST"
#should be the same as the dedicated server's install directory
BINARYPATH="/home/steam/steamapps/DST/bin"
BINARYNAME="dontstarve_dedicated_server_nullrenderer"
PIDFILE="dstserver.pid"

cd "$BINARYPATH"


running() {
if [ -n "`pgrep -f $BINARYNAME`" ]; then
return 0
else
return 1
fi
}

start() {
if ! running; then
echo -n "Starting the $NAME server... "
start-stop-daemon --start --chuid $USER --user $USER --chdir $BINARYPATH --exec "/usr/bin/screen" -- -dmS $SCREENREF $BINARYPATH
pgrep -f $BINARYNAME > $PIDFILE
if [ -s $PIDFILE ]; then
echo "Done"
else
echo "Failed"
rm $PIDFILE
fi
else
echo "The $NAME server is already started."
fi
}

stop() {
if running; then
echo -n "Stopping the $NAME server... "
kill `cat $PIDFILE`
while running; do
sleep 1
done
rm $PIDFILE
echo "Done"
else
echo "The $NAME server is already stopped."
fi
}

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
if running; then
echo "The $NAME server is started."
else
echo "The $NAME server is stopped."
fi
;;
*)
echo "Usage: $0 (start|stop|restart|status)"
exit 1
esac
exit 0

Navigate to the directory you created the file ealrier.

cd /etc/init.d/

updates the file to be excutable:

sudo chmod +x start_dst.sh

allow the script to run on boot:

sudo update-rc.d start_dst.sh defaults


I used the script supplied on this page for reference modifying the INIT information to point to the appropriate directories for DST. https://wiki.teamfortress.com/wiki/Linux_dedicated_server