Setting up a Multiplayer Server/fr: Difference between revisions
(Created page with "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 en éditant le fichier "serverconfig.json" et dans ce dernier cas devra se faire pendant l'arrêt du serveur. Sur Windows, le fichier se trouve par défaut à '''%appdata%/VintageStoryData/serverconfig.json'''. Sur Linux, le fichier se trouve à '''./data/serverconfig.json''' du d...") Tags: Mobile edit Mobile web edit |
(Created page with "{{Protip |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 enfin l'envoyer pour l'utiliser en tant que monde de serveur. }}") Tags: Mobile edit Mobile web edit |
||
Line 157: | Line 157: | ||
{{Protip | {{Protip | ||
| | |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 enfin l'envoyer pour l'utiliser en tant que monde de serveur. | ||
}} | }} | ||
Revision as of 02:34, 16 July 2023
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 sont offerts 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é 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 en éditant le fichier "serverconfig.json" et dans ce dernier cas devra se faire pendant l'arrêt du serveur. 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 enfin l'envoyer pour l'utiliser en tant que monde de serveur. |
Explanation of values in serverconfig.json you can find here: Server Config
Here are some of the configurations set by commands, that you'd typically want to set.
/serverconfig upnp [0|1]
If set to one, the game server will attempt to set up port forwarding for you/serverconfig name Peaceful PvE Server
Set up the server name, visible in the public server listing/serverconfig description This is a medieval survival server, PvE only, everyone welcome! <3
Set up the servers description, visible in the public server listing/serverconfig motd Hi {playername}! Please remember to follow the rules!
The message shown to players when they join/serverconfig password asdaf
Require a password for players to log in, if desired. Use/serverconfig nopassword
to remove again./serverconfig advertise (1|0)
Whether or not add this server to the public server listing
Lastly, you can configure a server that was created with the 'Open to Lan' method in the same way as you do for dedicated ones, be aware though, in that case a few of the configurations are overridden by the client, such as the save file location.
Acquiring server admin rights
If you have access to the server console, type /op playername
. If not, open up the serverconfig.json and replace
"StartupCommands": null,
with
"StartupCommands": "/op playername",
In both instances you should replace playername
with your actual player name.
Advanced Dedicated Server
Debian with systemd service and rsyslog
If you prefer using systemd instead of screen to run your VS Server, you can follow these Instructions.
We also will setup rsyslog to split all logs into separate files.
Installation
1. mono Install 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
For Debian 10 use
echo "deb https://download.mono-project.com/repo/debian stable-buster main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
2. create a user
adduser --shell /bin/bash --disabled-password gameserver
3. create directories
mkdir -p /srv/gameserver/vintagestory mkdir -p /srv/gameserver/data/vs mkdir -p /usr/lib/systemd/system
3. Download the game
cd /srv/gameserver/vintagestory
Goto http://account.vintagestory.at/downloads
Copy the link of the newest "vs_server_*.*.*.tar.gz" package (Tar.gz Archive/Linux (server only) under Show other available downloads of Vintage Story)
Download with "wget" via console (Vintage Story version 1.12.9 in this example).
wget https://cdn.vintagestory.at/gamefiles/stable/vs_server_1.12.9.tar.gz
4. Extract tar.gz package
tar xzf vs_server_1.12.9.tar.gz
5. Change owner
You have to set the owner of your gameserver directory to avoid write permission errors
chown -R gameserver:gameserver /srv/gameserver
6. Create systemd service unit file
Use your favourite tool to create a service unit file (this example uses nano)
nano /usr/lib/systemd/system/vintagestoryserver.service
Insert the following content
[Unit] Description=Vintage Story Server Unit 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. Create config file for rsyslog
Use your favourite tool to create a rsyslog config file (this example uses nano)
nano /etc/rsyslog.d/vintagestoryserver.conf
Insert the following content
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. restart rsyslog / enable service To activate rsyslog and your vintagestory server type these commands
systemctl restart rsyslog.service; systemctl enable vintagestoryserver.service systemctl start vintagestoryserver.service
Stop, Start, Disable Server
To manually stop your VS Server use this command
systemctl stop vintagestoryserver.service
To manually start your VS Server again type
systemctl start vintagestoryserver.service
To disable the service use
systemctl disable vintagestoryserver.service
Config
to change your servers configuration, stop the server and edit
nano /srv/gameserver/data/vs/serverconfig.json
After you saved your changes, start server again.
Restart schedule
If you want your server to restart every day, you can setup a cronjob for this
crontab -e
insert this line to stop the server at 04:30
30 4 * * * systemctl stop vintagestoryserver.service
you could now ececute backup tasks and then start it again with the next line at 04:32 (if you run a backup task plan some more time here)
32 4 * * * systemctl start vintagestoryserver
If you just want to restart the server this line instead of the other two should be fine
30 4 * * * systemctl restart vintagestoryserver.service
Logging
The rsyslog config splits the output logs into seperate files that you can watch with tail command
For Login/Logout see
tail -f /var/log/vintagestory-server/login.log
For all chat messages see
tail -f /var/log/vintagestory-server/chat.log
For all messages containing [Server Warning] see
tail -f /var/log/vintagestory-server/warn.log
For all messages containing [Server Notification] see
tail -f /var/log/vintagestory-server/info.log
For all messages containing [Server Debug] see
tail -f /var/log/vintagestory-server/debug.log
For all messages containing [Server Event] see
tail -f /var/log/vintagestory-server/event.log
For all other messages see
tail -f /var/log/vintagestory-server/other.log
Multiple Server Instances
If you want to run multiple instances on the same machine you just have to redo some of the steps above. This is just an example for a second instance:
mkdir -p /srv/gameserver/data/vs2 nano /usr/lib/systemd/system/vintagestoryserver2.service
Copy from step 6 and change these lines:
Description=Vintage Story Server 2 Unit ExecStart=/usr/bin/mono VintagestoryServer.exe --dataPath /srv/gameserver/data/vs2 SyslogIdentifier=VSSRV2
Create rsyslog file and copy code from step 7
nano /etc/rsyslog.d/vintagestoryserver2.conf
Change VSSRV
to VSSRV2
and /var/log/vintagestory-server
to /var/log/vintagestory-server2
Before you proceed make a copy of your first server configuration and edit it for your needs (change port!!!)
cp /srv/gameserver/data/vs/serverconfig.json /srv/gameserver/data/vs2/ nano /srv/gameserver/data/vs2/serverconfig.json
Now start the service
systemctl restart rsyslog.service; systemctl enable vintagestoryserver2.service systemctl start vintagestoryserver2.service
Install cronjob
crontab -e
Insert
30 4 * * * systemctl restart vintagestoryserver2.service
Have Fun!