
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.

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
ettar
pour télécharger et décompresser SteamCMD.nfs-utils
etrsync
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.

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.1rsize/wsize
pour la taille des paquetshard,intr
pour la tolérance aux erreurs réseautimeo
etretrans
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.

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.

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