Serveur Minecraft Bedrock

Créer un serveur Minecraft Bedrock sur Ubuntu 26.04 LTS

Mise à jour le :

Temps de lecture :

16–24 minutes

Minecraft Bedrock est la version du jeu qui permet aux joueurs de Windows, d’Android, d’iOS, de Xbox et de PlayStation de se retrouver dans le même monde. Ce tutoriel installe un serveur Minecraft Bedrock sur Ubuntu 26.04 LTS — le logiciel officiel de Mojang, pas un dérivé — en service permanent : il démarre avec la machine, redémarre tout seul après une panne, se sauvegarde chaque nuit et se met à jour avec une seule commande.

Toutes les commandes utilisent des chemins absolus : vous pouvez les coller une par une, dans l’ordre, sans jamais vous demander dans quel dossier vous êtes.

Ce qui a changé depuis notre tutoriel pour Ubuntu 20.04

Quatre choses, et elles comptent :

  1. Les règles de pare-feu ne sont plus les mêmes du tout. Mojang a remplacé le transport réseau historique (RakNet, en UDP 19132) par NetherNet, qui écoute en TCP sur 19132 pour la négociation, puis ouvre un port UDP par joueur. La règle ufw allow 19132/udp de l’ancien tutoriel n’ouvre donc plus rien d’utile. Pire : le serveur refuse maintenant l’ancien mode. Mis en raknet, il écrit dans son journal que « NetherNet est le seul transport pris en charge dans cette version » et que les joueurs ne pourront pas se connecter. Les sections 3 et 6 tiennent compte des deux changements.
  2. L’adresse de téléchargement a changé. L’ancien hôte minecraft.azureedge.net n’existe plus du tout. Notre commande va maintenant chercher le lien de la dernière version dans l’index officiel de Mojang : le tutoriel ne périmera plus.
  3. Plus besoin de bricoler libssl1.1. Beaucoup de guides sur le web font encore installer une vieille bibliothèque OpenSSL. Ce n’est plus nécessaire : le serveur actuel ne dépend que de la bibliothèque C du système, et Ubuntu 26.04 en a une bien plus récente que le minimum requis.
  4. La liste d’autorisation est maintenant active par défaut. Un serveur fraîchement installé refuse tout le monde jusqu’à ce que vous y inscriviez des joueurs (section 7). C’est la cause n° 1 des « ça ne marche pas » sur les serveurs récents.

Ce qu’il vous faut

  • Un serveur Ubuntu 26.04 LTS avec une architecture x86-64 (Intel ou AMD). Mojang ne publie pas de version ARM du serveur Bedrock : un VPS ARM ne fonctionnera pas. Si vous n’avez pas encore de serveur, jetez un œil à nos serveurs virtuels.
  • 2 cœurs et 1 Go de mémoire au minimum, ce que recommande Mojang. Comptez plutôt 2 Go à partir de quatre ou cinq joueurs simultanés.
  • Un accès SSH au serveur avec un utilisateur capable d’utiliser sudo.
  • Le gamertag Xbox de chaque personne qui jouera : il servira à remplir la liste d’autorisation.

Note sur la licence. Le serveur Bedrock est un logiciel gratuit mais propriétaire. En le téléchargeant, vous acceptez le contrat de licence de Minecraft et la déclaration de confidentialité de Microsoft. Le serveur transmet aussi automatiquement un rapport à Mojang s’il plante.


1. Mettre le serveur à jour

On commence toujours par là. La première commande sudo de la session vous demandera votre mot de passe.

Shell
sudo apt update && sudo apt full-upgrade -y

Si le noyau a été mis à jour, un redémarrage est nécessaire. Cette commande redémarre seulement si Ubuntu le demande :

Shell
if [ -f /var/run/reboot-required ]; then echo "Redémarrage dans 5 secondes..."; sleep 5; sudo reboot; else echo "Aucun redémarrage requis."; fi

Reconnectez-vous en SSH si le serveur a redémarré, puis continuez.

