Installer un serveur Don’t Starve Together sous GNU/Linux Debian 8 64bits

Don’t Starve Together est une extension multi-joueurs du jeu Don’t starve sortie en 2014. C’est un jeu d’action aventure survival développé par Klei Entertainment. Les joueurs se retrouvent dans un monde sombre et hostile dans lequel ils doivent survivre le plus longtemps possible, en ramassant des ressources naturelles, en fabriquant divers objets (séchoirs à viande, pièges à animaux, armes et outils, etc.) et en se battant contre des ennemis (source Wikipédia).

Dans cet article, je vais vous expliquer comment installer un serveur dédié Don’t Starve Together sous GNU/Linux Debian 8 64bits.

J’ai repris le squelette de mon article précédent sur Starbound afin d’écrire celui-ci. En effet, le serveur Don’t Starve Together utilise également Steam CMD pour sa gestion (installation et mise à jour).

 

1- Préparation

Mise à jour et installation des packages :

apt-get update ; apt-get upgrade
apt-get install lib32gcc1 libvorbisfile3 screen

Création d’un utilisateur applicatif :

adduser steamsrv
su - steamsrv

Création des répertoires :

mkdir dont-starve-together
mkdir steamcmd ; cd steamcmd

 

2- Installation de SteamCMD

Pour plus d’information sur SteamCMD, je vous invite à lire cet article.

Téléchargez et installez le client Steam console :

wget http://media.steampowered.com/installer/steamcmd_linux.tar.gz
tar -zxvf steamcmd_linux.tar.gz
./steamcmd.sh

 

3- Installation du serveur Don’t Starve Together

Steam> login anonymous
Steam> force_install_dir /home/steamsrv/dont-starve-together
Steam> app_update 343050 validate
Steam> quit

 

3- Premier lancement

Déplacez-vous dans le répertoire contenant le binaire et lancez-le :

cd /home/steamsrv/dont-starve-together/bin
./dontstarve_dedicated_server_nullrenderer

CTRL+C pour stopper le serveur

 

4- Configuration

Le fichier de configuration de votre serveur est dans le répertoire ci-dessous :

vi ~/.klei/DoNotStarveTogether/settings.ini
[network]
default_server_name = <le-nom-de-votre-serveur>
default_server_description = <la-description-de-votre-serveur>
server_port = 10999
server_password = <le-mot-de-passe-pour-se-connecter-a-votre-serveur>
max_players = 10
pvp = false
game_mode = endless
enable_snapshots = true
enable_autosaver = true
tick_rate = 30
connection_timeout = 8000
server_save_slot = 1
enable_vote_kick = true
pause_when_empty = true

[account]
dedicated_lan_server = false
server_token = <token-de-votre-serveur>


[MISC]
CONSOLE_ENABLED = true
autocompiler_enabled = true

Par défaut, il y a 3 modes de jeu (game_Mode) :

  • survival : Le mode « survie » est le plus difficile de ces trois modes. Il est destiné à être joué en coopératif. Les joueurs qui meurt deviennent des fantômes et drainent la santé mentale des joueurs encore en vie. Quand tous les joueurs sont morts, une minuterie se met en route et si les joueurs ne reviennent pas en vie, le monde sera remis à zéro.
  • endless : Le mode « sans fin » est plus facile et il ne force pas les joueurs à coopérer. Ce mode n’a pas de fin, le monde ne se réinitialise pas et les joueurs peuvent ressusciter au portail au respawn.
  • wilderness : Le mode « région sauvage » est plus comme les autres jeux de survie. Les joueurs commencent à des endroits différents sur la carte. Quand un joueur meurt, celui-ci ne devient pas un fantôme et il sera redirigé vers l’écran de sélection des personnages. Il devra donc recommencer un nouveau personnage et il réapparaitra aléatoirement sur la carte. Aucun élément de résurrection n’est disponible.

Afin de générer votre « server_token« , vous devez lancer votre jeu Don’t Starve Together, allez dans le menu multi-joueurs (« Browse Games« ). Ensuite, appuyer sur la touche suivante afin d’afficher la console du jeu : ù (ou ~ sur un clavier qwerty).

Enfin, exécutez la commande suivante :

TheNet:GenerateServerToken()

Celle-ci va créer un fichier texte dans le répertoire suivant de votre PC Windows :

C:\Users\<mon-utilisateur>\Documents\Klei\DoNotStarveTogether/server_token.txt

Ouvrez ce fichier, copiez le token et collez le dans le fichier de configuration de votre serveur (settings.ini) au paramètre « server_token« .

 

5- Gestion de votre serveur via un script Bash

#!/bin/bash
# /etc/init.d/dst-srv
# version 1.1 2015-11-08 (YYYY-MM-DD)
### BEGIN INIT INFO
# Provides:   dont-starve-together
# 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:    dont-starve-together server
# Description:    Starts the dont-starve-together server
### END INIT INFO

