ARK Survival Evolved : Comment installer son serveur sur GNU/Linux Debian 8 64bits

ARK: Survival Evolved est un jeu d’action-aventure et de survie dans l’univers du Jurassique (avec certains objets contemporains). Depuis juin 2015, il est en accès anticipé sur Steam. Ce jeu est dynamique et très immersif. Vous y passerez facilement des heures !

Votre personnage se réveillera sur une plage d’une immense île. Votre objectif sera de survivre dans un environnement très hostile. Préparez-vous à mourir très souvent ! Pour vous protéger, vous allez devoir crafter des objets afin de construire : abris, équipements et armes. Il vous sera également possible de vous déplacer à dos de dinosaure ! Enfin, ce jeu propose un système d’expérience et de niveaux afin de vous rendre plus fort et plus efficace contre ce milieu hostile!

Dans cet article, je vais vous expliquer comment installer un serveur dédié ARK Survival Evolved sous GNU/Linux Debian 8 64bits.

Pour écrire cet article, j’ai repris le squelette d’un de mes précédents car les serveurs ARK Survival Evolved utilisent également SteamCMD pour son installation et sa gestion.

interrogationLe jeu est actuellement en accès anticipé alors l’installation et la configuration risque de changer durant les prochains mois. J’ai rédigé ce tutoriel sur la version serveur : v242.8.

 

Les pré-requis :

Votre système d’exploitation doit être en 64bits. Un minimum de 6GB de RAM est nécessaire afin de lancer votre serveur ARK mais son nombre augmentera en fonction du nombre de joueurs connecté.

Voici les ports réseau qui seront utilisé (mais qui peuvent être changés) :

  • 27015 en TCP/UDP : pour les requêtes de Steam
  • 7778 en UDP : ports du jeu pour que le client puissent se connecter
  • 32330 en TCP : port RCON du serveur pour son administration à distance (optionnel)
root@server:~# netstat -tulpn | grep ShooterGameSe
udp        0      0 0.0.0.0:27015           0.0.0.0:*                           23440/ShooterGameSe
udp        0      0 0.0.0.0:7778            0.0.0.0:*                           23440/ShooterGameSe
tcp        0      0 0.0.0.0:32330           0.0.0.0:*               LISTEN      23440/ShooterGameSe

 

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 ark
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 ARK Survival Evolved

Steam> login anonymous
Steam> force_install_dir /home/steamsrv/ark
Steam> app_update 376030 validate
Steam> quit

Durant le téléchargement, si vous obtenez le message d’erreur suivant : Error! App ‘376030’ state is 0x402 after update job. Relancer la commende app_update 376030 validate

 

4- Configuration de votre système d’exploitation

Vous devez modifier la configuration de votre système d’exploitation afin que l’utilisateur steamsrv puisse se libérer de la limitation système à propos du nombre de fichier ouvert simultanément. Pour cela, vous devez effectuer les opérations suivantes en root :

sysctl.conf

vi /etc/sysctl.conf

et ajoutez la ligne suivante à la fin du fichier :

fs.file-max=100000

Exécutez la commande suite afin que votre modification soit prise en compte :

sysctl -p /etc/sysctl.conf

 

limits.conf

vi /etc/security/limits.conf

Ajoutez les paramètres suivants :

steamsrv        soft    nofile          100000
steamsrv        hard    nofile          100000

 

common-session

vi /etc/pam.d/common-session

Ajoutez la ligne suivante :

session required pam_limits.so

 

Afin que ces paramètres soient pris en compte, vous pouvez redémarrer votre serveur ou simplement vous déconnecter et vous reconnectez avec l’utilisateur steamsrv.

Pour vérifier que ces limitations sont bien prise en compte, vous pouvez utiliser les commandes suivante :

steamsrv@zabou:~$ ulimit -n
 1000000

root@zabou:~# cat /proc/sys/fs/file-nr
2432    0       100000