2. Installer les paquets nécessaires

Quatre paquets seulement : unzip pour décompresser l’archive, screen pour garder la console du serveur accessible, openssl pour l’identité du serveur, ufw pour le pare-feu.

Shell
sudo apt install -y unzip screen openssl ufw

Attention à curl. Le réseau de diffusion de Microsoft refuse les requêtes dont l’agent utilisateur commence par curl/ : un curl -O sur le fichier du serveur reste bloqué sans jamais répondre. Ce tutoriel utilise wget, qui passe très bien.

3. Configurer le pare-feu

L’ordre des commandes compte : on autorise SSH avant d’activer le pare-feu, sinon on se coupe l’accès au serveur. Le --force évite la question « y/n » qui bloquerait un copier-coller.

Shell
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow 19132/tcp comment 'Bedrock signalisation NetherNet'
sudo ufw allow 19140:19180/udp comment 'Bedrock parties NetherNet'
sudo ufw --force enable
sudo ufw status verbose
Sortie de la commande sudo ufw status verbose montrant les règles pour SSH, le port TCP 19132 et la plage UDP 19140 à 19180
Les règles attendues, une fois le pare-feu actif. Chaque règle apparaît deux fois : une pour IPv4, une pour IPv6.

Deux règles, parce que NetherNet utilise deux canaux : le TCP 19132 porte la négociation initiale, et chaque joueur connecté obtient ensuite un port UDP pris dans la plage que nous fixerons à la section 6. Quarante ports suffisent largement pour un serveur familial ; élargissez la plage — des deux côtés, ici et dans server.properties — si vous accueillez beaucoup de monde.

Si vous avez déjà déplacé votre port SSH, remplacez OpenSSH par <votre port>/tcp — et relisez l’annexe A, la méthode a changé sous Ubuntu 26.04.

4. Créer l’utilisateur et les dossiers

Le serveur de jeu ne doit jamais tourner en tant que root. On crée un utilisateur système sans mot de passe et sans shell de connexion : personne ne peut ouvrir de session avec lui, mais le service, lui, fonctionne parfaitement.

Shell
sudo useradd --system --create-home --home-dir /opt/minecraft --shell /usr/sbin/nologin minecraft
sudo mkdir -p /opt/minecraft/bedrock /opt/minecraft/sauvegardes
sudo chown -R minecraft:minecraft /opt/minecraft
sudo chmod 755 /opt/minecraft
sudo chmod 750 /opt/minecraft/sauvegardes

Les deux dernières lignes méritent un mot. useradd crée le dossier personnel en mode 750, ce qui vous empêcherait de lire vos propres fichiers de configuration sans sudo à chaque commande. On l’ouvre donc en lecture, tout en gardant les sauvegardes fermées — et la clé privée de la section 8 restera, elle, lisible par le seul compte minecraft.

5. Télécharger la dernière version du serveur

Cette commande demande à Mojang l’adresse de la version courante, l’affiche, puis la télécharge. Aucun numéro de version à recopier, et rien à mettre à jour dans ce tutoriel quand Minecraft évolue.

