tanaka-world.net

Informatique / jeux

Retour vers la page principale

Installation d'un serveur ArmA3 - EpochMod sous Linux Ubuntu


créé par Tanaka le 15/08/2015, modifié par Tanaka le 11/11/2015

Ce tutoriel est applicable au version 0.3.1.0 de l'Epoch Mod.

Vous remarquerez que, dans ce HowTo/Tutoriel, j'ai mis les commandes "bash" dans un beau cadre, ce qui vous permet de faire de violent copier-coller de la page web vers votre PuTTY préféré !

J'ai suivi scrupuleusement toutes les phases de ce HowTo, et, par miracle, le serveur ArmA 3 - Epoch a démarré direct. Après reste à choisir le bon serveur dédié pour supporter les connexions multiples des joueurs.

  1. Installation de tous les packages "linux" utiles :
    1. Programmes :
      sudo apt-get install screen redis-server zip unzip (watchdog) (perl)
      • screen
      • redis-server
      • zip
      • unzip
      • perl (mouais)
      • watchdog (mouais)
    2. Librairies :
      sudo apt-get install libhiredis-dev libstdc++6 g++-multilib
      Pour les versions 64bits seulement :
      sudo apt-get install lib32stdc++6 lib32gcc1
      • libhiredis-dev
      • libstdc++6
      • g++-multilib
      • lib32stdc++6
      • lib32gcc1
    3. Mise à jour finale :
      Juste pour vérifier que tout est up-to-date, vu que, dans le monde Linux, ca bouge beaucoup :
      sudo apt-get update
      sudo apt-get upgrade
  2. Installation des fichiers de base d'ArmA 3 :
    En utilisant SteamCMD, méthode la plus simple. Aller à cette adresse : https://developer.valvesoftware.com/wiki/SteamCMD#Linux. En plus, vous pouvez suivre les instructions, qui sont aussi ci-dessous, qui comportent des commentaires/explications supplémentaires :
    1. Créér un nouveau "user" dans le repertoire "home" du serveur Linux, dédié à Steam et ArmA3. Ne jamais installer dans un compte, genre root ou celui qui sert à vous connecter à votre serveur dédié.
      sudo useradd -m steam
      sudo passwd steam
      -> vous devrez alors saisir un Pass pour ce compte "steam", faites qu'il soit dur/compliqué...
      su - steam
    2. Installation de SteamCMD :
      mkdir steamcmd
      cd steamcmd
      wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz (adresse au 15/08/2015)
      tar -xvzf steamcmd_linux.tar.gz
    3. Création d'un script pour la téléchargement/mise-à-jour de tous les fichiers nécessaires au serveur ArmA3 :
      Il faut utiliser un nouveau compte steam. Si vous utilisez le votre, c'est à vos risque et péril. Si vous avez installé SteamGuard, vous devrez aussi entrer un code qui sera envoyé à votre adresse mail. Le répertoire d'installation d'ArmA3 sera dans un sous-répertoire du user "steam", soit :
      /home/steam/arma3
      Ce qui sera le plus simple, faut pas trop se fatiguer dès fois.
      cd ~
      echo -e '#!/bin/bash\n~/steamcmd/steamcmd.sh +login xxx yyy +force_install_dir /home/steam/arma3 +"app_update 233780" validate +quit' > ./a3update.sh
      chmod +x ./a3update.sh
      Script à lancer dès qu'il est créé, ce qui téléchargera la dernière version d'ArmA 3. Puis à chaque fois que nécessaire pour faire les éventuelles update d'ArmA 3.
      ./a3update.sh
    4. Méthode manuel pour se connecter à Steam :
      cd ~/steamcmd
      ./steamcmd.sh
      On bascule dans le "bash" SteamCMD :
      login STEAM_USER STEAM_PASSWRD
      force_install_dir /home/steam/arma3/
      app_update 233780 validate
      quit
      
  3. Création de repertoires spécifiques dédiés à plusieurs instances
    1. Afin de pouvoir lancer plusieurs instances sur un même serveur physique, j'ai récupéré une méthode sur un site https://medium.com/arma-3-server-administration/installation-and-configuration-of-an-arma-3-linux-dedicated-server-7875c9030b7. Je vous la transcrit :
      • Création du repertoire de travail dans le repertoire arma3 et de repertoires de données :
        cd ~/arma3
        mkdir public
        cd public
        mkdir keys
        mkdir mpmissions
        mkdir userconfig
        mkdir mods
        mkdir serverconfig
        
      • Création du fichier de démarrage :
        cd ~/arma3/public
        touch start.sh
        chmod u+x start.sh
        
      • Création des liens symboliques dans le répertoire de travail :
        cd ~/arma3/public
        ln -s ~/arma3/arma3server arma3server
        ln -s ~/arma3/addons addons
        ln -s ~/arma3/battleye battleye
        ln -s ~/arma3/dta dta
        ln -s ~/arma3/libsteam_api.so libsteam_api.so
        ln -s ~/arma3/libsteam.so libsteam.so
        ln -s ~/arma3/libtier0_s.so libtier0_s.so
        ln -s ~/arma3/libvstdlib_s.so libvstdlib_s.so
        ln -s ~/arma3/steam_appid.txt steam_appid.txt
        ln -s ~/arma3/steamclient.so steamclient.so
        
      • Création des liens symboliques des DLC (bien ajouter les liens symboliques pour chaque ajout) :
        cd ~/arma3/public
        ln -s ~/arma3/curator curator
        ln -s ~/arma3/kart kart
        ln -s ~/arma3/heli helil
        ln -s ~/arma3/mark mark
      • Création du lien symbolique vers le key principal :
        cd ~/arma3/public
        ln -s ~/arma3/keys/a3.bikey a3.bikey
      • Demarrage de la Vanilla :
        cd ~/arma3/
        ./arma3server -world=empty
    2. Création d'un serveur
  4. Installation des fichiers du mod Epoch :
    1. Si mise à jour du mod Epoch, effacer d'abord les répertoires mises à jour, client et/ou serveur :
      rm -r ~/arma3/@epoch
      rm -r ~/arma3/@epochhive
    2. Création d'un répertoire de travail :
      cd ~
      mkdir epoch_mod
      cd epoch_mod
    3. Récupération du mod_client :
      wget http://rr.whocaresabout.de/epoch/Epoch_Client_0.3.1.0.zip
      unzip Epoch_Client_0.3.1.0.zip (dezippage)
      mv @Epoch/Keys/*.* ~/arma3/keys
      rm -r @Epoch/Keys/
      mv @Epoch ~/arma3/
      Le répertoire @Epoch n'existe plus, pas besoin de l'effacer...
    4. Récupération du mod_server :
      wget https://api.github.com/repos/EpochModTeam/Epoch/zipball/0.3.1.0
      unzip 0.3.1.0
      mv EpochModTeam-Epoch-b6d2434 epoch_server
      rm 0.3.1.0
      rm -r epoch_server/Server_Install_Pack/DB/
      rm -r epoch_server/Server_Install_Pack/BEC/
      mv epoch_server/Server_Install_Pack/* ~/arma3/
      cp -r epoch_server/Server_Install_Pack/* ~/arma3/
      rm -r epoch_server
  5. Contrôle et Préparation des fichiers
    1. Mise en minuscule de tous les noms de fichiers
      Pour éviter un plantage direct du serveur, il faut passer tous les fichiers en minuscule, pour cela, récuperer le fichier tolower.c à l'adresse https://github.com/denisio/Dayz-Epoch-Linux-Server, puis, dans le repertoire "~/arma3/ :
      wget https://raw.githubusercontent.com/denisio/Dayz-Epoch-Linux-Server/master/tolower.c
      gcc -O -o tolower tolower.c
      Comme il y a certains fichiers qui ne doivent pas être modifier (bizarre...). Le mieux est de créer un fichier executable "epoch_nettoyage.sh" dans le repertoire "arma3", avec les commandes suivantes :
      #!/bin/bash
      
      ./tolower
      
      mv libphysx3common_x86.so libPhysX3Common_x86.so
      mv libphysx3cooking_x86.so libPhysX3Cooking_x86.so
      mv libphysx3_x86.so libPhysX3_x86.so
      Le rendre exécutable :
      chmod +x ./epoch_nettoyage.sh
      Puis, de le lancer :
      ./epoch_nettoyage.sh
      Par ailleurs, les éventuelles mises à jour d'ArmA 3 par SteamCMD peuvent effacer tous les fichiers externes au programme "ArmA 3", voir l'alinéa "Sauvegarde" pour se protéger contre l'écrasement des données utiles
    2. Controle des dépendances :
      export LD_LIBRARY_PATH=.:$HOME/arma3:$HOME/arma3/@epochhive:$LD_LIBRARY_PATH;
      ldd ~/arma3/@epochhive/epochserver.so
      ldd ~/arma3/battleye/beserver.so
      ldd ~/arma3/arma3server
      La ligne "export" est importante pour le test, sans cela, il va y avoir plein d'erreurs. Normalement, il ne devrait pas y avoir de problème, si vous avez tout suivi :), sinon je vous dis pas le bordel...
    3. Controle de la présence de tous les fichiers de configuration :
      cd ~/arma3/
      ./epoch_linux_startscript.sh check
      
      Ce script va aller contrôler la présence de tous les répertoires et fichiers nécessaires au démarrage d'Epoch. Il ne contrôle pas si les variables dans les fichiers en question sont bonnes, mais, seulement, si les répertoires et fichiers sont bien au bon endroit.

      Avant, il faut aller vérifier certaines variables avant de lancer le script, principalement les variables et ligne suivantes :

      Après les autres variables, vous faites ce que vous voulez, ca dépend de l'organisation de votre serveur. Il faut surtout tout faire pour que rien ne soit en MISSING.
      Vous aurez surtout à faire les compléments suivants :
      mkdir -p ~/arma3/logs
      mkdir -p ~/arma3/logs/old
      mkdir -p ~/.local/share/Arma\ 3\ -\ Other\ Profiles/sc
      ln -s ~/arma3/sc/sc.arma3profile ~/.local/share/Arma\ 3\ -\ Other\ Profiles/sc/sc.Arma3Profile
      • export LD_LIBRARY_PATH=.:$HOME/arma3:$HOME/arma3/@epochhive:$LD_LIBRARY_PATH;
      • ARMA_DIR=/home/steam/arma3
      • PORT=PORT_XXXX
    4. Initialisation des fichiers de configuration :
      • "epochserver.ini", où :
        vi ~/arma3/@epochhive/epochserver.ini
        où il faut changer les valeurs vers les bonnes données : BattlEyePath (le repertoire vers le programme Battleye : /home/steam/arma3/battleye), [EpochServer] IP (qui semble-t-il doit avoir l'adresse du serveur, plutot que celle en 127.0.0.1, [EpochServer] Port = PORT_XXXX, [EpochServer] Password (passwordAdmin du config.cfg), [Redis] Password = REDIS_PASS
      • "config.cfg" :
        vi ~/arma3/sc/config.cfg
        dans lequel il faut changer : hostname, password (celui qui sert à se connecter pour les joueurs, si nécessaire), passwordAdmin (celui qui sert aussi à RCON, epochserver.ini et beconfig.cfg), serverCommandPassword (pour les lignes de commandes), motd, maxPlayers, la class mission (pour changer la mission, attention aux différents mods nécessaire pour que ca tourne)
      • "epochah.hpp" :
        vi ~/arma3/@epochhive/epochah.hpp
        Pas encore trouver quoi modifier...
      • "beconfig.cfg" :
        vi ~/arma3/sc/battleye/beconfig.cfg
        Modifier RConPassword en mettant celui qui a été mis dans les autres fichiers
  6. Mise en service de la base de données "Redis" :
    1. Configuration :
      sudo vi /etc/redis/redis.conf
      Où il faudra réaliser les opérations suivantes :
      1. Rechercher la ligne avec requirepass, decommenter
      2. Mettre un bô password (REDIS_PASS) à la place du pas bon
      3. Sauvegarder le tout commande ":wq" dans "vi"
    2. Demarrage de la base de données "Redis" :
      sudo service redis-server start
      Pour l’arrêter, suffit de faire la même commande, mais en mettant "stop" à la place de "start". Le bon fonctionnement du serveur "redis" doit pouvoir se voir dans le fichier localisé à cette endroit : /var/log/redis/redis-server.log. S'il y a des messages d'erreurs dans le fichier de log, il faut trouver une reponse sur internet...
  7. Demarrage du serveur ArmA 3 Epoch - Serveur 0.3.1.0 - Client 0.3.1.0 :
    ~/arma3/epoch_linux_startscript.sh start