Jump to content
  • Welcome to NGBC Community

    Register now to gain access to all of our features.
    Once registered and logged in, you will be able to create topics, post replies to existing threads, give reputation to your fellow members, get your own private messenger, create your own club and invite your friends, manage your profile and so much more.

    Even if it is not mandatory, once registered, please to  create a thread to introduce yourself and don't be shy, participate to the website.

    This message will be removed once you have signed in.

    IMPORTANT : If you had an account on our old website,  click on "Existing user ? sign in" and on "Forgot your password" - you will receive an email to recreate your password for the old account. Once you recover your acocunt think to update your informations.

  • Monter/Créer et configurer un serveur Arma3 sous linux


    Soldat Ryan
     Share

    Monter et configurer un serveur Arma3 sous Linux

    Nous allons voir ici comment monter un serveur Arma3 sous linux.
    Ce tuto a été réalisé sur un serveur Linux (Debian/Wheezy 64bits)

    Pour obtenir une aide sur les serveurs "windows" vous pouvez utiliser le lien du forum indiqué en bas du tuto

    Prérequis :

    - Vous connaissez les bases de l'administration d'un serveur dédié, savoir s'y connecter à l'aide de Putty, etc ...

    Pour les besoins du tutoriel sachez qu'on se connectera avec un compte appelé "user" avec pour répertoire de base : "home/user/"
    A vous d'appeler votre "user" comme vous l'entendez et de placer son répertoire d'utilisation où vous voulez.

    Tutoriel

    - La première des choses à faire est d'avoir un serveur toujours à jour?
    Avec votre "ROOT" utilisez les commandes suivantes :

    aptitude update
    aptitude safe-upgrade

    - Ensuite installez les lib32 nécessaire au bon fonctionnement de votre application (uniquement à faire si vous tournez avec un OS en 64bit)

    aptitude install ia32-libs

    Voilà nous avons un serveur à jour.
     

    Installation de Steam

    A partir de maintenant on utilise "user" à partir de son répertoire "home/user/". On ne travaille plus sous "ROOT".

    Arma3 s'installe à partir de Steam il faut donc l'installer.

    On créer le repertoire "steamcmd" pour y installer steam et on lance le programme steamcmd :

    mkdir steamcmd
    cd steamcmd
    wget http://media.steampowered.com/client/steamcmd_linux.tar.gz
    tar -xvzf steamcmd_linux.tar.gz
    ./steamcmd.sh

    Ensuite on charge les fichiers serveurs depuis steam, pour cela il faut se logger avec un compte steam.
    Notez qu'un code vous sera demandé lors de votre login si vous avez activer SteamGuard.
    On va ensuite installer les fichiers du serveur sur le repertoire /home/user/serveur/arma

    login <user steam> <mot de passe steam>
    force_install_dir /home/user/serveur/arma
    app_update 233780 validate
    quit

    Vous devez maintenant créer les répertoires dédiés aux profils.

    mkdir -p ~/".local/share/Arma 3" && mkdir -p ~/".local/share/Arma 3 - Other Profiles"

    Attention : le paramètre "-profiles=" est cassé sous Linux - Vous devez donc impérativement placer vos profils dans ces répertoires. Sachez également que ces répertoires ne se créent pas automatiquement.

    Lors du premier lancement de votre serveur les fichiers de profil se créeront automatiquement à cette place. Vous pourrez alors les éditer et adapter les réglages concernant les difficultés.
     

    Configuration de votre serveur Arma3

    On se place à la racine du serveur.

    cd /home/user/serveur/arma

    On créé le fichier "server.cfg"

    nano server.cfg

    Voici un exemple de server.cfg tiré du WIKI de BI

    Révélation

    //
    // server.cfg
    //
    // comments are written with "//" in front of them.
     
     
    // GLOBAL SETTINGS
    hostname = "Fun and Test Server";        // The name of the server that shall be displayed in the public server list
    password = "";                    // Password for joining, eg connecting to the server
    passwordAdmin = "xyz";                // Password to become server admin. When you're in Arma MP and connected to the server, type '#login xyz'
    serverCommandPassword = "xyzxyz";               // Password required by alternate syntax of [[serverCommand]] server-side scripting.
     
    logFile = "server_console.log";            // Tells ArmA-server where the logfile should go and what it should be called
     
     
    // WELCOME MESSAGE ("message of the day")
    // It can be several lines, separated by comma
    // Empty messages "" will not be displayed at all but are only for increasing the interval
    motd[] = {
        "", "",  
        "Two empty lines above for increasing interval",
        "Welcome to our server",
        "", "",  
        "We are looking for fun - Join us Now !",
        "http://www.example.com",
        "One more empty line below for increasing interval",
        ""
    };
    motdInterval = 5;                // Time interval (in seconds) between each message
     
     
    // JOINING RULES
    maxPlayers = 64;                // Maximum amount of players. Civilians and watchers, beholder, bystanders and so on also count as player.
    kickDuplicate = 1;                // Each ArmA version has its own ID. If kickDuplicate is set to 1, a player will be kicked when he joins a server where another player with the same ID is playing.
    verifySignatures = 2;                // Verifies .pbos against .bisign files. Valid values 0 (disabled), 1 (prefer v2 sigs but accept v1 too) and 2 (only v2 sigs are allowed).
    allowedFilePatching = 0;                        // Allow or prevent client using -filePatching to join the server. 0, is disallow, 1 is allow HC, 2 is allow all clients (since Arma 3 1.49+)
    //requiredBuild = 12345                // Require clients joining to have at least build 12345 of game, preventing obsolete clients to connect
     
     
    // VOTING
    voteMissionPlayers = 1;                // Tells the server how many people must connect so that it displays the mission selection screen.
    voteThreshold = 0.33;                // 33% or more players need to vote for something, for example an admin or a new map, to become effective
     
     
    // INGAME SETTINGS
    disableVoN = 1;                    // If set to 1, Voice over Net will not be available
    vonCodecQuality = 0;                // since 1.62.95417 supports range 1-20 //since 1.63.x will supports range 1-30 //8kHz is 0-10, 16kHz is 11-20, 32kHz is 21-30
    persistent = 1;                    // If 1, missions still run on even after the last player disconnected.
    timeStampFormat = "short";            // Set the timestamp format used on each report line in server-side RPT file. Possible values are "none" (default),"short","full".
    BattlEye = 1;                    // Server to use BattlEye system
    allowedLoadFileExtensions[] = {"hpp","sqs","sqf","fsm","cpp","paa","txt","xml","inc","ext","sqm","ods","fxy","lip","csv","kb","bik","bikb","html","htm","biedi"}; //only allow files with those extensions to be loaded via loadFile command (since Arma 3 build 1.19.124216)
    allowedPreprocessFileExtensions[] = {"hpp","sqs","sqf","fsm","cpp","paa","txt","xml","inc","ext","sqm","ods","fxy","lip","csv","kb","bik","bikb","html","htm","biedi"}; //only allow files with those extensions to be loaded via preprocessFile/preprocessFileLineNumber commands (since Arma 3 build 1.19.124323)
    allowedHTMLLoadExtensions[] = {"htm","html","xml","txt"}; //only allow files with those extensions to be loaded via HTMLLoad command (since Arma 3 build 1.27.126715)
    //allowedHTMLLoadURIs = {}; // Leave commented to let missions/campaigns/addons decide what URIs are supported. Uncomment to define server-level restrictions for URIs
     
     
    // SCRIPTING ISSUES
    onUserConnected = "";                //
    onUserDisconnected = "";            //
    doubleIdDetected = "";                //
    //regularCheck = "{}";                //  Server checks files from time to time by hashing them and comparing the hash to the hash values of the clients. //deprecated
     
    // SIGNATURE VERIFICATION
    onUnsignedData = "kick (_this select 0)";    // unsigned data detected
    onHackedData = "ban (_this select 0)";        // tampering of the signature detected
    onDifferentData = "";                // data with a valid signature, but different version than the one present on server detected
     
     
    // MISSIONS CYCLE (see below)

    /*class Missions
    {
    class Mission1
    {
    template="co_xx_mymission.stratis";
    difficulty="Regular";
    };
    };
    */

    MissionWhitelist[] = {}; //an empty whitelist means there is no restriction on what missions' available

    Ce fichier se lance via le paramètre "-config=" Vous devez l'adapter en fonction de vos besoins.

    On crée ensuite le fichier "basic.cfg"

    nano basic.cfg

    Voici un exemple de basic.cfg tiré du WIKI de BI

    Révélation
    
    // These options are created by default
    language="English";
    adapter=-1;
    3D_Performance=1.000000;
    Resolution_W=800;
    Resolution_H=600;
    Resolution_Bpp=32;
    
    // These options are important for performance tuning
    
    MinBandwidth = 131072;			// Bandwidth the server is guaranteed to have (in bps). This value helps server to estimate bandwidth available. Increasing it to too optimistic values can increase lag and CPU load, as too many messages will be sent but discarded. Default: 131072
    MaxBandwidth = 10000000000;		// Bandwidth the server is guaranteed to never have. This value helps the server to estimate bandwidth available.
    
    MaxMsgSend = 128;			// Maximum number of messages that can be sent in one simulation cycle. Increasing this value can decrease lag on high upload bandwidth servers. Default: 128
    MaxSizeGuaranteed = 512;		// Maximum size of guaranteed packet in bytes (without headers). Small messages are packed to larger frames. Guaranteed messages are used for non-repetitive events like shooting. Default: 512
    MaxSizeNonguaranteed = 256;		// Maximum size of non-guaranteed packet in bytes (without headers). Non-guaranteed messages are used for repetitive updates like soldier or vehicle position. Increasing this value may improve bandwidth requirement, but it may increase lag. Default: 256
    
    MinErrorToSend = 0.001;			// Minimal error to send updates across network. Using a smaller value can make units observed by binoculars or sniper rifle to move smoother. Default: 0.001
    MinErrorToSendNear = 0.01;		// Minimal error to send updates across network for near units. Using larger value can reduce traffic sent for near units. Used to control client to server traffic as well. Default: 0.01
    
    MaxCustomFileSize = 0;			// (bytes) Users with custom face or custom sound larger than this size are kicked when trying to connect.

    Ce fichier se lance via le paramètre "-cfg="
    Ce fichier de configuration, vous permet de configurer votre connectivité serveur, pour optimiser les performances. Les règlages dependent des capacités de votre machine.

    Vous pouvez à présent lancer une première instance de votre serveur Arma3. Cela permettra de créer les fichiers de profil manquant qui doivent se créer dans le repertoire ".local/share/Arma 3 - Other Profiles"

    Le profil se crée via le paramètre "-name=". On va prendre "server" comme nom de profil.

    Votre ligne de commande va donc ressembler à cela :

    ./arma3server -port=2302 -config=server.cfg -cfg=basic.cfg -name=server 

    ./arma3server : Executable du serveur
    -port=2302 : Port d'ecoute de votre serveur
    -config=server.cfg : Votre fichier de configuration serveur
    -cfg=basic.cfg : Votre fichier d'optimisation du serveur
    -name=server : Nom du profil souhaité

    Vous pouvez couper votre serveur afin de terminer la configuration serveur

    ctrl+C

    On se deplace vers le profil nouvellement créé

    ~/".local/share/Arma 3 - Other Profiles/server"

    On peut alors modifier le fichier "server.Arma3Profile" afin de régler la difficulté du serveur.

    Révélation
    
    class CfgDifficultyPresets
    {
    	defaultPreset = "Regular";
    	myArmorCoef = 1.5;
    	groupArmorCoef = 1.5;
    	recoilCoef = 1;
    	visionAidCoef = 0.8;
    	divingLimitMultiplier = 1.0;
    	animSpeedCoef = 0;
    	cancelThreshold = 0;
    	showCadetHints = 1;
    	showCadetWP = 1;
    	class Recruit
    	{
    		displayName = "$STR_Difficulty0";
    		optionDescription = "$STR_Difficulty0_desc";
    		optionPicture = "\A3\Ui_f\data\Logos\arma3_white_ca.paa";
    		class Options
    		{
    			reducedDamage = 1;
    			groupIndicators = 2;
    			friendlyTags = 2;
    			enemyTags = 0;
    			detectedMines = 2;
    			commands = 2;
    			waypoints = 2;
    			weaponInfo = 2;
    			stanceIndicator = 2;
    			staminaBar = 1;
    			weaponCrosshair = 1;
    			visionAid = 1;
    			thirdPersonView = 1;
    			cameraShake = 1;
    			scoreTable = 1;
    			deathMessages = 1;
    			vonID = 1;
    			mapContent = 1;
    			autoReport = 1;
    			multipleSaves = 1;
    		};
    	};
    	class Regular
    	{
    		displayName = "$STR_Difficulty1";
    		optionDescription = "$STR_Difficulty1_desc";
    		optionPicture = "\A3\Ui_f\data\Logos\arma3_white_ca.paa";
    		class Options
    		{
    			reducedDamage = 0;
    			groupIndicators = 2;
    			friendlyTags = 2;
    			enemyTags = 0;
    			detectedMines = 2;
    			commands = 2;
    			waypoints = 2;
    			weaponInfo = 2;
    			stanceIndicator = 2;
    			staminaBar = 1;
    			weaponCrosshair = 1;
    			visionAid = 0;
    			thirdPersonView = 1;
    			cameraShake = 1;
    			scoreTable = 1;
    			deathMessages = 1;
    			vonID = 1;
    			mapContent = 1;
    			autoReport = 1;
    			multipleSaves = 1;
    		};
    	};
    	class Veteran
    	{
    		displayName = "$STR_Difficulty2";
    		optionDescription = "$STR_Difficulty2_desc";
    		optionPicture = "\A3\Ui_f\data\Logos\arma3_white_ca.paa";
    		class Options
    		{
    			reducedDamage = 0;
    			groupIndicators = 0;
    			friendlyTags = 0;
    			enemyTags = 0;
    			detectedMines = 0;
    			commands = 1;
    			waypoints = 1;
    			weaponInfo = 1;
    			stanceIndicator = 1;
    			staminaBar = 0;
    			weaponCrosshair = 0;
    			visionAid = 0;
    			thirdPersonView = 0;
    			cameraShake = 1;
    			scoreTable = 1;
    			deathMessages = 1;
    			vonID = 1;
    			mapContent = 0;
    			autoReport = 0;
    			multipleSaves = 0;
    		};
    	};
    	class Custom
    	{
    		displayName = "$STR_Difficulty_Custom";
    		optionDescription = "$STR_Difficulty_Custom_desc";
    		optionPicture = "\A3\Ui_f\data\Logos\arma3_white_ca.paa";
    		class Options
    		{
    			reducedDamage = 0;
    			groupIndicators = 0;
    			friendlyTags = 0;
    			enemyTags = 0;
    			detectedMines = 0;
    			commands = 0;
    			waypoints = 0;
    			weaponInfo = 1;
    			stanceIndicator = 0;
    			staminaBar = 0;
    			weaponCrosshair = 0;
    			visionAid = 0;
    			thirdPersonView = 0;
    			cameraShake = 0;
    			scoreTable = 0;
    			deathMessages = 0;
    			vonID = 0;
    			mapContent = 0;
    			autoReport = 0;
    			multipleSaves = 0;
    		};
    	};
    };

    Attention : Les paramètres de ce fichier ont changé depuis la version V1.58. Le fichier présenté correspond à la nouvelle version


    Configuration de Battleye

    A présent vous devez configurer Battleye qui est l'anti-cheat d'Arma3.
    Note de l'auteur : Il faut avoir fait des études supérieures pour pouvoir maitriser complétement Battleye. Nous verrons donc ici que les basiques.

    Deplacez vous dans le répertoire de battleye

    cd /home/user/serveur/arma/battleye

    Vous devez à présent créer un fichier "beserver.cfg"

    nano beserver

    Voici un exemple très simple de son contenu.

    Rconpassword  motdepasse
    RConPort xxxx
    RConIP xxx.xxx.xxx.xxx
    
    MaxPing 300

    Rconpassword = Le mot de passe Rcon défini dans le server.cfg
    Rconport = Port d'écoute de Battleye - c'est par ce port que passeront les commandes.
    RconIP = Défini l'IP du serveur
    Maxping = le ping maximum accepté par le serveur avant kick.

    Voici le détail des commandes disponibles de Battleye :

    loadScripts Charge le fichier "scripts.txt" sans qu'il y ai besoin de relancer le serveur.
    missions Renvoie à la liste des missions valides sur le serveur.
    players Affiche la liste des joueurs incluant leurs GUIDs et leurs pings.
    kick [player#] Kicks un joueur. Son # peut être tourvé dans la liste des joueurs via la commande "players" .
    RConPassword [password] Change le mot de passe RCon.
    MaxPing [ping] Changes la valeur MaxPing. si un joueur atteint et ou depasse cette valeur il est kické automatiquement.
    logout Delogge du mod admin, mais ne fait pas quitter le serveur.
    Exit Ferme la connection.
    Say [player#] Dire quelque chose au joueur #. -1 = tous les joueurs sur le serveur (ex: "Say -1 Hello World!")

    Notez que vous pouvez installer battleye dans un autre répertoire que celui d'origine, dans ce cas vous devrez utiliser le parametre suivant dans votre ligne de commande :

    -bepath=/chemin/vers/dossier/battleye


    Installation des missions

    Les missions se placent dans le repertoire suivant

    /home/serveur/arma/mpmissions


    Configuration de mod

    Pour installer un mod chargez le à la racine de votre jeu la forme suivante

    @nomdumode

    Attention : Sous linux le nom des mods est sensible à la casse. Tous les noms de fichier et de répertoire doivent être en minuscule.

    Pour lancer un mod utilisez le paramètre suivant :

    -mod=@nomdumode1\;@nomdumode2\;@nomdumode3

    Notez le \ entre le nomdumode et le ;
     

    Configuration de votre ligne de commande

    Voilà on commence à y voir plus clair.
    Il ne reste plus qu'à configurer la ligne de commande.
    Au cours de ce tuto on a déjà plusieurs paramètres : "-port" "-config" "-cfg" "-name" "-mod" "-bepath"
    Vous pouvez néanmoins peaufiner votre ligne de commande avec les paramètres suivants (il y en a d'autres je vous laisse le soin de vous documenter à ce sujet) :

    -netlog Active le log du trafic reseau du serveur.
    -nosplash Desactive les écrans de demarrage d'arma3. Pas besoin de ces ecrans sous notre serveur Linux
    -nosound Desactive les sons
    -world Monte la carte sur lequel doit evoluer le serveur (il est coutume de mettre -world=empty pour laisser le choix aux joueurs et ne pas limiter le serveur)
    -cpuCount Permet de defnir le nombre de coeur
    -autoinit Permet de lancer directement la mission au demarrage du serveur sans avoir à attnedre l'arriver d'un joueur.

    Rappel : le paramètre "-profiles" est inutile car sa fonction est cassé sur Linux
     

    Au sujet des logs

    1 - Le log du serveur qui vous aurez defini dans votre "server.cfg" se crée dans le repertoire ".local/share/Arma 3"
    Il est à noter que contrairement aux serveurs sous windows seul ce qui passe dans le canal "Global" du jeu est loggé. Tout ce qui passe par les autres canaux est invisible.

    2 - Pour obtenir le log technique du serveur en rapport avec la mission il faut ajouter ce qui suit à votre ligne de commande (en fin de ligne).

    >>rpt.2302.txt 2>&1

    Ce fichier se crée à la racine de votre serveur.
    Vous pouvez le nommer comme vous le voulez.
     

    Configuration des ports

    2302 UDP (port du jeu + VON)
    2303 UDP (STEAM query port)
    2304 UDP (STEAM master port)
    2305 UDP (port reservé au VON)
    Il faut donc ouvrir les ports 2303 à 2305 + le port dédié à Battleye (voir plus haut) qui doit être différent de ceux-ci

     

    Voilà vous êtes enfin prêt à lancer votre serveur Arma3 sous Linux.
    Bon jeu.

    Les commentaires au sujet de ce tutoriel sont à faire sur CE SUJET

     Share



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.