Shell
LIEN=$(wget -qO- https://net-secondary.web.minecraft-services.net/api/v1.0/download/links | grep -o 'https://[^"]*bin-linux/bedrock-server-[0-9.]*\.zip')
echo "Version trouvée : $LIEN"
wget -O /tmp/bedrock-server.zip "$LIEN"

Décompression, permissions, et on note la version installée pour le script de mise à jour de la section 14 :

Shell
sudo unzip -o /tmp/bedrock-server.zip -d /opt/minecraft/bedrock
basename "$LIEN" .zip | sed 's/bedrock-server-//' | sudo tee /opt/minecraft/bedrock/version.txt
sudo chown -R minecraft:minecraft /opt/minecraft
sudo chmod +x /opt/minecraft/bedrock/bedrock_server
rm -f /tmp/bedrock-server.zip

6. Configurer le serveur

C’est la section la plus importante du tutoriel. Le fichier server.properties contient une quarantaine de réglages ; ces commandes modifient seulement ceux qui comptent, sans toucher au reste du fichier ni à ses commentaires.

Shell
sudo -u minecraft sed -i \
  -e 's/^server-name=.*/server-name=Mon serveur Bedrock/' \
  -e 's/^gamemode=.*/gamemode=survival/' \
  -e 's/^difficulty=.*/difficulty=normal/' \
  -e 's/^max-players=.*/max-players=10/' \
  -e 's/^level-name=.*/level-name=Monde/' \
  /opt/minecraft/bedrock/server.properties

Il reste à fixer la plage de ports UDP. Sans elle, le serveur pioche au hasard dans les ports éphémères du système chaque fois qu’un joueur se connecte — et votre pare-feu les bloque. La propriété n’existe pas dans le fichier livré, on l’ajoute :

Shell
grep -q '^server-udp-ports=' /opt/minecraft/bedrock/server.properties || echo 'server-udp-ports=19140-19180' | sudo -u minecraft tee -a /opt/minecraft/bedrock/server.properties

Vérifiez l’ensemble :

Shell
grep -E '^(transport|server-name|server-port|server-udp-ports|gamemode|difficulty|max-players|allow-list|level-name)=' /opt/minecraft/bedrock/server.properties

Vous devez lire transport=nethernet et server-udp-ports=19140-19180. Cette plage doit correspondre exactement à celle ouverte dans le pare-feu à la section 3 : c’est le couple des deux qui rend le serveur joignable.

Et l’ancien mode raknet ? Il se sélectionne encore, et il rouvre bien l’UDP 19132 comme autrefois — mais le serveur inscrit alors cette erreur dans son journal : « In this release, NetherNet is the only supported transport type. Players will not be able to connect to your game without NetherNet. » Les ports s’ouvrent, et personne n’entre. Ne l’utilisez pas.

Le journal du serveur affiche TRANSPORT TYPE ERROR et indique que NetherNet est le seul transport pris en charge, alors que le port UDP 19132 est bien ouvert
Le serveur mis en mode raknet : le port UDP s’ouvre bel et bien, mais le journal prévient que personne ne pourra se connecter.

Quelques réglages utiles, si vous voulez aller plus loin dans le même fichier :

RéglageEffetValeurs
———
server-nameLe nom affiché dans la liste des serveurs du jeuTexte libre, sans point-virgule
server-portPort TCP de la négociation — c’est celui que vos joueurs saisissent19132 par défaut
server-udp-portsPlage UDP des parties ; doit refléter la règle de pare-feu19140-19180
level-nameLe nom du dossier du monde sur le disque, pas le nom affichéTexte libre
level-seedLa graine du monde, pour reproduire un terrain connuVide = aléatoire
gamemodeMode de jeu par défautsurvival, creative, adventure
difficultyDifficultépeaceful, easy, normal, hard
allow-cheatsAutorise les commandes en jeu aux opérateurstrue, false
view-distanceDistance de vue, en tronçons (impact direct sur la charge)32 par défaut
player-idle-timeoutMinutes avant d’expulser un joueur inactif30 par défaut

Un changement dans ce fichier demande un redémarrage du service (section 10). Deux exceptions, modifiables à chaud depuis la console : difficulty et allow-cheats, avec la commande changesetting.

7. Autoriser vos joueurs

Le réglage allow-list vaut true dès l’installation : le serveur refuse toute personne qui n’est pas dans allowlist.json. Remplacez les deux pseudos de l’exemple par les gamertags Xbox exacts de vos joueurs — c’est sensible à la casse et aux espaces.

Shell
sudo -u minecraft tee /opt/minecraft/bedrock/allowlist.json >/dev/null <<'JSON'
[
  { "ignoresPlayerLimit": false, "name": "VotreGamertag" },
  { "ignoresPlayerLimit": false, "name": "GamertagDunAmi" }
]
JSON

Pour ajouter quelqu’un plus tard, sans toucher au fichier ni redémarrer, voyez la section 12.

Vous préférez un serveur ouvert à tous ? Remplacez la liste par sudo -u minecraft sed -i 's/^allow-list=.*/allow-list=false/' /opt/minecraft/bedrock/server.properties. Sachez que votre adresse IP sera balayée par des robots en quelques heures : nous ne le recommandons pas.

8. Créer la clé d’identité du serveur

Sans cette clé, le serveur s’invente une identité neuve à chaque démarrage et vos joueurs doivent réaccepter la confiance du serveur chaque fois. Une clé permanente règle le problème pour de bon. Mojang exige une clé EC P-384 non chiffrée.

Shell
sudo -u minecraft mkdir -p /opt/minecraft/bedrock/keys
sudo -u minecraft openssl ecparam -name secp384r1 -genkey -noout -out /opt/minecraft/bedrock/keys/server_identity_key.pem
sudo chmod 700 /opt/minecraft/bedrock/keys
sudo chmod 600 /opt/minecraft/bedrock/keys/server_identity_key.pem

Cette clé est un secret : conservez-la avec vos sauvegardes, et ne la partagez pas.

9. Installer le service systemd

Le service fait trois choses que l’ancienne méthode au screen manuel ne faisait pas : il démarre le serveur au boot de la machine, il le relance s’il plante, et surtout il l’arrête proprement. Ce dernier point est essentiel : le serveur Bedrock ne sauvegarde son monde que sur la commande stop. Couper le processus sans la lui envoyer, c’est risquer de perdre la dernière partie, ou de corrompre le monde.

C’est pour cette raison qu’il y a deux lignes ExecStop. La première envoie stop dans la console du serveur ; la seconde attend qu’il ait fini. Sans cette deuxième ligne, systemd considère l’arrêt terminé dès que la commande est envoyée et tue le serveur dans la foulée, avant qu’il ait eu le temps d’écrire le monde sur le disque. La ligne -Logfile, elle, conserve tout ce que le serveur affiche dans un fichier que vous pourrez relire à tête reposée.

Shell
sudo tee /etc/systemd/system/minecraft-bedrock.service >/dev/null <<'UNIT'
[Unit]
Description=Serveur Minecraft Bedrock
Documentation=https://www.minecraft.net/fr-ca/download/server/bedrock
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=minecraft
Group=minecraft
WorkingDirectory=/opt/minecraft/bedrock
Environment=LD_LIBRARY_PATH=/opt/minecraft/bedrock
ExecStart=/usr/bin/screen -L -Logfile /opt/minecraft/bedrock/console.log -DmS bedrock /opt/minecraft/bedrock/bedrock_server
ExecStop=/usr/bin/screen -S bedrock -p 0 -X eval "stuff \"stop\\015\""
ExecStop=/bin/sh -c "while pgrep -x bedrock_server >/dev/null; do sleep 1; done"
TimeoutStopSec=120
Restart=on-failure
RestartSec=15
NoNewPrivileges=true
ProtectSystem=full
ProtectHome=true
ReadWritePaths=/opt/minecraft

[Install]
WantedBy=multi-user.target
UNIT
sudo systemctl daemon-reload

10. Démarrer et vérifier

Shell
sudo systemctl enable --now minecraft-bedrock
sleep 20
sudo systemctl status minecraft-bedrock --no-pager

Le statut doit indiquer active (running). Le premier démarrage crée le monde ; il prend quelques secondes de plus que les suivants.

Sortie de systemctl status montrant le service minecraft-bedrock actif, avec screen comme processus principal et bedrock_server en dessous
Le service en marche. On voit les deux processus : screen, qui tient la console, et le serveur de jeu lui-même.

Vérifiez maintenant que le serveur écoute vraiment là où il faut :

Shell
sudo ss -ltnp | grep 19132

Vous devez voir une ligne LISTEN sur le port 19132, tenue par bedrock_server. Si cette commande ne retourne rien, le serveur n’a pas démarré : voyez le journal à la section 15.

Ne cherchez pas de port UDP en écoute — il n’y en a aucun tant que personne ne joue. NetherNet n’ouvre un port UDP qu’au moment où un joueur se connecte, dans la plage définie à la section 6. C’est normal, et c’est pourquoi la règle de pare-feu porte sur une plage plutôt que sur un port précis.

La commande ss montre un port TCP 19132 en écoute et aucun port UDP, ce qui est normal au repos
Un seul port en écoute, et il est en TCP. L’absence de port UDP n’est pas une erreur.

Un dernier contrôle, à faire depuis un autre appareil que le serveur — il prouve que le pare-feu laisse bien passer la négociation. Remplacez l’adresse par la vôtre :

Shell
curl -s -o /dev/null -w 'Code de réponse : %{http_code}\n' http://VOTRE-ADRESSE-IP:19132/

Un code 404 est le bon résultat : le serveur a répondu. Une erreur de connexion ou une absence de réponse signifie que le port n’est pas joint — reprenez la section 3.

Une requête curl vers le port 19132 du serveur renvoie le code de réponse 404
Un 404 signifie que la négociation NetherNet répond. C’est le résultat recherché.

Et l’adresse à donner à vos joueurs :

Shell
ip -4 addr show scope global | grep -oP '(?<=inet\s)\d+(\.\d+){3}'

Les commandes du quotidien :

Shell
sudo systemctl restart minecraft-bedrock   # redémarrer (sauvegarde le monde avant)
sudo systemctl stop minecraft-bedrock      # arrêter proprement
sudo systemctl start minecraft-bedrock     # démarrer

11. Se connecter depuis Minecraft

Dans le jeu : Jouer → Serveurs → Ajouter un serveur.

ChampValeur
——
Nom du serveurCe que vous voulez
Adresse du serveurL’adresse IP obtenue à la section 10
Port19132

Le premier joueur qui entre doit accepter la confiance du serveur. Grâce à la clé de la section 8, il ne le fera qu’une fois.

Les consoles. Xbox, PlayStation et Switch ne permettent pas d’ajouter un serveur par son adresse dans l’interface du jeu. Les joueurs sur console doivent passer par un service de redirection DNS tiers, ou rejoindre la partie d’un ami déjà connecté depuis un ordinateur ou un téléphone.

12. La console du serveur et les commandes courantes

La plupart du temps, il suffit de lire ce que le serveur raconte — arrivées, départs, erreurs. Le fichier est là, et vous n’avez même pas besoin de sudo :

Shell
tail -f /opt/minecraft/bedrock/console.log

Ctrl-C pour en sortir. Notez que screen n’écrit ce fichier que par à-coups : une ligne peut mettre une dizaine de secondes à y apparaître. Ce n’est pas un blocage.

Extrait du journal du serveur montrant la version 1.26.52.3, le nom du monde et la mention Server started
Les trois lignes à chercher dans le journal après un démarrage réussi.

Pour parler au serveur, attachez-vous à sa console :

Shell
sudo -u minecraft screen -x bedrock

Pour en sortir sans arrêter le serveur : Ctrl-A puis D. N’écrivez jamais stop dans la console pour vous en aller — cela éteindrait le serveur.

Vous pouvez aussi envoyer une commande sans vous attacher du tout. Remplacez le texte entre guillemets, en gardant le \015 à la fin (c’est la touche Entrée) :

Shell
sudo -u minecraft screen -S bedrock -p 0 -X eval 'stuff "allowlist add UnNouveauJoueur\015"'
Une commande allowlist list envoyée au serveur sans s’y attacher, et la réponse du serveur dans le journal
La commande part sans qu’on s’attache à la console, et la réponse arrive dans le journal quelques secondes plus tard.

Les commandes les plus utiles, à taper dans la console ou à envoyer de cette façon :

CommandeEffet
——
allowlist add <gamertag>Ajoute un joueur à la liste d’autorisation, et l’inscrit dans le fichier
allowlist remove <gamertag>Le retire
allowlist listAffiche la liste active
allowlist reloadRecharge le fichier après une modification à la main
op <joueur>Donne les droits d’opérateur (persistants)
deop <joueur>Les retire
kick <joueur> <raison>Expulse un joueur, avec un message
changesetting difficulty hardChange la difficulté sans redémarrer
changesetting allow-cheats trueActive les commandes en jeu
stopArrête le serveur en sauvegardant le monde

13. Sauvegarder automatiquement

Une sauvegarde par nuit, conservée deux semaines. Le script arrête le service le temps de copier le monde — quelques secondes — ce qui garantit une copie cohérente, puis le relance seulement s’il tournait avant.

Shell
sudo tee /usr/local/sbin/minecraft-sauvegarde >/dev/null <<'SCRIPT'
#!/bin/bash
set -euo pipefail
DEST=/opt/minecraft/sauvegardes
SOURCE=/opt/minecraft/bedrock
ETAIT_ACTIF=non
if systemctl is-active --quiet minecraft-bedrock; then
  ETAIT_ACTIF=oui
  systemctl stop minecraft-bedrock
fi
mkdir -p "$DEST"
ARCHIVE="$DEST/bedrock-$(date +%Y-%m-%d-%H%M).tar.gz"
tar -czf "$ARCHIVE" -C "$SOURCE" worlds server.properties allowlist.json permissions.json keys
chmod 600 "$ARCHIVE"
if [ "$ETAIT_ACTIF" = oui ]; then
  systemctl start minecraft-bedrock
fi
find "$DEST" -name 'bedrock-*.tar.gz' -mtime +14 -delete
echo "Sauvegarde terminée : $ARCHIVE"
SCRIPT
sudo chmod +x /usr/local/sbin/minecraft-sauvegarde

Le service et la minuterie qui l’appellent chaque nuit à 4 h 30 :

Shell
sudo tee /etc/systemd/system/minecraft-sauvegarde.service >/dev/null <<'UNIT'
[Unit]
Description=Sauvegarde du serveur Minecraft Bedrock

[Service]
Type=oneshot
ExecStart=/usr/local/sbin/minecraft-sauvegarde
UNIT
sudo tee /etc/systemd/system/minecraft-sauvegarde.timer >/dev/null <<'UNIT'
[Unit]
Description=Sauvegarde quotidienne du serveur Minecraft Bedrock

[Timer]
OnCalendar=*-*-* 04:30:00
Persistent=true

[Install]
WantedBy=timers.target
UNIT
sudo systemctl daemon-reload
sudo systemctl enable --now minecraft-sauvegarde.timer

Pour tester tout de suite, et pour voir la prochaine exécution prévue :

Shell
sudo /usr/local/sbin/minecraft-sauvegarde
systemctl list-timers minecraft-sauvegarde --no-pager
Le script de sauvegarde affiche le chemin de l’archive créée, puis la liste des archives présentes
Une sauvegarde prend environ une seconde sur un monde neuf, et le service redémarre tout seul.

Le dossier des sauvegardes est fermé aux autres utilisateurs, puisque les archives contiennent la clé d’identité. Pour voir ce que vous avez :

Shell
sudo ls -lh /opt/minecraft/sauvegardes/

Une sauvegarde qui reste sur la même machine ne protège pas d’une perte du serveur : copiez périodiquement ce dossier ailleurs.

Pour restaurer un monde :

Shell
sudo systemctl stop minecraft-bedrock
sudo -u minecraft tar -xzf /opt/minecraft/sauvegardes/NOM-DE-L-ARCHIVE.tar.gz -C /opt/minecraft/bedrock
sudo systemctl start minecraft-bedrock

14. Mettre à jour le serveur Bedrock

Quand Minecraft se met à jour, les joueurs ne peuvent plus entrer tant que le serveur n’a pas suivi. Ce script compare la version installée à celle que publie Mojang, sauvegarde, met à jour si nécessaire, et ne touche ni au monde, ni à votre configuration, ni à la liste d’autorisation.

Shell
sudo tee /usr/local/sbin/minecraft-maj >/dev/null <<'SCRIPT'
#!/bin/bash
set -euo pipefail
API=https://net-secondary.web.minecraft-services.net/api/v1.0/download/links
CIBLE=/opt/minecraft/bedrock

LIEN=$(wget -qO- "$API" | grep -o 'https://[^"]*bin-linux/bedrock-server-[0-9.]*\.zip' || true)
if [ -z "$LIEN" ]; then
  echo "Impossible d'obtenir le lien de téléchargement officiel." >&2
  exit 1
fi
NOUVELLE=$(basename "$LIEN" .zip | sed 's/bedrock-server-//')
INSTALLEE=$(cat "$CIBLE/version.txt" 2>/dev/null || echo inconnue)
if [ "$NOUVELLE" = "$INSTALLEE" ]; then
  echo "Déjà à jour (version $INSTALLEE)."
  exit 0
fi

echo "Mise à jour : $INSTALLEE -> $NOUVELLE"
/usr/local/sbin/minecraft-sauvegarde
wget -qO /tmp/bedrock-maj.zip "$LIEN"
systemctl stop minecraft-bedrock
unzip -oq /tmp/bedrock-maj.zip -x server.properties allowlist.json permissions.json -d "$CIBLE"
echo "$NOUVELLE" > "$CIBLE/version.txt"
chown -R minecraft:minecraft "$CIBLE"
chmod +x "$CIBLE/bedrock_server"
systemctl start minecraft-bedrock
rm -f /tmp/bedrock-maj.zip
echo "Serveur mis à jour en version $NOUVELLE."
SCRIPT
sudo chmod +x /usr/local/sbin/minecraft-maj

Lancez-la quand vous le souhaitez :

Shell
sudo /usr/local/sbin/minecraft-maj
Le script de mise à jour répond que le serveur est déjà à jour en version 1.26.52.3
Lancée alors que rien n’a changé, la commande ne touche à rien.

Nous conseillons de la lancer à la main, après avoir vérifié que la mise à jour ne casse rien pour vos joueurs, plutôt que de l’automatiser.

15. Dépannage

SymptômeCause la plus probableSolution
———
« Impossible de se connecter au monde »Le port TCP 19132 n’est pas joignable de l’extérieurTest curl de la section 10, puis la règle de pare-feu de la section 3
Le joueur se connecte, puis est déconnecté aussitôtPlage UDP fermée, ou différente de server-udp-portsLa plage du pare-feu (section 3) et celle du fichier (section 6) doivent être identiques
Le journal affiche « TRANSPORT TYPE ERROR »transport mis à raknetLe remettre à nethernet (section 6), puis redémarrer le service
`sudo ss -ltnp \grep 19132` ne retourne rienService arrêté ou en échecsystemctl status, puis le journal
Le joueur voit le serveur mais est refusé à l’entréeGamertag absent de la liste d’autorisation, ou mal orthographiéSection 7, puis allowlist reload
« Il faut réaccepter la confiance du serveur » à chaque redémarrageClé d’identité absenteSection 8
Le téléchargement reste figé sans messageRequête faite avec curlUtiliser wget, comme à la section 5
bedrock_server: cannot execute binary fileServeur ARM (aarch64)Il n’existe pas de version ARM ; il faut une machine x86-64
Le service redémarre en boucleMonde corrompu, mémoire insuffisanteLire le journal du serveur : tail -50 /opt/minecraft/bedrock/console.log
Le monde a perdu la dernière partie jouéeProcessus tué sans la commande stopToujours passer par systemctl stop ou restart
systemctl stop se termine en « FAILURE » instantanémentLa deuxième ligne ExecStop manque dans le serviceSection 9 : sans elle, systemd tue le serveur avant la sauvegarde

Deux journaux à ne pas confondre : systemctl raconte la vie du service, et console.log ce que dit le serveur de jeu lui-même. C’est presque toujours le second qui contient la réponse.

Shell
tail -50 /opt/minecraft/bedrock/console.log
sudo systemctl status minecraft-bedrock --no-pager
sudo ufw status verbose

Annexe A — Changer le port SSH sous Ubuntu 26.04

Déplacer SSH sur un autre port réduit énormément le bruit des robots. Attention : depuis Ubuntu 22.10, modifier Port dans /etc/ssh/sshd_config ne change plus rien — le service est activé par socket systemd, et c’est le socket qui décide du port. C’est la principale différence avec notre tutoriel pour Ubuntu 20.04.

Gardez votre session SSH actuelle ouverte pendant toute l’opération, et testez la nouvelle avant de fermer l’ancienne. Ici, le port 22222 :

Shell
sudo ufw allow 22222/tcp comment 'SSH'
sudo mkdir -p /etc/systemd/system/ssh.socket.d
sudo tee /etc/systemd/system/ssh.socket.d/port.conf >/dev/null <<'CONF'
[Socket]
ListenStream=
ListenStream=22222
CONF
sudo systemctl daemon-reload
sudo systemctl restart ssh.socket
sudo ss -ltnp | grep 22222

Ouvrez un second terminal et vérifiez que la connexion passe : ssh -p 22222 utilisateur@adresse. Une fois que c’est confirmé, refermez l’ancien port :

Shell
sudo ufw delete allow OpenSSH
sudo ufw status verbose

Annexe B — Comprendre le changement de transport

Si vous avez déjà monté un serveur Bedrock il y a quelques années, la section 3 vous a sans doute étonné : où est passé le fameux « UDP 19132 » ?

Avant, c’était RakNet. Le serveur écoutait directement en UDP sur 19132 (IPv4) et 19133 (IPv6). Le client envoyait un paquet à cette adresse, le serveur répondait, et le tour était joué. Une seule règle de pare-feu suffisait, et les outils de surveillance pouvaient interroger un serveur pour savoir s’il était vivant.

Aujourd’hui, c’est NetherNet, bâti sur WebRTC. Le serveur ouvre un socket TCP à double pile sur server-port et y parle HTTP : c’est la négociation. Le client et le serveur s’entendent au passage sur une connexion UDP distincte, dont le port est pris dans la plage server-udp-ports, et c’est elle qui porte la partie. D’où les deux règles de pare-feu, et d’où le fait qu’aucun port UDP n’apparaît en écoute quand le serveur est au repos.

Trois conséquences pratiques :

  • server-portv6 ne sert plus à rien en NetherNet — un seul socket à double pile écoute pour IPv4 et IPv6 à la fois. La propriété reste dans le fichier, simplement ignorée.
  • Les listes de serveurs et les outils de supervision qui interrogent l’ancien port UDP ne verront pas votre serveur. Pour vérifier qu’il est vivant, servez-vous du test curl de la section 10.
  • Mojang recommande un mandataire inverse (nginx, HAProxy) devant le port de signalisation pour un serveur exposé à l’internet, puisqu’il s’agit de trafic HTTP ordinaire : cela permet d’y appliquer des limites de débit. Ce n’est pas nécessaire pour un serveur familial, mais c’est à considérer si le vôtre devient populaire.

Le mode raknet existe toujours dans server.properties, et il rouvre bien les ports UDP d’autrefois. Mais le serveur y inscrit une erreur explicite dans son journal — « dans cette version, NetherNet est le seul transport pris en charge » — et les joueurs ne peuvent pas se connecter. Ne comptez pas dessus.


Références

Les captures d’écran de cet article proviennent d’une installation réelle sur Ubuntu 26.04 LTS, faite en suivant ces mêmes étapes. L’adresse IP y est remplacée par une adresse réservée à la documentation.


Commentaires

Laisser un commentaire

Votre adresse courriel ne sera pas publiée. Les champs obligatoires sont indiqués avec *