Désactiver le préchargeur
Tutoriels Linux Serveurs de jeux

Installer un serveur Sons of the Forest sur Linux (Ubuntu, Debian, AlmaLinux)

Documentation / Tutoriels Linux / Serveurs de jeux / Installer un serveur Sons of the Forest sur Linux (Ubuntu, Debian, AlmaLinux)
Mis à jour le 22/09/2026
16 vues
Avancé
45 minutes

Prérequis

  • Un serveur sous Ubuntu, Debian, AlmaLinux, Rocky, CentOS, Fedora ou openSUSE : voir nos VPS au Canada
  • Une connexion SSH ouverte en root : Se connecter en SSH à votre VPS
  • 8 Go de disque libre (le serveur pèse 3,2 Go)
  • 8 Go de RAM au minimum (le serveur en occupe 6,5 Go sans joueur, davantage avec)
  • Une adresse IPv4 publique : le serveur teste lui-même ses ports sur cette adresse au démarrage
Votre serveur :

Sons of the Forest n'existe qu'en serveur Windows. Ce guide le fait tourner sous Linux avec GE-Proton, la couche de compatibilité de Steam dans sa version communautaire, et un écran virtuel (le serveur en exige un) : un utilisateur dédié, SteamCMD, le serveur (3,2 Go), la bibliothèque Steam que Proton exige, Proton, la configuration (nom, mot de passe, propriétaires), le pare-feu (le serveur teste ses ports au démarrage), un service qui démarre avec la machine et arrête le serveur en sauvegardant, la connexion depuis le jeu et la mise à jour. Choisissez votre système ci-dessus. Copiez la commande avec le bouton Copier, collez-la dans votre terminal, et comparez avec le résultat attendu.

1Mettre à jour le système et installer les bibliothèques 32 bits

SteamCMD, l'outil de Valve qui télécharge les serveurs de jeux, est un programme 32 bits : il lui faut les bibliothèques 32 bits du système. On met d'abord le système à jour ; sans cela, l'installation 32 bits échoue sur AlmaLinux, Rocky, CentOS et Fedora (conflit avec une bibliothèque plus ancienne), et SteamCMD ne peut pas joindre Steam sur une Fedora fraîche (certificats absents).

Mettre à jour le système
apt update && apt upgrade -y
Résultat attendu
...
212 upgraded, 8 newly installed, 0 to remove and 4 not upgraded.
(les nombres dépendent de l'âge de l'image)
Mettre à jour le système
dnf upgrade -y
Résultat attendu
...
Complete!
Mettre à jour le système
dnf upgrade -y
Résultat attendu
...
Complete!
Mettre à jour le système
zypper -n refresh && zypper -n update
Résultat attendu
All repositories have been refreshed.
...
Installer les bibliothèques 32 bits et curl
dpkg --add-architecture i386 && apt update && apt install -y lib32gcc-s1 lib32stdc++6 curl
Installer les bibliothèques 32 bits
dnf install -y glibc.i686 libstdc++.i686
Installer les bibliothèques 32 bits
dnf install -y glibc.i686 libstdc++.i686
Installer les bibliothèques 32 bits
zypper -n install glibc-32bit libstdc++6-32bit

openSUSE Leap 16 livre son noyau avec l'exécution des programmes 32 bits désactivée : sans cette étape, SteamCMD répond « Exec format error ». On l'active dans GRUB et on redémarre (reconnectez-vous en SSH après une minute).

Activer les programmes 32 bits dans le noyau, puis redémarrer
sed -i 's/^GRUB_CMDLINE_LINUX_DEFAULT="/GRUB_CMDLINE_LINUX_DEFAULT="ia32_emulation=1 /' /etc/default/grub && grub2-mkconfig -o /boot/grub2/grub.cfg && reboot
Après le redémarrage : vérifier que l'option est active
grep -o ia32_emulation=1 /proc/cmdline
Résultat attendu
ia32_emulation=1

Proton a besoin de la bibliothèque Vulkan du système, même sans carte graphique : sans elle, il s'arrête sur « libvulkan.so.1: cannot open shared object file ». Le serveur, lui, exige un écran X même sans rien afficher : Xvfb est cet écran virtuel.