file-nr renvoi 3 informations :

  • Le premier champ : nombre totale de fichier alloué
  • Le deuxième champ : nombre de fichier non utilisé
  • et le troisième champ : nombre de fichier maximum allouable

 

3- Premier lancement

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

cd /home/steamsrv/ark/ShooterGame/Binaries/Linux
./ShooterGameServer TheIsland?listen?SessionName=Nom-de-mon-server?ServerPassword=Password?ServerAdminPassword=RconServer -server -log
Using binned.
4.5.1-0+UE4 7038 3077 402 5
[S_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.
Setting breakpad minidump AppID = 346110

CTRL+C pour stopper le serveur

 

Si vous n’utilisez pas iptable ou que vous n’avez pas créer vos règles, l’erreur suivante s’affichera mais ne vous inquiéter pas car cela n’empêchera pas votre serveur de fonctionner :
[S_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.

De plus, le serveur ARK prend BEAUCOUP de temps à se lancer alors soyez patient 😉

4- Configuration

L’article wiki suivant vous sera très utile afin de paramétrer votre serveur comme vous le souhaitez.

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

/home/steamsrv/ark/ShooterGame/Saved/Config/LinuxServer/GameUserSettings.ini

Pour vous donner un exemple, voici les paramètres que j’utilise sur mon serveur :

[ServerSettings]
ActiveTotalConversion=0
ServerPassword=PASSWORD
ServerAdminPassword=PASSWORD
RCONEnabled=True
RCONPort=32330
PvEDinoDecayPeriodMultiplier=1.000000
KickIdlePlayersPeriod=1800
PerPlatformMaxStructuresMultiplier=1.000000
ListenServerTetherDistanceMultiplier=1.000000
RCONServerGameLogBuffer=600.000000
allowThirdPersonPlayer=True
ShowMapPlayerLocation=True
bUseVSync=True
BanListURL="http://playark.com/banlist.txt"
NightTimeSpeedScale=2
ServerPVE=True
noTributeDownloads=True
PreventDownloadSurvivors=True
PreventDownloadItems=True
PreventDownloadDinos=True
ResourcesRespawnPeriodMultiplier=0.500000
AllowCaveBuildingPvE=False
AlwaysNotifyPlayerLeft=True
AlwaysNotifyPlayerJoined=True
DifficultyOffset=1
MaxTamedDinos=4000
bAllowFlyerCarryPvE=True
MaxPlatformSaddleStructureLimit=100
TamingSpeedMultiplier=3
AdminLogging=False
AutoSavePeriodMinutes=90.000000
AllowFlyerCarryPvE=True
StructurePreventResourceRadiusMultiplier=1.000000
AllowAnyoneBabyImprintCuddle=True
EnableExtraStructurePreventionVolumes=False
ShowFloatingDamageText=True
NonPermanentDiseases=True

[/Script/ShooterGame.ShooterGameUserSettings]
MasterAudioVolume=1.000000
MusicAudioVolume=1.000000
SFXAudioVolume=1.000000
VoiceAudioVolume=1.000000
CameraShakeScale=1.000000
bFirstPersonRiding=False
bThirdPersonPlayer=False
bShowStatusNotificationMessages=True
TrueSkyQuality=0.000000
FOVMultiplier=1.000000
GroundClutterDensity=0.000000
bFilmGrain=False
bMotionBlur=False
bUseDFAO=False
bUseSSAO=False
bShowChatBox=True
bCameraViewBob=True
bInvertLookY=False
bFloatingNames=True
bChatBubbles=True
bHideServerInfo=False
bJoinNotifications=False
bJoinNotifications=True
bCraftablesShowAllItems=True
bLocalInventoryShowAllItems=False
bRemoteInventoryShowAllItems=False
LookLeftRightSensitivity=1.000000
LookUpDownSensitivity=1.000000
GraphicsQuality=1
ActiveLingeringWorldTiles=6
ClientNetQuality=3
LastServerSearchType=0
LastServerSearchHideFull=False
LastServerSearchProtected=False
HideItemTextOverlay=False
bDistanceFieldShadowing=False
LODScalar=0.780000
bToggleToTalk=False
HighQualityMaterials=True
HighQualitySurfaces=True
bTemperatureF=False
bDisableTorporEffect=False
bChatShowSteamName=False
bChatShowTribeName=True
EmoteKeyBind1=0
EmoteKeyBind2=0
bNoBloodEffects=False
bLowQualityVFX=False
bSpectatorManualFloatingNames=False
bSuppressAdminIcon=False
bUseSimpleDistanceMovement=False
bUseVSync=True
MacroCtrl0=
MacroCtrl1=
MacroCtrl2=
MacroCtrl3=
MacroCtrl4=
MacroCtrl5=
MacroCtrl6=
MacroCtrl7=
MacroCtrl8=
MacroCtrl9=
ResolutionSizeX=1280
ResolutionSizeY=720
LastUserConfirmedResolutionSizeX=1280
LastUserConfirmedResolutionSizeY=720
WindowPosX=-1
WindowPosY=-1
bUseDesktopResolutionForFullscreen=False
FullscreenMode=2
LastConfirmedFullscreenMode=2
Version=5

[ScalabilityGroups]
sg.ResolutionQuality=100
sg.ViewDistanceQuality=3
sg.AntiAliasingQuality=3
sg.ShadowQuality=3
sg.PostProcessQuality=3
sg.TextureQuality=3
sg.EffectsQuality=3
sg.TrueSkyQuality=3
sg.GroundClutterQuality=3
sg.IBLQuality=1
sg.HeightFieldShadowQuality=3

[SessionSettings]
SessionName=[FR/PVE]-pazpop.fr
QueryPort=27015
Port=7777

[/Script/Engine.GameSession]
MaxPlayers=40

[MessageOfTheDay]
Duration=20
Message=Bienvenue sur le serveur de pazpop.fr !
GameUserSettings.ini

Il y a également un deuxième fichier de configuration :

/home/steamsrv/ark/ShooterGame/Saved/Config/LinuxServer/Game.ini

Voici un autre exemple :

[/script/shootergame.shootergamemode]
LayEggIntervalMultiplier=1.0
MatingIntervalMultiplier=2.0
EggHatchSpeedMultiplier=5.0
BabyMatureSpeedMultiplier=3.0
BabyFoodConsumptionSpeedMultiplier=0.5
CropGrowthSpeedMultiplier=1.5
Game.ini

 

Globalement, cette configuration exemple effectué les modifications suivantes :

- Serveur PVE avec tir allié
- Niveau de difficulté : 4.0 (Niveau max des dinosaures : 120)
- Temps de dressage : x3
- Durée de la nuit : x2
- Génération des ressources : x2
- Intervalle entre lesquels les dinosaures peuvent s'accoupler: x2
- Incubation des œufs : x5 (EggHatchSpeedMultiplier=5.0)
- Maturation des bébés dino : x3 (BabyMatureSpeedMultiplier=3.0)
- Vitesse de la consommation de la nourriture des bébés : 0,25 fois moins rapide
- Réduction du temps de croissance des plantes : x2
- Vue à la troisième personne autorisée
- Localisation sur la carte activée
- 6000 éléments par bases
- Téléchargement des données joueur désactivé (personnages/tribu/dinosaure)
- Permet aux joueurs montant un dinosaure volant de ramasser d'autres les joueurs
- Sauvegarde du serveur une fois par heure
- Maintenance du serveur chaque jour entre 6h et 7h
- Les joueurs inactifs seront automatiquement expulsé (kick) au bout de 60 minutes
- Les constructions dans les zones riches en ressources ne sont pas possible
- Les maladies ne sont pas permanentes (à votre mort, vous ne serez plus malade)

 

5- Gestion de votre serveur via un script Bash

Dans cette section, je vais vous partager les scripts Bash que j’utilise au quotidien pour administrer mon serveur. Ils peuvent être optimisé et amélioré mais ils ont le mérite de fonctionner.

Création des répertoires :

mkdir -p /home/steamsrv/ark-admin/backups
mkdir -p /home/steamsrv/ark-admin/logs
mkdir -p /home/steamsrv/ark-admin/scripts ; cd /home/steamsrv/ark-admin/scripts

Script de gestion de démarrage :

vi ark-srv.sh
#!/bin/bash
### BEGIN INIT INFO
# Provides:          ARK Server Script
# Required-Start:    networking
# Required-Stop:     networking
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: ARK Server Script
# Description:       ARK Server Script used to manage the server
#
### END INIT INFO

# Global variables
USERNAME="steamsrv"
SERVICENAME="ArkServerByDemineur"
ARKPATH="/home/steamsrv/ark/ShooterGame/Binaries/Linux"
SERVICE="ShooterGameServer"
#INVOCATION="$ARKPATH/$SERVICE TheIsland?listen?MaxPlayers=40 -server -log -culture=fr"
INVOCATION="$ARKPATH/$SERVICE TheCenter?listen?MaxPlayers=40?EnableExtraStructurePreventionVolumes=false -server -log -culture=fr -USEALLAVAILABLECORES -EnableIdlePlayerKick"
RCONBIN="/home/steamsrv/ark-admin/scripts/rcon"
RCONPWD="PASSWORD"
ARKIP="127.0.0.1"
RCONPORT="32330"


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

ark_start() {
  if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
  then
    echo "Tried to start but $SERVICENAME was already running!"
  else
    echo "$SERVICENAME was not running... starting."
    cd $ARKPATH
    as_user "cd $ARKPATH && screen -dmS $SERVICENAME $INVOCATION"
    sleep 200
    if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
    then
      echo "$SERVICENAME is now running."
    else
      echo "Could not start $SERVICENAME."
    fi
  fi
}


ark_stop() {
        if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
        then
                echo "$SERVICENAME is running... stopping."
                                $RCONBIN -P$RCONPWD -a$ARKIP -p$RCONPORT Broadcast Arret du serveur dans 60s...
                                $RCONBIN -P$RCONPWD -a$ARKIP -p$RCONPORT SaveWorld > /dev/null
                                sleep 60
                                kill -s INT $(ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE | awk '{print $1}')
                                sleep 20
        else
                echo "$SERVICENAME was not running."
        fi
        if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
        then
                echo "$SERVICENAME could not be shut down... still running."
        else
                echo "$SERVICENAME is shut down."
        fi
}


#Start-Stop here
case "$1" in
  start)
    ark_start
    ;;
  stop)
    ark_stop
    ;;
  restart)
    ark_stop
    sleep 5
    ark_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: /home/$USERNAME/ark-srv.sh {start|stop|restart|status}"
  exit 1
  ;;
