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

Installer un serveur Terraria sur Linux (Ubuntu, Debian, AlmaLinux)

Documentation / Tutoriels Linux / Serveurs de jeux / Installer un serveur Terraria sur Linux (Ubuntu, Debian, AlmaLinux)
Mis à jour le 20/09/2026
16 vues
Intermédiaire
20 minutes

Prérequis

Votre serveur :

Ce guide installe le serveur dédié officiel de Terraria (version 1.4.5.8) sur Linux : un utilisateur dédié, le serveur, son fichier de réglages (monde, mot de passe, langue), une console qu'on commande depuis le terminal, un service qui démarre le serveur avec la machine et sauvegarde le monde à l'arrêt, le pare-feu, la connexion depuis le jeu et la sauvegarde de nuit. 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 unzip et curl

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 unzip et curl
apt install -y unzip curl
Installer unzip et curl
dnf install -y unzip curl
Résultat attendu
...
Complete!
Installer unzip et curl
dnf install -y unzip curl
Installer unzip et curl
zypper -n install unzip curl

2Créer un utilisateur dédié et télécharger le serveur

Le serveur ne tourne jamais en root : un utilisateur terraria, dont le dossier personnel est /opt/terraria, possède le serveur (server) et les mondes (worlds). 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 terraria
mkdir -p /opt/terraria/server /opt/terraria/worlds && useradd -r -s /bin/bash -d /opt/terraria terraria && chown -R terraria:terraria /opt/terraria

