Chargement en cours

Guide: serveur Valheim sur Rocky Linux 9 avec SteamCMD et NFS

Valheim est un jeu de survie et d’exploration développé sous Unity, très apprécié pour son univers immersif et sa mécanique coopérative. Bien qu’il soit possible d’y jouer en solo ou via un serveur hébergé par un joueur, installer un serveur dédié présente plusieurs avantages :

  • Stabilité et performance : un serveur dédié tourne indépendamment des clients et peut rester en ligne 24/7, offrant une expérience de jeu fluide pour tous les participants.
  • Contrôle total : vous pouvez configurer le monde, le nom du serveur, le mot de passe, et gérer les sauvegardes à votre guise.
  • Partage multi-joueurs optimisé : plus besoin que l’hôte soit connecté pour que le monde soit actif, permettant aux autres joueurs de se connecter à tout moment.

Cependant, certains points méritent attention :

  • Consommation mémoire et CPU : Valheim est léger, mais un serveur dédié doit avoir suffisamment de ressources pour gérer plusieurs joueurs simultanément.
  • Configuration réseau : les ports UDP par défaut doivent être ouverts pour que les clients puissent se connecter correctement.
  • Maintenance : bien qu’Unity soit performant, les mises à jour et la gestion des backups nécessitent un minimum de suivi.

L’objectif de cet article est de vous guider pas à pas pour mettre en place un serveur Valheim sur Rocky Linux 9, en utilisant un script qui automatise l’installation, la configuration et la gestion du serveur, tout en vous expliquant le fonctionnement de chaque partie.


valheim-art-by-mats-minnhagen-03-1024x566 Guide: serveur Valheim sur Rocky Linux 9 avec SteamCMD et NFS

Initialisation et préparation du serveur

Le script commence par définir quelques variables essentielles et préparer l’environnement pour l’installation de Valheim Dedicated Server sur Rocky Linux 9.

1 – Déclaration des variables

# Variables

SERVER_USER="valheim"
SERVICE_NAME="valheim"
SERVER_DIR="/home/$SERVER_USER"
STEAMCMD_DIR="$SERVER_DIR/steamcmd"
STEAMCMD_URL="https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz"
STEAM_USER="anonymous"

log() {
    echo -e "[INFO] $1"
}

SERVER_USER : nom de l’utilisateur Linux qui va exécuter le serveur. Il est recommandé de créer un utilisateur dédié pour éviter d’exécuter le serveur en root.

SERVICE_NAME : nom du service systemd qui sera créé plus tard pour gérer le serveur.

SERVER_DIR : répertoire home de l’utilisateur dédié. C’est ici que seront stockés SteamCMD et le serveur Valheim.

STEAMCMD_DIR : chemin où SteamCMD sera installé.

STEAMCMD_URL : URL officielle pour télécharger SteamCMD.

STEAM_USER : utilisateur Steam utilisé pour l’installation. anonymous est suffisant pour Valheim Dedicated Server.

Log() : Cette petite fonction permet d’afficher des messages dans la console avec un préfixe [INFO], pour que le script soit plus lisible et que l’on sache où en est l’exécution.

2 – Création de l’utilisateur dédié et préparation du répertoire

# ==========================================
# Création de l'utilisateur dédié et home
# ==========================================

if ! id -u "$SERVER_USER" >/dev/null 2>&1; then
    log "Création de l'utilisateur dédié $SERVER_USER..."
    sudo useradd -m -s /bin/bash "$SERVER_USER"
else
    log "Utilisateur $SERVER_USER déjà existant."
fi

sudo mkdir -p "$SERVER_DIR"
sudo chown -R "$SERVER_USER:$SERVER_USER" "$SERVER_DIR"

Le script vérifie si l’utilisateur existe déjà. S’il n’existe pas, il est créé avec un home dédié et un shell Bash.

