Mettre en place un serveur Multijoueur
Installation Basique
Serveur Ad-hoc
Si vous cherchez une expérience multijoueur temporaire il est possible d'ouvrir un monde en mode solo et de cliquer sur "Ouvrir au LAN" dans le menu des options. Cela permettra aux joueurs sur le même réseau local de vous rejoindre. Si vous souhaitez ouvrir votre partie à des joueurs au-delà de votre connexion locale, vous pouvez aussi cliquer sur "Ouvrir à internet", ce qui tentera d'établir une connexion externe pour rejoindre votre serveur depuis internet. Cela est possible par une technique appelée UPnP et doit être activé sur votre box internet, l'UPnP est souvent activé par défaut sur la plupart des fournisseurs d'accès. Si vous avez des soucis avec l'UPnP, vous devrez directement effectuer une "Redirection de ports" depuis votre box. Vous devrez rediriger le port TCP 42420 afin de permettre l'accès extérieur. (Vous pouvez trouver des renseignements supplémentaires en recherchant "Redirection de ports" avec le modèle de votre box internet)
Pour que ce serveur fonctionne, une partie solo doit être lancée en continu sur l'ordinateur d'un des joueurs.
Serveur Dédié
Vous pouvez télécharger le logiciel de serveur dédié au même endroit que l'installateur du jeu que vous pouvez lancer sans avoir à vous connecter pour que celui-ci tourne. Il existe différentes manières d'installer et de lancer un serveur dédié.
Hôtes payants
Certains hébergeurs peuvent offrir des offres payantes de serveurs dédiés. L'hébergement de serveurs Vintage Story est offert par les développeurs du jeu, PingPerfect, Citadel Server, Creeperhost, Akliz ainsi que GPortal, Host Havoc.
Serveurs dédiés sur Windows
- Ouvrez le dossier contenant le jeu (
%appdata%/VintageStory
par défaut) - Lancez
VintagestoryServer.exe
. - Vous pouvez configurer une redirection des ports de votre routeur internet si vous voulez que votre serveur soit accessible au-delà de votre réseau local.
Serveurs dédiés sur Linux
Comment mettre en place un serveur dédié en tant que service sur les systèmes Linux.
Prérequis pour CentOS 7 (RHEL, Fedora, ...)
1. Installer EPEL/screen/wget/curl
yum -y install epel-release screen wget curl
2. Installer Mono
yum -y install yum-utils rpm --import "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF" yum-config-manager --add-repo http://download.mono-project.com/repo/centos/ yum -y install mono mono-devel
Prérequis pour Ubuntu (Debian, Mint, ...)
1. Installer screen/wget/curl
sudo apt install -y screen wget curl
2. Installer Mono
Depuis Vintage Story version 1.12.7 et au-delà il est recommandé d'utiliser Mono version 5 ou plus récent.
Ce tutoriel est écrit en assumant que vous êtes sur Ubuntu 18.04 comme système de base.
Pour installer la dernière version stable de Mono pour votre distribution, veuillez suivre les instructions sur la Page Officielle d'Installation du Projet Mono (EN).
sudo apt install gnupg ca-certificates sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF echo "deb https://download.mono-project.com/repo/ubuntu stable-bionic main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list sudo apt update sudo apt install -y mono-complete
3. Télécharger le jeu
Conseil : Créez un dossier différent pour Vintage Story étant donné que le tar.gz ne contient pas de sous-dossier.
mkdir server && cd server
Allez sur http://account.vintagestory.at/downloads
Copiez le lien du dernier paquet "vs_server_*.*.*.tar.gz" (Tar.gz Archive/Linux (server only) dans la partie Show other available downloads of Vintage Story)
Téléchargez avec "wget" depuis la console (Vintage Story version 1.12.9 dans cet exemple).
wget https://cdn.vintagestory.at/gamefiles/stable/vs_server_1.12.9.tar.gz
4. Extraire le paquet tar.gz
tar xzf vs_server_*.*.*.tar.gz
5. Faire de server.sh un script exécutable
chmod +x server.sh
6. Éditer le fichier server.sh
Pour des raisons de sécurité, vous ne devriez pas lancer votre serveur en tant que root, le nom d'utilisateur par défaut sera défini sur "vintagestory". Sur la plupart des systèmes d'exploitations Linux, vous pouvez créer un nouvel utilisateur avec la commande "adduser".
adduser vintagestory
Puis changez ces options par rapport à vos besoins :
USERNAME='<le-nom-d'utilisateur-pour-votre-serveur-VS>' VSPATH='<le-chemin-du-dossier-du-jeu>'
7. Ouvrir les ports sur votre Pare-Feu (si nécessaire)
firewalld
firewall-cmd --permanent --zone=public --add-port=42420/tcp firewall-cmd --reload
iptables
iptables -A INPUT -p tcp -m tcp --dport 42420 -j ACCEPT
8. Lancement du serveur et premiers pas
./server.sh start Attendez la fin du démarrage puis donnez vous les droits administrateurs (OP) avec : ./server.sh command "/op <votre_nom_d'utilisateur>"
9. Connectez vous à votre IP/Domaine et amusez-vous !
Prérequis pour Alpine (Avancé, sans support)
1. Installez Mono
Mono étant encore instable sur Alpine, l'adresse de test (http://dl-cdn.alpinelinux.org/alpine/edge/testing) devra être retirée des commentaires.
/etc/apk/repositories
Et maintenant lancez :
apk update apk add mono mono-dev
2. Installer tmux
apk add tmux
3. Les Certificats
apk add ca-certificates
enfin lancez :
cert-sync /etc/ssl/certs/ca-certificates.crt
pour mettre à jour les certifications.
4. Script de démarrage simplifié
Téléchargez et extrayez le serveur dans un dossier puis écrivez ceci dans un script :
#!/bin/ash mono VintagestoryServer.exe --dataPath ./data
Ce script ne fera que lancer le serveur et mettre les fichiers de sauvegardes du monde dans le même dossier que là où le serveur a pu être extrait. En tant qu'utilisateur avancé, vous n'avez pas besoin de regarder pour les dépendances, vérifier les mises à jours de versions ou installer le serveur et les fichiers de sauvegardes à différents endroits et utilisateurs.
Lancez le script dans une session tmux.
Le reste des conseils s'appliquent ici aussi (Pare-feu, redirection des ports, etc.).
Mettre à jour le serveur
Si vous souhaitez installer une version plus récente, retirez tous les fichiers de l'ancienne installation. Si vous avez choisi de mettre vos données de jeu dans le dossier d'installation, faites attention à ne pas le supprimer ou vous pourriez perdre vos sauvegardes, configurations et données de joueur. Téléchargez le dernier fichier "Tar.gz Archive/Linux (server only)" et extrayez-le. Si vous ne possédez qu'une connexion FTP à votre serveur distant, vous devrez extraire localement le serveur et transférer chaque fichier un par un.
Configuration Basique
Une fois votre serveur lancé, vous pourriez chercher à modifier certaines options de configuration. Vous pouvez configurer votre serveur pendant son fonctionnement à travers des commandes ou lorsque le serveur est arrêté en éditant le fichier "serverconfig.json". Sur Windows, le fichier se trouve par défaut à %appdata%/VintageStoryData/serverconfig.json. Sur Linux, le fichier se trouve à ./data/serverconfig.json du dossier de votre serveur (par exemple : /home/vintagestory/server/data/serverconfig.json si installé de la même manière qu'ici).
Remarque :
La manière la plus facile de configurer les paramètres de votre monde est de le créer en mode solo en utilisant les options avancées de création de monde, pour ensuite envoyer ses fichiers pour l'utiliser en tant que monde de serveur. |
Des explications sur les données de "serverconfig.json" peuvent être trouvées ici : Configuration Serveur
Voici quelques configurations par commandes que vous souhaiteriez typiquement mettre.
/serverconfig upnp [0|1]
Si paramétré sur 1, le serveur de jeu tentera de rediriger les ports à votre place./serverconfig name Serveur PvE Pacifique
Paramètre le nom du serveur visible sur la liste des serveurs publics./serverconfig description Ceci est un serveur de survie médiévale, PvE uniquement, bienvenue à tous ! <3
Paramètre la description du serveur visible sur la liste des serveurs publics./serverconfig motd Salut {playername} ! N'oublie pas de suivre les règles du serveur !
Le message de bienvenue quand un joueur rejoint le serveur./serverconfig password azerty
Permet d'empêcher l'accès au serveur par un mot de passe. Utilisez/serverconfig nopassword
pour de nouveau donner l'accès public./serverconfig advertise (1|0)
Permet d'afficher ou non le serveur sur la liste des serveurs publics.
Pour terminer, vous pouvez de la même manière configurer un serveur créé avec "Ouvrir au LAN", attention cependant, certaines configurations seront directement remises par défaut, par exemple l'emplacement des fichiers de sauvegarde.
Acquérir les droits administrateurs
Si vous avez accès à la console du serveur, tapez directement /op nom_du_joueur
. Sinon, ouvrez le "serverconfig.json" et remplacez :
"StartupCommands": null,
avec :
"StartupCommands": "/op nom_du_joueur",
Dans les deux cas, vous devez remplacer nom_du_joueur
avec votre véritable nom de joueur.
Serveur dédié avancé
Debian avec systemd et rsyslog
Si vous préférez utiliser systemd au lieu de screen pour faire fonctionner votre serveur VS, vous pouvez suivre ces instructions.
Nous allons également configurer rsyslog pour séparer tous les journaux d'états dans des fichiers distincts.
Installation
1. Installation de mono Debian 9
sudo apt install apt-transport-https dirmngr gnupg ca-certificates wget nano sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF echo "deb https://download.mono-project.com/repo/debian stable-stretch main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list sudo apt update sudo apt install mono-devel
Pour les systèmes Debian 10 utilisez ceci :
echo "deb https://download.mono-project.com/repo/debian stable-buster main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
2. Créer un utilisateur
adduser --shell /bin/bash --disabled-password gameserver
3. Créer les dossiers
mkdir -p /srv/gameserver/vintagestory mkdir -p /srv/gameserver/data/vs mkdir -p /usr/lib/systemd/system
3. Télécharger le jeu
cd /srv/gameserver/vintagestory
Allez sur http://account.vintagestory.at/downloads
Copiez le lien du dernier paquet "vs_server_*.*.*.tar.gz" (Tar.gz Archive/Linux (server only) dans la partie Show other available downloads of Vintage Story)
Téléchargez avec "wget" depuis la console (Vintage Story version 1.12.9 dans cet exemple).
wget https://cdn.vintagestory.at/gamefiles/stable/vs_server_1.12.9.tar.gz
4. Extraire le paquet tar.gz
tar xzf vs_server_1.12.9.tar.gz
5. Changer les paramètres d'accès
Vous devez définir les droits d'accès du répertoire de votre serveur de jeux pour éviter les erreurs d'autorisations.
chown -R gameserver:gameserver /srv/gameserver
6. Créer le fichier de service systemd
Utilisez votre logiciel de modification de fichier préféré pour créer un fichier de service (dans cet exemple nano).
nano /usr/lib/systemd/system/vintagestoryserver.service
Insérez le contenu suivant :
[Unit] Description=Unite Serveur Vintage Story After=network.target [Service] WorkingDirectory=/srv/gameserver/vintagestory ExecStart=/usr/bin/mono VintagestoryServer.exe --dataPath /srv/gameserver/data/vs Restart=always RestartSec=30 StandardOutput=syslog StandardError=syslog SyslogIdentifier=VSSRV User=gameserver Group=gameserver [Install] WantedBy=multi-user.target
7. Créer un fichier de configuration pour rsyslog
Utilisez votre logiciel de modification de fichier préféré pour créer un fichier de service (dans cet exemple nano).
nano /etc/rsyslog.d/vintagestoryserver.conf
Insérez le contenu suivant :
if $programname == 'VSSRV' then { if($msg contains "Chat") then { action(type="omfile" dirCreateMode="0755" FileCreateMode="0644" File="/var/log/vintagestory-server/chat.log") } else if($msg contains "verließ") then { action(type="omfile" dirCreateMode="0755" FileCreateMode="0644" File="/var/log/vintagestory-server/login.log") } else if($msg contains "join") then { action(type="omfile" dirCreateMode="0755" FileCreateMode="0644" File="/var/log/vintagestory-server/login.log") } else if($msg contains "Server Warning") then { action(type="omfile" dirCreateMode="0755" FileCreateMode="0644" File="/var/log/vintagestory-server/warn.log") } else if($msg contains "Server Notification") then { action(type="omfile" dirCreateMode="0755" FileCreateMode="0644" File="/var/log/vintagestory-server/info.log") } else if($msg contains "Server Debug") then { action(type="omfile" dirCreateMode="0755" FileCreateMode="0644" File="/var/log/vintagestory-server/debug.log") } else if($msg contains "Server Event") then { action(type="omfile" dirCreateMode="0755" FileCreateMode="0644" File="/var/log/vintagestory-server/event.log") } else { action(type="omfile" dirCreateMode="0755" FileCreateMode="0644" File="/var/log/vintagestory-server/other.log") } } # Discard if $programname == 'VSSRV' then ~
8. Redémarrer rsyslog / activer le service Pour activer rsyslog et votre serveur vintagestory, tapez les commandes suivantes :
systemctl restart rsyslog.service; systemctl enable vintagestoryserver.service systemctl start vintagestoryserver.service
Arrêter, Démarrer, Désactiver le Serveur
Pour arrêter manuellement votre serveur VS, utilisez la commande suivante :
systemctl stop vintagestoryserver.service
Pour redémarrer manuellement votre serveur VS, tapez :
systemctl start vintagestoryserver.service
Pour désactiver le service, utilisez :
systemctl disable vintagestoryserver.service
Configuration
Pour modifier la configuration de votre serveur, arrêtez-le et modifiez le fichier suivant :
nano /srv/gameserver/data/vs/serverconfig.json
Après avoir enregistré vos modifications, redémarrez le serveur.
Redémarrage programmé
Si vous souhaitez que votre serveur redémarre tous les jours, vous pouvez créer un cronjob de la manière suivante :
crontab -e
Insérez cette ligne pour arrêter le serveur à 04h30 :
30 4 * * * systemctl stop vintagestoryserver.service
Vous pouvez maintenant exécuter des tâches de sauvegarde et les relancer avec la ligne suivante à 04:32 (si vous exécutez une sauvegarde, planifiez un peu plus de temps) :
32 4 * * * systemctl start vintagestoryserver
Si vous souhaitez simplement redémarrer le serveur, utilisez plutôt cette ligne :
30 4 * * * systemctl restart vintagestoryserver.service
Journalisation
La configuration de rsyslog divise les journaux du serveur en fichiers distincts que vous pouvez consulter avec la commande "tail".
Pour les connexions et déconnexions :
tail -f /var/log/vintagestory-server/login.log
Pour tous les messages de chat :
tail -f /var/log/vintagestory-server/chat.log
Pour tous les messages contenant [Server Warning] :
tail -f /var/log/vintagestory-server/warn.log
Pour tous les messages contenant [Server Notification] :
tail -f /var/log/vintagestory-server/info.log
Pour tous les messages contenant [Server Debug] :
tail -f /var/log/vintagestory-server/debug.log
Pour tous les messages contenant [Server Event] :
tail -f /var/log/vintagestory-server/event.log
Pour tous les autres messages :
tail -f /var/log/vintagestory-server/other.log
Instances multiples de serveurs
Si vous souhaitez utiliser plusieurs instances sur la même machine, il vous suffit de refaire certaines des étapes ci-dessus. Voici un exemple pour une deuxième instance :
mkdir -p /srv/gameserver/data/vs2 nano /usr/lib/systemd/system/vintagestoryserver2.service
Copiez le texte de l'étape 6 et modifiez ces lignes :
Description=Vintage Story Server 2 Unit ExecStart=/usr/bin/mono VintagestoryServer.exe --dataPath /srv/gameserver/data/vs2 SyslogIdentifier=VSSRV2
Créez un fichier rsyslog et copiez le code de l'étape 7 :
nano /etc/rsyslog.d/vintagestoryserver2.conf
Changez VSSRV
en VSSRV2
et /var/log/vintagestory-server
en /var/log/vintagestory-server2
Avant de procéder, faites une copie de votre première configuration de serveur et modifiez-la en fonction de vos besoins (n'oubliez pas de changer les ports !!!).
cp /srv/gameserver/data/vs/serverconfig.json /srv/gameserver/data/vs2/ nano /srv/gameserver/data/vs2/serverconfig.json
Démarrez maintenant le service :
systemctl restart rsyslog.service; systemctl enable vintagestoryserver2.service systemctl start vintagestoryserver2.service
Installez cronjob :
crontab -e
Terminez avec :
30 4 * * * systemctl restart vintagestoryserver2.service
Amusez-vous bien !
Advanced setup
Using an SRV Record to point a domain to your server
In some cases, you may not able to get a server with the default port (Multiple instances on the same server, paid hosts...), and you will have to add the port at the end of the server's address in order to connect to it.
But you might want to avoid the need to specify the port (Easier to remember, look cleaner).
There is a way to point a domain to your server and avoid the need to add the port : SRV Records
SRV Records allow you to point a domain/subdomain to your instance, while letting the game know the port to use.
How to set up an SRV Records will depend on your domain provider, and you should check on their documentation before making any changes. However, the idea and values remain the same for every provider.
Let's take a server with the following details :
- Address :
play.example.com
- Port :
50030
- Owned domain :
mydomain.com
- Desired subdomain :
vintagestory.mydomain.com
Your raw SRV Records should look something like this :
_vintagestory._tcp.vintagestory.mydomain.com. IN SRV 10 10 50030 server.example.com.
The underscores and trailing dots are important! Here are some details :
_vintagestory
define the service, in our case, Vintage Story_tcp
define the protocol, Vintage Story use TCPvintagestory.mydomain.com.
is the subdomain we want to use. The trailing dot is important!IN SRV
Define the record type, don't change this10 10
are in order the priority and the weight of our record, in our case those are not important, as you are probably not going to load balance a Vintage Story server50030
is the port our instance is listening onserver.example.com.
is the target, where the server is located. The trailing dot is mandatory as the target server is not on the same domain as us. If it was the case, you would only need to add the subdomain of the target without the trailing dot
If you wanted to have your record pointing to your domain directly, you would have mydomain.com.
instead of vintagestory.mydomain.com.
Here is how to do it for OVH and Hetzner (Don't forget to edit the values to suit your setup !) :
OVH
You will need to go to your DNS zone and add an entry, select the SRV Record type :
- Sub-domain :
_vintagestory._tcp.vintagestory
You don't need to add your domain, as their form do it for you. - TTL : No need to change this
- Priority :
10
- Weight :
10
- Port :
50030
- Target :
server.example.com.
Hetzner
You will need to create a record from their DNS Console :
- Type :
SRV
- Name :
_vintagestory._tcp.vintagestory.mydomain.com.
Click on the Value field to enter the details :
- Priority :
10
- Weight :
10
- Port :
50030
- Target :
server.example.com.
Wait a few minutes for your record to propagate and then try to use it to connect to the server, using vintagestory.mydomain.com
as the address.
You are now all set up to share your server with your custom domain.
Wiki Navigation | |
---|---|
Vintage Story | Guides • Foire aux questions (FAQ) • Vintage Story Original Soundtrack • Versions • Controls |
Systèmes de jeu | Artisanat • Taille de pierre • Modelage d'argile • Forge • Cuisine • Température • Faim • Minage • Stabilité temporelle • Puissance mécanique • Commerce • Agriculture • Élevage |
Le Monde | Création du monde • Biomes • Météo • Tempêtes temporelles |
Objets | Outils • Armes • Armure • Vêtements • Sacs • Matériau • Nourriture |
Blocs | Terrain • Plantes • Décoratifs • Éclairage • Fonctionnels • Minerai |
Créatures | Entités hostiles • Animaux • PNJs • Joueurs |
Miscellaneous | Liste des commandes client • Liste des commandes serveur • Creative Starter Guide • Bot System • How_to_use_WorldEdit • Caméra cinématique • Enregistrement de vidéos à taux variable • ServerBlockTicking |