Installer la bibliothèque Vulkan et Xvfb
apt install -y libvulkan1 xvfb
Installer la bibliothèque Vulkan et Xvfb
dnf install -y vulkan-loader xorg-x11-server-Xvfb
Installer la bibliothèque Vulkan et Xvfb
dnf install -y vulkan-loader xorg-x11-server-Xvfb
Installer la bibliothèque Vulkan et Xvfb
zypper -n install libvulkan1 xorg-x11-server-Xvfb

2Créer un utilisateur dédié et installer SteamCMD

Le serveur ne tourne jamais en root : un utilisateur sotf, dont le dossier personnel est /opt/sotf, possède SteamCMD et le serveur. Le dossier est créé avant l'utilisateur : sur Rocky et CentOS, SELinux refuse à useradd de le créer lui-même sous /opt.

Créer les dossiers et l'utilisateur sotf
mkdir -p /opt/sotf/server /opt/sotf/steamcmd && useradd -r -s /bin/bash -d /opt/sotf sotf && chown -R sotf:sotf /opt/sotf
Télécharger SteamCMD (en tant que sotf)
su - sotf -c "cd /opt/sotf/steamcmd && curl -fsSL https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz | tar zxf - && ls"
Résultat attendu
linux32
steamcmd.sh

3Télécharger le serveur Sons of the Forest (3,2 Go)

SteamCMD pour Linux sait télécharger une application Windows : l'option @sSteamCmdForcePlatformType windows le lui demande. L'application 2465200 est le serveur dédié Sons of the Forest, 3,2 Go. Si la commande se termine sur « Missing configuration », relancez-la : c'est un raté passager de Steam, fréquent avec cette application.

Installer le serveur Sons of the Forest (version Windows)
su - sotf -c "/opt/sotf/steamcmd/steamcmd.sh +@sSteamCmdForcePlatformType windows +force_install_dir /opt/sotf/server +login anonymous +app_update 2465200 validate +quit"
Résultat attendu
... Success! App '2465200' fully installed.
Vérifier
ls /opt/sotf/server/SonsOfTheForestDS.exe && du -sh /opt/sotf/server
Résultat attendu
/opt/sotf/server/SonsOfTheForestDS.exe
3.3G	/opt/sotf/server

4Installer la bibliothèque Steam que Proton exige

Le serveur parle à Steam (liste des serveurs, connexions des joueurs) à travers Proton, qui cherche la bibliothèque Steam native dans ~/.steam/sdk64/steamclient.so. Sans elle, le journal du serveur s'arrête sur « [Self-Tests] [Networking] Testing public accessibility... » et rien ne suit. SteamCMD a téléchargé cette bibliothèque à son premier lancement (linux64/steamclient.so) : un lien suffit.

Créer le lien vers la bibliothèque Steam de SteamCMD (en tant que sotf)
su - sotf -c "mkdir -p /opt/sotf/.steam/sdk64 && ln -sf /opt/sotf/steamcmd/linux64/steamclient.so /opt/sotf/.steam/sdk64/steamclient.so && ls -l /opt/sotf/.steam/sdk64/"
Résultat attendu
total 0
lrwxrwxrwx 1 sotf sotf 41 Sep 22 03:15 steamclient.so -> /opt/sotf/steamcmd/linux64/steamclient.so

5Installer GE-Proton

Proton est la couche qui fait tourner les programmes Windows dans Steam ; GE-Proton en est une version communautaire utilisable sans le client Steam. La version 10-34 est celle qui fonctionne sur tous les systèmes de ce guide.

Télécharger GE-Proton 10-34 (en tant que sotf)
su - sotf -c "mkdir -p /opt/sotf/proton && cd /opt/sotf/proton && curl -fsSL https://github.com/GloriousEggroll/proton-ge-custom/releases/download/GE-Proton10-34/GE-Proton10-34.tar.gz | tar xzf - && ls"
Résultat attendu
GE-Proton10-34