esac

exit 0
ark-srv.sh

 

Script de sauvegarde :

vi ark-svg.sh
#!/bin/bash
### BEGIN INIT INFO
#
# Short-Description: ARK Server Script
# Description:       ARK Server Script used to save the server
#
### END INIT INFO

# Global variables
ARKPATHSVG="/home/steamsrv/ark/ShooterGame/Saved"
ARKADMIN="/home/steamsrv/ark-admin"
ARKBKP="$ARKADMIN/backups"
ARKLOG="$ARKADMIN/logs/svg.log"
DATE=`date "+%d.%m.%Y-%H:%M:%S"`
RCONBIN="$ARKADMIN/scripts/rcon"
RCONPWD="PASSWORD"
ARKIP="127.0.0.1"
RCONPORT="32330"


### MAIN SCRIPT
# Infos
tail -500 $ARKLOG > $ARKLOG
echo >>$ARKLOG
echo "========================================================" >>$ARKLOG
echo "== $DATE =="                                              >>$ARKLOG
echo "========================================================" >>$ARKLOG
echo "-- Liste des joueurs :" >>$ARKLOG
$RCONBIN -P$RCONPWD -a$ARKIP -p$RCONPORT listplayers >>$ARKLOG

# Start backup in Ark server
echo >>$ARKLOG
echo "-- Lancement de la SVG ARK :" >>$ARKLOG
$RCONBIN -P$RCONPWD -a$ARKIP -p$RCONPORT Broadcast Sauvegarde en cours...
$RCONBIN -P$RCONPWD -a$ARKIP -p$RCONPORT SaveWorld
sleep 10