On s’assure ensuite que le répertoire existe et que l’utilisateur a tous les droits dessus. Cela garantit que SteamCMD et le serveur Valheim pourront écrire dans ces dossiers.

3 – Mise à jour du systeme

# ==========================================
# Mise à jour du système
# ==========================================

log "Mise à jour du système..."
sudo dnf update -y

Une étape classique mais importante : elle permet de s’assurer que toutes les dépendances et le système sont à jour avant l’installation des paquets nécessaires.

4 – Installation des dependances 32 Bits

# ==========================================
# Installation des dépendances 32 bits
# ==========================================

log "Installation des dépendances 32 bits..."
sudo dnf install -y glibc.i686 libstdc++.i686 libX11.i686 libXrandr.i686 libXxf86vm.i686 mesa-libGL.i686 zlib.i686 wget tar nfs-utils rsync

Même si Rocky Linux 9 est un système 64 bits, Valheim et SteamCMD nécessitent certaines librairies 32 bits.
Le script installe aussi quelques utilitaires essentiels :

  • wget et tar pour télécharger et décompresser SteamCMD.
  • nfs-utils et rsync pour gérer les sauvegardes et partages réseau.

ATTENTION : Les dependances 32bits ne sont plus disponible sur ROCKY 10.

5 – Installation de SteamCmd

# ==========================================
# Installation de SteamCMD
# ==========================================
log "Installation de SteamCMD..."
sudo -u "$SERVER_USER" bash <<EOF
mkdir -p "$STEAMCMD_DIR"
cd "$STEAMCMD_DIR"
if [ ! -f "$STEAMCMD_DIR/steamcmd.sh" ]; then
    wget -O /tmp/steamcmd_linux.tar.gz "$STEAMCMD_URL"
    tar -xvzf /tmp/steamcmd_linux.tar.gz -C "$STEAMCMD_DIR"
fi
EOF

On exécute ces commandes en tant qu’utilisateur dédié pour éviter d’utiliser root.

SteamCMD est téléchargé et extrait dans le répertoire prévu.

La condition if [ ! -f ... ] permet de ne pas retélécharger SteamCMD si l’installation existe déjà, ce qui rend le script idempotent.


valheim-art-by-ross-david-john-mcintosh-01-1-1024x576 Guide: serveur Valheim sur Rocky Linux 9 avec SteamCMD et NFS

Installation et Configuration du serveur Valheim

Après avoir préparé l’environnement et installé SteamCMD, le script se concentre sur l’installation du serveur, la gestion des sauvegardes et la configuration réseau.

1 – Téléchargement du serveur

# ==========================================
# Installation du serveur
# ==========================================

log "Téléchargement du serveur..."
sudo -u "$SERVER_USER" bash <<EOF
"$STEAMCMD_DIR/steamcmd.sh" +login "$STEAM_USER" +force_install_dir "$SERVER_DIR" +app_update 896660 validate +quit
EOF

Le serveur est téléchargé via SteamCMD en utilisant l’utilisateur dédié.

+app_update 896660 correspond à l’ID Steam de Valheim Dedicated Server.

validate permet de vérifier que tous les fichiers sont corrects, utile en cas de mise à jour ou de corruption.

+force_install_dir définit le répertoire où le serveur sera installé.

2 – Configuration NFS (Option)

Si vous avez un partage NFS sur un serveur de stockage, vous pouvez mettre ce qui suit dans votre script sinon passez directement à la partie 6

# ---------------------------
# Configuration NFS
# ---------------------------
NFS_SERVER="IPDEVOTRESERVUERNFS:DOSSIERPARTAGEDEVOTRENFS"
MOUNT_POINT="/home/save"

NFS_SERVER : adresse du serveur ou NAS où les backups seront stockés. Le remplir avec votre propre serveur NFS

MOUNT_POINT : point de montage local où les sauvegardes seront accessibles depuis le serveur.

3 – Verification et creations des dossiers (Option)

