Guides/Automatically Start Dedicated Server (Linux)

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.

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



!i/bin/sh

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

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

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