# Start backup in server
echo >>$ARKLOG
echo "-- Lancement de la SVG :" >>$ARKLOG
tar zcvf $ARKBKP/$DATE-SVG-ARK-SRV.tar.gz $ARKPATHSVG/SavedArks >>$ARKLOG


# Clean Old backup
echo >>$ARKLOG
echo "-- Netoyage des backups :" >>$ARKLOG
find $ARKBKP -mtime +4 -exec rm -rf {} \; >>$ARKLOG

# End of script
echo "========================================================" >>$ARKLOG

exit 0

 

Script de mise à jour :

vi ark-update.sh

#!/bin/bash
### BEGIN INIT INFO
#
# Short-Description: ARK Server Script
# Description:       ARK Server Script used to upgrade or verify the server
#
# Info : You can update your mod with this option :
#                +workshop_download_item 346110 614734500
#                                                               WorkshopID + ModID
#
# WorkshopID : http://steamcommunity.com/app/346110/workshop/
# ModID :          http://steamcommunity.com/sharedfiles/filedetails/?id=520953653
#
### END INIT INFO

# Global variables
STEAMCMD="/home/steamsrv/steamcmd"
SERVICE="ShooterGameServer"
SERVICENAME="ArkServerByDemineur"
ARKPATH="/home/steamsrv/ark"


