Guides/Automatically Start Dedicated Server (Linux)

From Don't Starve Wiki
Jump to: navigation, search
Icon Book.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.wiki.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