#Settings
SERVICENAME='dst-server'
SERVICE='./dontstarve_dedicated_server_nullrenderer'
OPTIONS='-console'
USERNAME='steamsrv'
SBPATH='/home/steamsrv/dont-starve-together'
INVOCATION="$SERVICE $OPTIONS"
STEAMPATH='/home/steamsrv/steamcmd'
ME=`whoami`

# Function
as_user() {
  if [ "$ME" == "$USERNAME" ] ; then
    bash -c "$1"
  else
    su - $USERNAME -c "$1"
  fi
}

sb_start() {
  if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
  then
    echo "$SERVICENAME is already running!"
  else
    echo "Starting $SERVICENAME..."
    as_user "cd $SBPATH/bin && screen -dmS $SERVICENAME $INVOCATION"
    sleep 7
    if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
    then
      echo "$SERVICENAME is now running."
    else
      echo "Error! Could not start $SERVICENAME!"
    fi
  fi
}

sb_stop() {
  if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
  then
    echo "Stopping $SERVICENAME"
    as_user `screen -p 0 -S $SERVICENAME -X eval 'stuff c_announce("\""Server-stopping-in-10s"\"")\015'`
	    as_user `screen -p 0 -S $SERVICENAME -X eval 'stuff c_save()\015'`
    sleep 5
    as_user `screen -p 0 -S $SERVICENAME -X eval 'stuff c_announce("\""Server-stopping-in-5s"\"")\015'`
    sleep 5
    as_user `screen -p 0 -S $SERVICENAME -X eval 'stuff c_announce("\""Server-shutdown"\"")\015'`
    as_user `screen -p 0 -S $SERVICENAME -X eval 'stuff c_shutdown(true)\015'`
    sleep 5
      else
    echo "$SERVICENAME was not running."
  fi
  if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
  then
    echo "Error! $SERVICENAME could not be stopped."
  else
    echo "$SERVICENAME is stopped."
  fi
}

# Main script
case "$1" in
  start)
    sb_start
    ;;
  stop)
    sb_stop
    ;;
  restart)
    sb_stop
    sb_start
    ;;
  status)
    if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
    then
      echo "$SERVICENAME is running."
    else
      echo "$SERVICENAME is not running."
    fi
    ;;
  *)
  echo "Usage: starbound.sh {start|stop|status|restart}"
  exit 1
  ;;
esac

exit 0
dst-srv

En root, télécharger le script dans le répertoire /etc/init.d et effectuer les actions suivantes :

chown steamsrv:steamsrv /etc/init.d/dst-srv
chmod a+x /etc/init.d/dst-srv
cd /home/steamsrv ; ln -s /etc/init.d/dst-srv

6- Lancez votre nouveau serveur dédié Starbound

su - steamsrv
./dst-srv start

Depuis votre PC, vous pouvez rejoindre dès maintenant votre serveur Don’t Starve Together !

Afin que vos amis puissent vous rejoindre, vous devez ouvrir le port TCP 10999.

 

Il vous est également possible de :

./dst-srv stop                 # Arrêter le serveur
./dst-srv status               # Afficher l'état du serveur
./dst-srv restart              # Redémarrer le serveur

7- Mettre à jour son serveur

Je vous conseille d’exécuter régulièrement le script ci-dessous afin de mettre à jour votre serveur Don’t Starve Together :

#/!bin/bash
# version 1.0 2015-11-08 (YYYY-MM-DD)
#
# Script for steam server update
#

# Variables
SERVICENAME='dst-server'
SERVICE='./dontstarve_dedicated_server_nullrenderer'
USERNAME='steamsrv'
SBPATH='/home/steamsrv/dont-starve-together'
STEAMPATH='/home/steamsrv/steamcmd'
ME=`whoami`
APPLI='343050'
SB_START='/etc/init.d/dst-srv start'
SB_STOP='/etc/init.d/dst-srv stop'

# Function
as_user() {
  if [ "$ME" == "$USERNAME" ] ; then
    bash -c "$1"
  else
    su - $USERNAME -c "$1"
  fi
}

# Main script
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
  then
    echo "$SERVICENAME is running!"
	as_user "$SB_STOP"
	if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
	then
		echo "Error, $SERVICENAME is running!"
		exit 1
	else
		echo "$SERVICENAME was not running."
	fi
	# Starting Update
	echo "Starting update..."
	as_user "$STEAMPATH/steamcmd.sh +login anonymous +force_install_dir $SBPATH +app_update $APPLI +exit"
	echo "Update was finish !"
	# Starting Server
	as_user "$SB_START"
  else
	as_user "$STEAMPATH/steamcmd.sh +login anonymous +force_install_dir $SBPATH +app_update $APPLI +exit"
	echo "Update was finish !"
fi

exit 0
update_dst.sh

Le script ci-dessus est en phase de bêta alors n’hésitez surtout pas à remonter vos bugs et vos suggestions dans les commentaires! Merci.

 

8- Pour aller plus loin

Afin d’administrer votre serveur, vous avez la possibilité d’exécuter les commandes qui sont listé dans cet article.

De plus, afin d’exécuter des commandes en tant que votre serveur, appuyez sur la touche CTRL de votre clavier.

 

Source et Image.