Runbook 04 : VM serveur de jeux (Minecraft moddé)¶
Objectif : VM Debian dans la DMZ GAMES, serveur Minecraft NeoForge géré par systemd, isolé du reste du réseau.
1. Réseau GAMES dans OPNsense¶
- VLAN 70 sur
vtnet0, interfaceGAMES, 10.0.70.1/24, pas de DHCP (serveur en IP fixe). Save, puis Apply. - Alias
RFC1918:10.0.0.0/8,172.16.0.0/12,192.168.0.0/16. - Règles GAMES (port source
anypartout) : DNS et NTP vers GAMES address, Block versRFC1918, Pass vers any. Voir ADR-0004.
2. VM¶
| Paramètre | Valeur | Raison |
|---|---|---|
| ID / nom | 200 / games |
|
| OS | Debian 13 netinst amd64 (empreinte vérifiée) | |
| CPU | 6 cœurs, type host |
Tick mono-thread + ramasse-miettes et génération de chunks |
| RAM | 10 Go, ballooning désactivé | La JVM gère mal la mémoire retirée à chaud |
| Disque | SCSI, discard, iothread, SSD | |
| Réseau | vmbr0, tag 70, VirtIO, pare-feu Proxmox désactivé |
|
| Démarrage | ordre 2, délai 30 s | OPNsense démarre d'abord |
Priorité CPU d'OPNsense : VM 100 → Processors → CPU units à 1000 (100 par défaut) : le routeur garde la main si le CPU sature.
3. Installation Debian¶
- Réseau manuel : 10.0.70.10/24, passerelle et DNS 10.0.70.1.
- Mot de passe root vide (l'utilisateur reçoit
sudo). - Partitionnement guidé, ext4 (ADR-0008).
- Logiciels : uniquement serveur SSH et utilitaires usuels (pas d'environnement de bureau : surface d'attaque).
- Après installation :
sudo apt install qemu-guest-agent, retrait de l'ISO, snapshotpost-install.
Vérification de la DMZ¶
| Depuis la VM | Attendu |
|---|---|
ping 1.1.1.1 |
✅ |
ping deb.debian.org |
✅ (DNS) |
ping 10.0.1.10 |
❌ |
ping 192.168.1.1 |
❌ |
4. Serveur Minecraft¶
sudo apt install openjdk-21-jre-headless unzip
sudo useradd --system --create-home --home-dir /opt/minecraft --shell /usr/sbin/nologin minecraft
- Server pack téléchargé depuis un navigateur (le site du modpack bloque
wget), copié parscp. - Fichiers décompressés en tant qu'utilisateur
minecraft(sudo -u minecraft …) ; en cas de doute :sudo chown -R minecraft:minecraft /opt/minecraft. user_jvm_args.txt:-Xmx8G(2 Go laissés au système et à la mémoire hors tas).server.properties:online-mode=true,white-list=true,enforce-whitelist=true,simulation-distance6 à 8.- Boucle de relance éventuelle du script de démarrage désactivée : systemd s'en charge.
/etc/systemd/system/<serveur>.service :
[Unit]
Description=Serveur Minecraft
After=network-online.target
Wants=network-online.target
[Service]
User=minecraft
WorkingDirectory=/opt/minecraft/<dossier>
ExecStart=/bin/bash startserver.sh
Restart=on-failure
RestartSec=30
TimeoutStopSec=180
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now <serveur>
journalctl -u <serveur> -f
Dépannage rencontré¶
| Symptôme | Cause | Correction |
|---|---|---|
| DNS en échec depuis la DMZ, IP fonctionnelle | Règles DNS/NTP avec un port source à 53/123 | Port source any |
wget du server pack : 403 |
Page web protégée, pas un lien de fichier | Téléchargement navigateur + scp |
| Serveur stable à la main, arrêt après ~30 s sous systemd | Fichiers créés en root, service lancé en minecraft |
chown -R, tests manuels toujours avec sudo -u minecraft |
Diagnostic d'un service : systemctl status (code de sortie : 1 = application, 137 = tué / mémoire, 143 = arrêt demandé), journalctl -u, logs/latest.log.
Critères de réussite¶
- [ ] Service actif, redémarré automatiquement après
rebootde la VM. - [ ] Connexion depuis le LAN à 10.0.70.10.
- [ ] Isolation de la DMZ vérifiée.