# ---------------------------
# Vérification et création des dossiers
# ---------------------------
REQUIRED_DIRS=(
    "$MOUNT_POINT"
)

for DIR in "${REQUIRED_DIRS[@]}"; do
    [ -d "$DIR" ] || mkdir -p "$DIR"
done

Le script s’assure que le répertoire de sauvegarde existe.

S’il n’existe pas, il est créé automatiquement.

4 – Montage NFS (Option)

# ---------------------------
# Montage NSF sur Syno
# ---------------------------

if ! mountpoint -q "$MOUNT_POINT"; then
    log "NFS non monté. Montage en cours..."
    mount -t nfs -o vers=4.1,rsize=8192,wsize=8192,hard,intr,timeo=600,retrans=2 "$NFS_SERVER" "$MOUNT_POINT"
    if [ $? -ne 0 ]; then
        log "ERREUR : Impossible de monter le NFS $NFS_SERVER"
        exit 1
    fi
    log "NFS monté avec succès."
else
    log "NFS déjà monté."
fi

Vérifie si le NFS est déjà monté pour éviter les doublons.

Monte le partage NFS avec des options optimisées pour les jeux :

  • vers=4.1 pour NFSv4.1
  • rsize/wsize pour la taille des paquets
  • hard,intr pour la tolérance aux erreurs réseau
  • timeo et retrans pour la robustesse

Si le montage échoue, le script s’arrête avec un message d’erreur.

5 – Montage automatique (Option)

# ==========================================
# Ajout du montage NFS dans /etc/fstab
# ==========================================
if ! grep -q "$NFS_SERVER" /etc/fstab; then
    log "Ajout du montage NFS dans /etc/fstab..."
    echo "$NFS_SERVER   $MOUNT_POINT   nfs4   defaults,_netdev   0 0" | sudo tee -a /etc/fstab
else
    log "Entrée NFS déjà présente dans /etc/fstab."
fi

6 – Creation du script de lancement

# ==========================================
# Création du script de lancement
# ==========================================

read -p "Nom du serveur (NAME) : " NAME
read -p "Nom du monde (WORLD) : " WORLD
read -s -p "Mot de passe du serveur (PASSWORD) : " PASSWORD
echo "" 

LAUNCH_SCRIPT="$SERVER_DIR/start_server.sh"

log "Création du script de lancement..."
sudo -u "$SERVER_USER" bash <<EOF
cat > "$LAUNCH_SCRIPT" <<EOL
#!/bin/bash
export templdpath=\$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=./linux64:\$LD_LIBRARY_PATH
export SteamAppID=892970
cd "$SERVER_DIR"

./valheim_server.x86_64 \\
    -name "${NAME}" \\
    -port 2456 \\
    -world "${WORLD}" \\
    -password "${PASSWORD}" \\
    -public 0 \\
    -nographics \\
    -batchmode \\
    -nobenchmark \\
    -savedir /home/save

export LD_LIBRARY_PATH=\$templdpath
EOL

chmod +x "$LAUNCH_SCRIPT"
EOF

Puis il crée un script start_server.sh avec les paramètres :

  • -name : nom du serveur visible par les joueurs
  • -world : nom du monde à charger/créer
  • -password : mot de passe pour rejoindre le serveur
  • -savedir : chemin vers le partage NFS
  • -nographics, -batchmode, -nobenchmark : options pour exécuter le serveur en mode headless et optimisé

Le script est rendu exécutable automatiquement.

7 – Configuration du Firewall

# ==========================================
# Configuration du pare-feu
# ==========================================
log "Ouverture des ports nécessaires dans le pare-feu..."
for port in 2456 2457 2458; do
    sudo firewall-cmd --add-port=${port}/tcp --permanent
    sudo firewall-cmd --add-port=${port}/udp --permanent
done
sudo firewall-cmd --reload

Ouvre les ports nécessaires pour que les clients puissent se connecter : TCP et UDP.

