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
- 15 Go de disque libre ; 4 Go de RAM au minimum, 8 Go conseillés
Ce guide installe le serveur dédié Project Zomboid avec SteamCMD, l'outil de Valve : un utilisateur dédié, le serveur (7 Go, Java compris), la mémoire qu'on lui accorde, un service qui le démarre avec la machine et sauvegarde à l'arrêt, le pare-feu et la connexion depuis le jeu. Choisissez votre système ci-dessus.
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. Mettez le système à jour d'abord.
apt update && apt upgrade -y... 212 upgraded, 8 newly installed, 0 to remove and 4 not upgraded. (les nombres dépendent de l'âge de l'image)
dnf upgrade -y... Complete!
dnf upgrade -y... Complete!
zypper -n refresh && zypper -n updateAll repositories have been refreshed. ...
dpkg --add-architecture i386 && apt update && apt install -y lib32gcc-s1 lib32stdc++6 curldnf install -y glibc.i686 libstdc++.i686dnf install -y glibc.i686 libstdc++.i686zypper -n install glibc-32bit libstdc++6-32bitopenSUSE 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).
sed -i 's/^GRUB_CMDLINE_LINUX_DEFAULT="/GRUB_CMDLINE_LINUX_DEFAULT="ia32_emulation=1 /' /etc/default/grub && grub2-mkconfig -o /boot/grub2/grub.cfg && rebootgrep -o ia32_emulation=1 /proc/cmdlineia32_emulation=1
2Créer un utilisateur dédié et installer SteamCMD
Le serveur ne tourne jamais en root : un utilisateur zomboid, dont le dossier personnel est /opt/zomboid, 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.
mkdir -p /opt/zomboid/server /opt/zomboid/steamcmd && useradd -r -s /bin/bash -d /opt/zomboid zomboid && chown -R zomboid:zomboid /opt/zomboidsu - zomboid -c "cd /opt/zomboid/steamcmd && curl -fsSL https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz | tar zxf - && ls"linux32 steamcmd.sh
3Télécharger le serveur Project Zomboid
Le téléchargement fait 7,2 Go, Java compris.
su - zomboid -c "/opt/zomboid/steamcmd/steamcmd.sh +force_install_dir /opt/zomboid/server +login anonymous +app_update 380870 validate +quit"... Success! App '380870' fully installed.
ls /opt/zomboid/server/start-server.sh && du -sh /opt/zomboid/server/opt/zomboid/server/start-server.sh 8.1G /opt/zomboid/server (8.9G sur AlmaLinux, Rocky et CentOS)
4Donner la bonne mémoire au serveur
Le serveur est réglé d'usine sur 8 Go de mémoire : sur une machine de 8 Go, il se fait tuer au chargement de la carte. Prenez la boîte qui correspond à votre machine.
sed -i 's/"-Xmx8g"/"-Xmx4g"/' /opt/zomboid/server/ProjectZomboid64.json && grep Xmx /opt/zomboid/server/ProjectZomboid64.json"-Xmx4g",
sed -i 's/"-Xmx8g"/"-Xmx2g"/' /opt/zomboid/server/ProjectZomboid64.json && grep Xmx /opt/zomboid/server/ProjectZomboid64.json"-Xmx2g",
5Créer le script de démarrage et le service
Le nom du serveur (-servername) nomme aussi ses fichiers de réglages et son monde ; le mot de passe d'administration (-adminpassword) est celui du compte admin dans le jeu. Changez-les. Ne retirez pas la ligne KillSignal=SIGINT du service : c'est elle qui fait sauvegarder à l'arrêt.
cat > /opt/zomboid/start.sh << 'EOF'
#!/bin/sh
cd /opt/zomboid/server
exec ./start-server.sh -servername monserveur -adminpassword ChangezMoi -port 16261 -udpport 16262
EOF
chmod +x /opt/zomboid/start.sh && chown -R zomboid:zomboid /opt/zomboidcat > /etc/systemd/system/zomboid.service << 'EOF'
[Unit]
Description=Serveur Project Zomboid
After=network.target
[Service]
User=zomboid
Group=zomboid
WorkingDirectory=/opt/zomboid/server
ExecStart=/opt/zomboid/start.sh
KillSignal=SIGINT
TimeoutStopSec=120
Restart=on-failure
RestartSec=15
[Install]
WantedBy=multi-user.target
EOFsystemctl daemon-reload && systemctl enable --now zomboidsystemctl is-active zomboid && journalctl -u zomboid --no-pager | grep -c 'SERVER STARTED' && ss -lunp | grep -E ':1626[12] 'active
1
UNCONN 0 0 0.0.0.0:16261 0.0.0.0:* users:(("ProjectZomboid6",pid=39112,fd=37))
UNCONN 0 0 0.0.0.0:16262 0.0.0.0:* users:(("ProjectZomboid6",pid=39112,fd=38))6Régler le serveur
Le premier démarrage a créé les fichiers de réglages dans /opt/zomboid/Zomboid/Server : monserveur.ini (le serveur) et monserveur_SandboxVars.lua (les règles du monde : zombies, butin, saisons). On les édite serveur arrêté.
monserveur.ini : PublicName- Le nom affiché dans la liste des serveurs (My PZ Server par défaut)
monserveur.ini : Password- Le mot de passe demandé aux joueurs (vide = ouvert)
monserveur.ini : MaxPlayers- Le nombre maximal de joueurs (32 par défaut)
monserveur.ini : Public- true pour apparaître dans la liste publique (false par défaut)
monserveur_SandboxVars.lua- Les mêmes réglages de difficulté qu'en solo (population de zombies, butin, électricité, saisons)
systemctl stop zomboid && nano /opt/zomboid/Zomboid/Server/monserveur.ini && systemctl start zomboid7Ouvrir les ports dans le pare-feu
Project Zomboid parle en UDP sur les ports 16261 et 16262.
apt install -y ufw && ufw allow 22/tcp && ufw allow 16261:16262/udp && ufw --force enable... Firewall is active and enabled on system startup
dnf install -y firewalld && systemctl enable --now firewalld && firewall-cmd --permanent --add-port=16261-16262/udp && firewall-cmd --reload... success success
dnf install -y firewalld && systemctl enable --now firewalld && firewall-cmd --permanent --add-port=16261-16262/udp && firewall-cmd --reload... success success
firewall-cmd --permanent --add-port=16261-16262/udp && firewall-cmd --reloadsuccess success
8Se connecter au serveur
- Lancez Project Zomboid, puis Rejoindre.
- Dans le volet de droite, entrez un nom, l'adresse IP de votre serveur (203.0.113.42) et le port 16261.
- Pour jouer avec le compte administrateur : nom d'utilisateur admin, mot de passe celui de start.sh ; sinon, n'importe quel nom et le mot de passe du serveur s'il y en a un.
- Cliquez sur Enregistrer, puis sur Rejoindre le serveur.
9Gérer, sauvegarder et mettre à jour le serveur
systemctl status zomboidjournalctl -u zomboid -fsystemctl restart zomboidsystemctl stop zomboidLe monde vit dans /opt/zomboid/Zomboid/Saves/Multiplayer/monserveur et les réglages dans /opt/zomboid/Zomboid/Server ; le script ci-dessous en garde une archive datée chaque nuit et conserve les 10 dernières.
cat > /opt/zomboid/backup.sh << 'EOF'
#!/bin/sh
BACKUP_DIR=/opt/zomboid/backups
DATE=$(date +%Y-%m-%d_%H-%M)
mkdir -p $BACKUP_DIR
tar -czf $BACKUP_DIR/zomboid-$DATE.tar.gz -C /opt/zomboid/Zomboid Saves Server
cd $BACKUP_DIR && ls -t | tail -n +11 | xargs -r rm
EOF
chmod +x /opt/zomboid/backup.sh && chown zomboid:zomboid /opt/zomboid/backup.shsu - zomboid -c '/opt/zomboid/backup.sh && ls -la /opt/zomboid/backups'-rw-rw-r-- 1 zomboid zomboid 887850 ... zomboid-2026-09-15_05-13.tar.gz
apt install -y cron && systemctl enable --now crondnf install -y cronie && systemctl enable --now cronddnf install -y cronie && systemctl enable --now crondzypper -n install cronie && systemctl enable --now cronsu - zomboid -c '(crontab -l 2>/dev/null; echo "0 4 * * * /opt/zomboid/backup.sh") | crontab - && crontab -l'0 4 * * * /opt/zomboid/backup.sh
Après une mise à jour du jeu, un serveur en retard refuse les joueurs à jour : la mise à jour est la même commande que l'installation, serveur arrêté. Refaites ensuite l'étape 4 si ProjectZomboid64.json a été remplacé (grep Xmx le dit).
systemctl stop zomboid && su - zomboid -c "/opt/zomboid/steamcmd/steamcmd.sh +force_install_dir /opt/zomboid/server +login anonymous +app_update 380870 +quit" && systemctl start zomboid... Success! App '380870' already up to date. (« fully installed » quand une mise à jour a été téléchargée)
Erreurs fréquentes
L'image du serveur a été construite sur un autre disque et GRUB demande où se réinstaller : choisissez le disque de la machine (celui que lsblk affiche, en général /dev/sda) ; la mise à jour continue ensuite.
Un raté passager côté Steam : relancez la même commande, le téléchargement reprend.
Plusieurs serveurs de jeux tournent sur la même machine, chacun avec son utilisateur, et SteamCMD a déjà créé dix dossiers /tmp/dumps, /tmp/dumps01... /tmp/dumps09 qui appartiennent aux autres : lancez rm -rf /tmp/dumps* en root, puis relancez la commande.
Le système n'a pas été mis à jour avant : faites la première boîte de l'étape 1, puis réessayez.
Les programmes 32 bits sont désactivés dans le noyau : appliquez la dernière boîte de l'étape 1 et redémarrez.
Manque de mémoire : le serveur demande plus que la machine n'a (dmesg montre « Out of memory »). Baissez -Xmx à l'étape 4.
Regardez journalctl -u zomboid -n 50 : un mot de passe absent, un port déjà pris ou la mémoire. Le premier démarrage génère le monde et prend plus longtemps sur une petite machine.
Ports 16261 et 16262 UDP fermés (étape 7), ou serveur pas encore démarré.
Serveur prêt
Votre serveur Project Zomboid démarre avec la machine, sauvegarde à l'arrêt et chaque nuit, et écoute sur les ports 16261-16262. La même base SteamCMD sert aux autres serveurs de jeux.