SELinux, en mode strict sur Rocky et CentOS (permissif sur AlmaLinux), refuse à Proton de charger ses fichiers Windows : le service tourne en boucle sans créer le journal du serveur, et /var/log/audit/audit.log montre « denied { execmod } ... comm="wine64" ». On marque le dossier /opt/sotf comme contenant des bibliothèques de ce type.

Autoriser SELinux à exécuter Proton dans /opt/sotf
dnf install -y policycoreutils-python-utils && semanage fcontext -a -t textrel_shlib_t '/opt/sotf(/.*)?' && restorecon -R /opt/sotf

6Écrire la configuration, la liste des propriétaires et l'identifiant Steam

Le serveur vérifie au démarrage que trois fichiers existent : dans son dossier de données (/opt/sotf/data), dedicatedserver.cfg, la configuration, et ownerswhitelist.txt, les joueurs qui l'administrent en jeu (un SteamID64 par ligne) ; à côté de l'exécutable, steam_appid.txt, l'identifiant Steam du jeu (1326470), que le script de lancement Windows écrit lui-même. Sans eux, il les crée avec des valeurs par défaut puis attend sans rien faire, journal désactivé. On les écrit avant le premier démarrage : changez le nom, le mot de passe (ChangezMoi) et l'identifiant Steam du propriétaire (76561198000000000 par le vôtre, visible sur https://store.steampowered.com/account/). LogFilesEnabled à true fait écrire le journal du serveur dans /opt/sotf/data/logs.

Écrire dedicatedserver.cfg, ownerswhitelist.txt et steam_appid.txt
mkdir -p /opt/sotf/data
cat > /opt/sotf/data/dedicatedserver.cfg << 'EOF'
{
  "IpAddress": "0.0.0.0",
  "GamePort": 8766,
  "QueryPort": 27016,
  "BlobSyncPort": 9700,
  "ServerName": "Mon serveur Sons of the Forest",
  "MaxPlayers": 8,
  "Password": "ChangezMoi",
  "LanOnly": false,
  "SaveSlot": 1,
  "SaveMode": "Continue",
  "GameMode": "Normal",
  "SaveInterval": 600,
  "IdleDayCycleSpeed": 0.0,
  "IdleTargetFramerate": 5,
  "ActiveTargetFramerate": 60,
  "LogFilesEnabled": true,
  "TimestampLogFilenames": true,
  "TimestampLogEntries": true,
  "SkipNetworkAccessibilityTest": false,
  "GameSettings": {},
  "CustomGameModeSettings": {}
}
EOF
echo 76561198000000000 > /opt/sotf/data/ownerswhitelist.txt
printf 1326470 > /opt/sotf/server/steam_appid.txt
chown -R sotf:sotf /opt/sotf/data /opt/sotf/server/steam_appid.txt && ls /opt/sotf/data && cat /opt/sotf/server/steam_appid.txt
Résultat attendu
dedicatedserver.cfg
ownerswhitelist.txt
1326470
ServerName, Password
Le nom dans la liste des serveurs et le mot de passe demandé aux joueurs (vide = serveur ouvert)
MaxPlayers
Le nombre de joueurs, de 1 à 8
GameMode
Normal, Hard, Peaceful, Creative ou Custom (avec CustomGameModeSettings)
SaveSlot, SaveMode
L'emplacement de sauvegarde et Continue (reprend la partie) ou New (recommence à chaque démarrage)
SaveInterval
Sauvegarde automatique toutes les 600 secondes
GamePort, QueryPort, BlobSyncPort
Les trois ports UDP : 8766, 27016 et 9700
LanOnly
true pour ne pas apparaître dans la liste publique

7Ouvrir les ports dans le pare-feu

Le serveur teste lui-même ses trois ports UDP (8766, 27016, 9700) sur l'adresse publique à chaque démarrage et, d'après son guide officiel, ne démarre pas si l'un d'eux est fermé : le pare-feu s'ouvre avant le premier lancement. La commande active le pare-feu du système en gardant SSH autorisé, puis ouvre les ports.

Activer le pare-feu (SSH reste autorisé) et ouvrir les ports du jeu
apt install -y ufw && ufw allow 22/tcp && ufw allow 8766/udp && ufw allow 27016/udp && ufw allow 9700/udp && ufw --force enable
Résultat attendu
...
Firewall is active and enabled on system startup
Activer le pare-feu (SSH reste autorisé) et ouvrir les ports du jeu
dnf install -y firewalld && systemctl enable --now firewalld && firewall-cmd --permanent --add-port=8766/udp --add-port=27016/udp --add-port=9700/udp && firewall-cmd --reload
Résultat attendu
...
success
success
Activer le pare-feu (SSH reste autorisé) et ouvrir les ports du jeu
dnf install -y firewalld && systemctl enable --now firewalld && firewall-cmd --permanent --add-port=8766/udp --add-port=27016/udp --add-port=9700/udp && firewall-cmd --reload
Résultat attendu
...
success
success
Ouvrir les ports du jeu (firewalld est déjà actif sur openSUSE)
firewall-cmd --permanent --add-port=8766/udp --add-port=27016/udp --add-port=9700/udp && firewall-cmd --reload
Résultat attendu
success
success
Vérifier les règles
ufw status
Résultat attendu
Status: active
22/tcp                     ALLOW       Anywhere
8766/udp                   ALLOW       Anywhere
27016/udp                  ALLOW       Anywhere
9700/udp                   ALLOW       Anywhere
Vérifier les règles
firewall-cmd --list-ports
Résultat attendu
8766/udp 27016/udp 9700/udp
Vérifier les règles
firewall-cmd --list-ports
Résultat attendu
8766/udp 27016/udp 9700/udp
Vérifier les règles
firewall-cmd --list-ports
Résultat attendu
8766/udp 27016/udp 9700/udp

8Créer le script de démarrage et le service

Le script lance l'écran virtuel Xvfb, puis le serveur dessus avec Proton en mode OpenGL (PROTON_USE_WINED3D=1) : avec sa traduction Vulkan habituelle, Proton plante sur l'écran virtuel avant même d'écrire le journal. À l'arrêt du service, le script envoie au serveur le signal Ctrl+C, qui le fait sauvegarder et quitter, puis ferme l'écran. Le premier démarrage passe les tests puis charge le monde : comptez deux minutes avant « Dedicated server loaded ».

Créer start.sh
mkdir -p /opt/sotf/steam /opt/sotf/prefix
cat > /opt/sotf/start.sh << 'EOF'
#!/bin/sh
# Ecran X virtuel (Xvfb) + Proton en mode OpenGL (wined3d : la traduction Vulkan plante sur cet ecran) ; a l'arret, le serveur quitte d'abord (Ctrl+C), l'ecran ensuite
export STEAM_COMPAT_CLIENT_INSTALL_PATH=/opt/sotf/steam
export STEAM_COMPAT_DATA_PATH=/opt/sotf/prefix
export PROTON_USE_WINED3D=1
cd /opt/sotf/server
Xvfb :99 -screen 0 1024x768x24 -nolisten tcp &
XPID=$!
DISPLAY=:99 /opt/sotf/proton/GE-Proton10-34/proton run ./SonsOfTheForestDS.exe -userdatapath /opt/sotf/data &
PID=$!
trap 'pkill -INT -x SonsOfTheForest; wait $PID; kill $XPID; exit 0' TERM
wait $PID
kill $XPID
EOF
chmod +x /opt/sotf/start.sh && chown -R sotf:sotf /opt/sotf
Créer le service sotf
cat > /etc/systemd/system/sotf.service << 'EOF'
[Unit]
Description=Serveur Sons of the Forest
After=network.target

[Service]
User=sotf
Group=sotf
WorkingDirectory=/opt/sotf
ExecStart=/opt/sotf/start.sh
KillMode=mixed
TimeoutStopSec=120
Restart=on-failure
RestartSec=30

[Install]
WantedBy=multi-user.target
EOF
Activer et démarrer le service
systemctl daemon-reload && systemctl enable --now sotf
Résultat attendu
Created symlink /etc/systemd/system/multi-user.target.wants/sotf.service → /etc/systemd/system/sotf.service.
Deux minutes plus tard : les tests sont passés, le serveur est chargé et écoute sur ses trois ports
systemctl is-active sotf && grep -h 'is open\|Self tests passed\|Steam server created\|Dedicated server loaded' "$(ls -t /opt/sotf/data/logs/*.txt | head -n 1)" && ss -lunp | grep '8766\|27016\|9700' | awk '{print $4}' | sort
Résultat attendu
active
[03:16:11.989][Log]  [Self-Tests] [Networking] UDP GamePort [8766] is open.
[03:16:12.022][Log]  [Self-Tests] [Networking] UDP QueryPort [27016] is open.
[03:16:12.055][Log]  [Self-Tests] [Networking] UDP BlobSyncPort [9700] is open.
[03:16:12.055][Log]  [Self-Tests] Self tests passed.
[03:16:16.001][Log]  Steam server created.
[03:16:59.753][Log]  Dedicated server loaded.
0.0.0.0:27016
0.0.0.0:8766
0.0.0.0:9700

9Gérer et sauvegarder le serveur

Le monde vit dans /opt/sotf/data/Saves/DedicatedServer/Multiplayer/0000000001 (l'emplacement 1) : le serveur y écrit toutes les dix minutes (SaveInterval) et à chaque arrêt du service. Chaque changement de dedicatedserver.cfg demande un redémarrage ; ownerswhitelist.txt est relu sans redémarrer. L'archive ci-dessous garde une copie datée des sauvegardes et de la configuration.

Voir l'état du service
systemctl status sotf
Suivre le journal du serveur en direct (Ctrl+C pour sortir)
journalctl -u sotf -f
Redémarrer
systemctl restart sotf
Arrêter
systemctl stop sotf
Suivre le journal du serveur lui-même (Ctrl+C pour sortir)
tail -f "$(ls -t /opt/sotf/data/logs/*.txt | head -n 1)"
Archiver les sauvegardes et la configuration (serveur arrêté, puis relancé)
systemctl stop sotf && tar -czf /opt/sotf/sotf-$(date +%F).tar.gz -C /opt/sotf/data Saves dedicatedserver.cfg ownerswhitelist.txt && systemctl start sotf && ls -la /opt/sotf/*.tar.gz
Résultat attendu
-rw-r--r-- 1 root root 245770 Sep 22 03:18 /opt/sotf/sotf-2026-09-22.tar.gz

10Se connecter au serveur

  1. Lancez Sons of the Forest et ouvrez la liste des serveurs dédiés (Dedicated server browser) : cherchez le nom donné dans dedicatedserver.cfg (Mon serveur Sons of the Forest) ; le serveur y apparaît une fois « Dedicated server loaded » écrit dans son journal.
  2. Entrez le mot de passe (ChangezMoi).
  3. Les joueurs dont le SteamID est dans ownerswhitelist.txt administrent le serveur depuis le menu pause du jeu (rôles et permissions des autres joueurs).

11Mettre à jour le serveur

Après une mise à jour du jeu, mettez le serveur à jour : la même commande que l'installation, serveur arrêté. La configuration, les sauvegardes et le journal sont dans /opt/sotf/data, hors du dossier mis à jour.

Mettre à jour le serveur (serveur arrêté, puis relancé)
systemctl stop sotf && su - sotf -c "/opt/sotf/steamcmd/steamcmd.sh +@sSteamCmdForcePlatformType windows +force_install_dir /opt/sotf/server +login anonymous +app_update 2465200 validate +quit" && systemctl start sotf
Résultat attendu
... Success! App '2465200' fully installed.

Erreurs fréquentes

Serveur prêt

Votre serveur Sons of the Forest démarre avec la machine, sauvegarde toutes les dix minutes et à l'arrêt, et écoute sur les ports 8766, 27016 et 9700. Donnez le nom du serveur et le mot de passe à vos joueurs.

💬 Écrivez-nous sur Messenger !