Recharge la configuration du pare-feu pour appliquer les changements.


official-valheim-art-appreciation-v0-tdtah8jwasbb1-1024x575 Guide: serveur Valheim sur Rocky Linux 9 avec SteamCMD et NFS

Création des services systemd et automatisation

La dernière partie du script s’occupe de transformer le serveur Valheim en service systemd pour qu’il démarre automatiquement au boot et de mettre en place un système de mise à jour automatique.

# ==========================================
# 7. Création du service systemd
# ==========================================
log "Création du service systemd..."
SERVICE_FILE="/etc/systemd/system/$SERVICE_NAME.service"
sudo bash -c "cat > $SERVICE_FILE" <<EOL
[Unit]
Description=Valheim Dedicated Server
Wants=network-online.target
After=syslog.target network.target nss-lookup.target network-online.target

[Service]
Type=simple
Environment="LD_LIBRARY_PATH=./linux64"
WorkingDirectory=$SERVER_DIR
ExecStart=/bin/bash $LAUNCH_SCRIPT
StartLimitBurst=0
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target
EOL

sudo chown -R "$SERVER_USER:$SERVER_USER" "$SERVER_DIR"
chmod +x "$LAUNCH_SCRIPT"

sudo systemctl daemon-reload
sudo systemctl enable "$SERVICE_NAME"

[Unit] : définit les dépendances et l’ordre de démarrage. Le serveur attend que le réseau soit opérationnel (network-online.target).

[Service] :

  • Type=simple : systemd considère le service comme actif tant que le processus principal tourne.
  • Environment="LD_LIBRARY_PATH=./linux64" : permet de charger correctement les bibliothèques 64 bits nécessaires à Valheim.
  • WorkingDirectory : répertoire où se trouve le serveur.
  • ExecStart : script de lancement créé précédemment.
  • Restart=on-failure : le serveur sera relancé automatiquement en cas de plantage.

[Install] : WantedBy=multi-user.target permet au service de démarrer automatiquement au boot.

On recharge les fichiers systemd et active le service pour qu’il démarre automatiquement.

2 – Creation d’un service et d’un timer pour les mises à jour automatiques

# ==========================================
# 7.1 Service et timer de mise à jour Valheim
# ==========================================
log "Création du service systemd pour la mise à jour du serveur Valheim..."

UPDATE_SERVICE_FILE="/etc/systemd/system/${SERVICE_NAME}-update.service"
UPDATE_TIMER_FILE="/etc/systemd/system/${SERVICE_NAME}-update.timer"

# ==========================================
# Service de mise à jour
# ==========================================

sudo bash -c "cat > $UPDATE_SERVICE_FILE" <<EOL
[Unit]
Description=Update Valheim Dedicated Server
After=network-online.target

[Service]
Type=oneshot
WorkingDirectory=$SERVER_DIR
ExecStartPre=/bin/systemctl stop valheim.service
ExecStart=/sbin/runuser -l $SERVER_USER -c "$STEAMCMD_DIR/steamcmd.sh +login $STEAM_USER +force_install_dir $SERVER_DIR +app_update 896660 +quit"
ExecStartPost=/bin/systemctl start valheim.service
StandardOutput=journal
StandardError=journal
EOL

# Timer pour exécuter la mise à jour tous les jours
sudo bash -c "cat > $UPDATE_TIMER_FILE" <<EOL
[Unit]
Description=Run Valheim Update Daily

[Timer]
OnCalendar=daily
Persistent=true

[Install]
WantedBy=timers.target
EOL

# Activation du timer
sudo systemctl daemon-reload
sudo systemctl enable --now "${SERVICE_NAME}-update.timer"

Service de mise à jour : exécute SteamCMD pour mettre à jour le serveur Valheim.

Timer systemd : planifie l’exécution quotidienne du service de mise à jour.