# MAIN SCRIPT
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
        then
            echo "$SERVICENAME is running..."
                        echo "You should stop your server before update !"
                        exit 1
        else
            echo "$SERVICENAME was not running."
                        echo "Launch update...."
                        cd $STEAMCMD
                        ./steamcmd.sh +login anonymous +force_install_dir $ARKPATH +app_update 376030 validate +quit
                        echo "... The update is completed !"
        fi

exit 0
ark-update.sh

 

Pour information, les options du paramètre workshop_download_item sont :
– l’ID du workshop du jeu (Ark : https://steamcommunity.com/app/346110/workshop/)
– L’ID du mode à télécharger (Poisoned Weapons : http://steamcommunity.com/sharedfiles/filedetails/?id=520953653)

Pour utiliser mes scripts, vous avez besoin de l’application rcon. Elle permet d’envoyer des commandes rcon à votre serveur. Les sources de ce code C sont disponible ici. Plus d’information ici. Vous devez placez ce binaire dans le répertoire /home/steamsrv/ark-admin/scripts.

 

6- Lancez votre nouveau serveur ARK

su - steamsrv
ark-admin/scripts/ark-srv.sh start

Depuis votre PC, vous pouvez rejoindre dès maintenant votre serveur Ark !

Il vous est également possible de :

ark-srv.sh stop                 # Arrêter le serveur
ark-srv.sh status               # Afficher l'état du serveur
ark-srv.sh 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 ARK :

su - steamsrv
ark-admin/scripts/ark-update.sh

Actuellement, les changes logs du jeu ARK est disponible ici.

 

Source et Image

  • bob_leponge

    merci pour ce tuto 🙂

    je rencontre une erreur lors du lancement :

    Using binned.
    4.5.1-0+UE4 7038 3077 402 6
    [S_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.
    Setting breakpad minidump AppID = 346110
    Processus arrêté

    une idée ?

    • pazpop

      Non, désolé. Le log n’est pas vraiment explicite 🙁 On comprend simplement que le processus s’est arrêté… mais pas pourquoi 🙁
      As tu trouvé une explication ?

  • Fred

    Bonjour, j’ai suivis votre tuto mais je ne comprend pas comment mettre à jour les mods également ? a part manuellement ce que je voudrais éviter

    • pazpop

      Salut, je ne gère plus de serveur ARK alors mon information risque d’etre dépassé mais depuis une release, les développeurs d’ARK ont intégré un updater automatique de mod. Pour être sincère, je n’ai pas spécialement compris commence celui-ci fonctionner. Je pense que tu peux trouvez plus d’information ici : http://www.playark-france.fr/mise-a-jour-ark-fr/patchnotes-ark-v244-0-v244-1-v245/ (cherche la mise à jour v244.3)

  • Pafpafpaf LeLoup (Paf le Loup)

    Bonjour et encore merci pour ce bon et beau tutoriel.
    J’ai un petit soucis qui me tracasse. On souhaite basculer un de nos serveur en pvp. malgrés les réglages il apparait toujours en liste pve et/ou pvp/pve dans ark. j’ai notre la variable server PVE=false . quelqu’un peut nous donner un coup de main ? Merci

  • Silvercott

    Excellent tuto !!! Merci pour la clareté des explications ^^
    Il me reste plus qu’a faire évoluer mon VPS pour pouvoir le tester car 4Go de RAM je le mets à plat !!

  • bASKOU

    Bonjour, merci beaucoup pour le tuto.
    On a installer notre serveur comme ça mais on arrive pas a lancer un cross ark, la seconde session ne ce lance jamais, quelqu’un aurait une solution ?

  • Julien

    Merci beaucoup pour les instructions ! 🙂
    Tout fonctionne parfaitement 🙂

    Par contre, quand je ferme PUTTY, ça ferme le serveur. Une astuce pour que le serveur de ARK ne s’arrête pas en fermant PUTTY ? 😀

    Merci d’avance pour tout et encore merci pour ce super tuto 🙂

  • Faunus

    Bonjour, merci pour la config alors voilà, j’aimerais comprendre comment tu ajoutes les mods ( par exemple le poisonned weapon, je n’ai rien fait pour l’avoir en gros c’est un mod par défaut ou il y a une manip ? ) Désolé, je recherche dans tes script celui qui me montre que tu installe ou utilise un mod c’est celui d’update, je ne vois pas comment faire autrement, peux tu m’aider ? ( je voudrais installer ce mod : http://steamcommunity.com/sharedfiles/filedetails/?id=736236773&searchtext= )
    Merci encore et à très vite j’espère !

    • pazpop

      Salut, J’ai écris ce tutoriel il y a longtemps et je m’occupe plus de serveur ARK alors l’installation de mod à du changer depuis :/ En revanche, tu peux trouver une réponse sur le topic officiel d’ARK ici : http://steamcommunity.com/app/346110/discussions/10/530646715633129391/

      • Faunus

        Je sais, j’ai lu juste en haut mais je me demandais comment tu faisais toi avant ? personnellement j’ai trouvé comment le faire en manuel avec des flux scp mais c’est un peux long je ne le cache pas quand tu as des fichiers à 800 MB ça commence à être chaud parce qu’il faut se dire qu’il y a le hachage etc… Bref merci quand même 🙂

        • pazpop

          La gestion des mods a changé plusieurs fois quand je gérais encore un serveur Ark. La dernière fois, il me semble que je passer pas l’utilitaire steamcmd.

          J’utilisais la ligne suivante mais je ne sais pas si elle fonctionne toujours :
          ./steamcmd.sh +login anonymous +force_install_dir $ARKPATH +app_update 376030 validate +workshop_download_item 346110 504360469 +qui