Le serveur se télécharge sur terraria.org (46 Mo, version 1.4.5.8 au moment de l'écriture). L'archive contient les versions Windows, Mac et Linux ; on ne garde que Linux, et on rend le programme exécutable, l'archive ne le fait pas.

Télécharger et installer le serveur (en tant que terraria)
su - terraria -c "cd /opt/terraria && curl -fsSL -o terraria-server.zip https://terraria.org/api/download/pc-dedicated-server/terraria-server-1458.zip && unzip -q -o terraria-server.zip && cp -r 1458/Linux/. server/ && rm -rf 1458 terraria-server.zip && chmod +x server/TerrariaServer.bin.x86_64 && ls server"
Résultat attendu
...
TerrariaServer
TerrariaServer.bin.x86_64
TerrariaServer.exe
WindowsBase.dll
...

3Écrire les réglages du serveur

Le fichier serverconfig.txt porte le monde, le mot de passe demandé aux joueurs, le nombre de places et la langue des messages du serveur. Changez au moins le mot de passe et le nom du monde.

Créer serverconfig.txt
cat > /opt/terraria/serverconfig.txt << 'EOF'
world=/opt/terraria/worlds/MonMonde.wld
autocreate=2
worldname=MonMonde
difficulty=0
port=7777
maxplayers=8
password=cinqcaracteres
motd=Bienvenue sur mon serveur Terraria
language=fr-FR
secure=1
EOF
chown terraria:terraria /opt/terraria/serverconfig.txt
world, worldname
Le fichier du monde et son nom ; un nouveau nom crée un nouveau monde
autocreate=2
Crée le monde s'il n'existe pas : 1 petit, 2 moyen, 3 grand
difficulty=0
0 classique, 1 expert, 2 maître, 3 aventure (journey)
maxplayers=8
Le nombre de places, de 1 à 255
password
Le mot de passe demandé aux joueurs ; laissez-le : des robots essaient le port 7777 dès la première minute
motd
Le message affiché à l'arrivée d'un joueur
language=fr-FR
La langue des messages du serveur (en-US, de-DE, es-ES, it-IT, pt-BR...)
secure=1
La protection contre la triche

4Donner une console au serveur

Terraria n'écrit le monde sur le disque que sur ordre : la commande save, ou exit qui sauvegarde et quitte. Coupé autrement, il perd tout depuis la dernière sauvegarde. Le script de démarrage lui donne une console qui reste ouverte, le tube nommé /opt/terraria/console.in : tout ce qu'on y écrit arrive au serveur comme si on le tapait devant lui.

Créer start.sh
cat > /opt/terraria/start.sh << 'EOF'
#!/bin/sh
cd /opt/terraria/server
[ -p /opt/terraria/console.in ] || mkfifo /opt/terraria/console.in
sleep infinity > /opt/terraria/console.in &
exec ./TerrariaServer.bin.x86_64 -config /opt/terraria/serverconfig.txt < /opt/terraria/console.in
EOF
chmod +x /opt/terraria/start.sh && chown terraria:terraria /opt/terraria/start.sh

5Démarrer le serveur comme un service

Le service démarre le serveur avec la machine ; sa ligne ExecStop écrit exit dans la console, le serveur sauvegarde et s'arrête. Le premier démarrage génère le monde : environ une minute.

Créer le service terraria
cat > /etc/systemd/system/terraria.service << 'EOF'
[Unit]
Description=Serveur Terraria
After=network.target

[Service]
User=terraria
Group=terraria
WorkingDirectory=/opt/terraria/server
ExecStart=/opt/terraria/start.sh
ExecStop=/bin/sh -c 'echo exit > /opt/terraria/console.in; while kill -0 $MAINPID 2>/dev/null; do sleep 1; done'
TimeoutStopSec=90
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF
Activer et démarrer le service
systemctl daemon-reload && systemctl enable --now terraria
Résultat attendu
Created symlink /etc/systemd/system/multi-user.target.wants/terraria.service → /etc/systemd/system/terraria.service.
Deux minutes plus tard : le serveur est démarré et écoute
systemctl is-active terraria && journalctl -u terraria --no-pager | grep -E 'Serveur de Terraria v|Serveur démarré' && ss -ltnp | grep ':7777 '
Résultat attendu
active
... Serveur de Terraria v1.4.5.8
... Serveur de Terraria v1.4.5.8
... : Serveur démarré
LISTEN 0      4096         0.0.0.0:7777      0.0.0.0:*    users:(("Main Thread",pid=3782,fd=6))
Le monde existe
ls -la /opt/terraria/worlds/
Résultat attendu
-rw-r--r-- 1 terraria terraria 6985507 ... MonMonde.wld

6Ouvrir les ports dans le pare-feu

Terraria parle en TCP sur le port 7777. 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 7777/tcp && 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=7777/tcp && 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=7777/tcp && 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=7777/tcp && firewall-cmd --reload
Résultat attendu
success
success

7Se connecter au serveur

  1. Lancez Terraria, choisissez un personnage, puis Multijoueur et Rejoindre via IP.
  2. Entrez l'adresse IP de votre serveur (203.0.113.42), puis le port 7777.
  3. Entrez le mot de passe de serverconfig.txt.

8Commander le serveur depuis le terminal

Chaque commande s'écrit dans la console du serveur avec echo ; la réponse arrive dans le journal. Les commandes s'écrivent en anglais même quand le serveur parle français.

Envoyer un message aux joueurs, puis lire la réponse du serveur
echo "say Bonjour à tous" > /opt/terraria/console.in && sleep 2 && journalctl -u terraria --no-pager -n 3
Résultat attendu
... <Server> Bonjour à tous
Sauvegarde le monde tout de suite (« Sauvegarde du fichier du monde »)
save
Liste les joueurs connectés (« Aucun joueur connecté. »)
playing
Message à tous les joueurs
say Bonjour à tous
La version du serveur
version
La liste des commandes, dans la langue du serveur
help
Sauvegarde et arrête le serveur (c'est ce que fait systemctl stop terraria)
exit

9Gérer, sauvegarder et mettre à jour le serveur

Voir l'état du service
systemctl status terraria
Suivre le journal du serveur en direct (Ctrl+C pour sortir)
journalctl -u terraria -f
Redémarrer
systemctl restart terraria
Arrêter
systemctl stop terraria
Vérifier que l'arrêt a sauvegardé
systemctl stop terraria && journalctl -u terraria --no-pager -n 6 | grep -E 'Enregistrement|Stopped' && systemctl start terraria
Résultat attendu
... : Enregistrement avant de quitter…
... Stopped terraria.service - Serveur Terraria.
(« Stopped Serveur Terraria. » sur AlmaLinux, Rocky et CentOS)

Le monde vit dans /opt/terraria/worlds (le serveur y garde aussi deux copies .bak). Le script ci-dessous demande une sauvegarde au serveur, attend qu'elle soit écrite, puis archive les mondes et les réglages ; chaque nuit, il conserve les 10 dernières archives.

Créer le script de sauvegarde
cat > /opt/terraria/backup.sh << 'EOF'
#!/bin/sh
BACKUP_DIR=/opt/terraria/backups
DATE=$(date +%Y-%m-%d_%H-%M)
mkdir -p $BACKUP_DIR
echo save > /opt/terraria/console.in
sleep 10
tar -czf $BACKUP_DIR/terraria-$DATE.tar.gz -C /opt/terraria worlds serverconfig.txt
cd $BACKUP_DIR && ls -t | tail -n +11 | xargs -r rm
EOF
chmod +x /opt/terraria/backup.sh && chown terraria:terraria /opt/terraria/backup.sh
Tester une sauvegarde tout de suite
su - terraria -c '/opt/terraria/backup.sh && ls -la /opt/terraria/backups'
Résultat attendu
-rw-rw-r-- 1 terraria terraria 7871554 ... terraria-2026-09-21_01-00.tar.gz
Installer et démarrer cron
apt install -y cron && systemctl enable --now cron
Installer et démarrer cron
dnf install -y cronie && systemctl enable --now crond
Installer et démarrer cron
dnf install -y cronie && systemctl enable --now crond
Installer et démarrer cron
zypper -n install cronie && systemctl enable --now cron
Programmer la sauvegarde chaque nuit à 4 h
su - terraria -c '(crontab -l 2>/dev/null; echo "0 4 * * * /opt/terraria/backup.sh") | crontab - && crontab -l'
Résultat attendu
0 4 * * * /opt/terraria/backup.sh

Une mise à jour du jeu, c'est une nouvelle archive sur terraria.org : le numéro dans le nom du fichier change (1458 pour la 1.4.5.8). Serveur arrêté, on remplace le contenu de server ; les mondes et serverconfig.txt ne bougent pas.

Mettre à jour le serveur (serveur arrêté, puis relancé)
systemctl stop terraria && su - terraria -c "cd /opt/terraria && curl -fsSL -o terraria-server.zip https://terraria.org/api/download/pc-dedicated-server/terraria-server-1458.zip && unzip -q -o terraria-server.zip && cp -r 1458/Linux/. server/ && rm -rf 1458 terraria-server.zip && chmod +x server/TerrariaServer.bin.x86_64" && systemctl start terraria

Erreurs fréquentes

Serveur prêt

Votre serveur Terraria démarre avec la machine, sauvegarde son monde à l'arrêt et chaque nuit, et écoute sur le port 7777. Pour d'autres jeux, voyez les serveurs de jeux.

💬 Écrivez-nous sur Messenger !