Active le timer immédiatement pour que les mises à jour se fassent automatiquement tous les jours sans intervention manuelle.

💡 Astuce : ce système permet de garder le serveur à jour, sans avoir à se connecter manuellement sur le Rocky Linux.


festen-fardig3-1-1024x566 Guide: serveur Valheim sur Rocky Linux 9 avec SteamCMD et NFS

Conclusion

Mettre en place un serveur Valheim dédié sur Rocky Linux 9 peut sembler complexe au premier abord, mais grâce à ce script complet, toutes les étapes essentielles sont automatisées et expliquées pas à pas.

Vous pouvez regrouper toutes les parties du script présentées dans cet article dans un seul fichier .sh, le rendre exécutable avec chmod +x nom_du_script.sh, puis le lancer sur votre serveur Rocky 9. Cela permettra de :

  • Créer automatiquement un utilisateur dédié pour le serveur.
  • Installer SteamCMD et le serveur Valheim.
  • Monter un partage NFS pour les sauvegardes et configurer /etc/fstab.
  • Créer un script de lancement personnalisé avec le nom du serveur, le nom du monde et le mot de passe.
  • Configurer le pare-feu pour autoriser les connexions des joueurs.
  • Transformer le serveur en service systemd, avec redémarrage automatique en cas de plantage.
  • Mettre en place un service et un timer systemd pour les mises à jour quotidiennes.

En résumé, ce script centralise toutes les bonnes pratiques pour gérer un serveur Valheim sur Linux : sécurité, maintenance, sauvegardes, automatisation et fiabilité.

💡 Conseils pratiques :

  • Vérifiez que votre partage NFS est bien monté avant de lancer le serveur.
  • Surveillez occasionnellement les mises à jour et les logs du serveur.
  • Adaptez les paramètres du script (nom du serveur, mot de passe, ports) à vos besoins.

Avec cette approche, même un utilisateur ayant peu d’expérience avec Linux pourra mettre en place un serveur robuste et autonome, prêt à accueillir ses amis pour des sessions de jeu stables et continues.

💡 Note:

  • Ouvrez les ports UDP/TCP (2456 à 2458 par défaut) sur votre box internet pour permettre aux joueurs de se connecter.
  • Communiquez votre IP publique à vos amis afin qu’ils puissent rejoindre votre serveur.

🤫 Ce sera notre petit secret:

  • Télécharger le script depuis votre Rocky 9: sudo wget http://CtrlAltPlay.fr/Scripts/Valheim_Installation_Web.sh
  • Rendez le script executable: sudo chmod +x Valheim_Installation_Web.sh
  • Modifiez Ligne 72: NFS_SERVER= »IPSERVEURNFS:DOSSIERSURVOTRENFS » par votre serveur NFS
  • Lancer le script sur votre serveur: sudo ./Valheim_Installation_Web.sh

💡 Serveur NFS

  • Cela reste optionnelle si vous n’avez pas de serveur NFS, vous pouvez supprimer dans le script toute la partie 4

Passionné par le numérique, le gaming et les nouvelles technologies, je partage sur CtrlAltPlay.fr mes découvertes, mes expériences et mes projets. Je m'intéresse particulièrement à tout ce qui permet de comprendre ce qui se cache derrière nos outils : Linux, self-hosting, virtualisation, IA, automatisation, hardware… avec une approche très simple : tester, apprendre, comprendre et partager. Depuis quelque temps, je me suis lancé dans un nouveau projet : construire mon propre Home Lab IA. L'objectif est de faire fonctionner localement mes propres modèles, mettre en place du RAG, de la mémoire, de l'automatisation et progressivement construire un véritable assistant IA personnel. CtrlAltPlay.fr est avant tout un espace où je documente ce que je fais, les solutions qui fonctionnent… mais aussi les erreurs et les galères rencontrées en chemin. Parce qu'au final, le meilleur moyen d'apprendre reste encore de mettre les mains dedans