Files
mc/server

SurviePote — Serveur (plug-and-play)

Serveur Minecraft 26.3 + Fabric Loader 0.20.0, pré-configuré en « défauts survie ».

Prérequis

  • Java 21+ (java -version)
  • Port 25565/TCP ouvert/redirigé vers la machine du serveur
  • Adresse publique : mcpv.ihorizon.org

Premier lancement

cd server
echo "eula=true" > eula.txt   # déjà présent (eula=false) : à passer à true
./start.sh                    # installe le runtime automatiquement si absent, puis démarre

(Sous Windows : start.bat, même comportement.)

Le runtime Fabric (jars vanilla/Fabric, libraries/, versions/, .fabric/) n'est pas versionné (voir .gitignore) : il est (re)généré par setup.sh, appelé automatiquement par start.sh s'il manque, ou manuellement :

cd server
nix-shell .. --run 'bash server/setup.sh'   # ou : ./setup.sh (avec Java dans le PATH)

Au premier démarrage, le serveur génère world/, config/, logs/, etc. Pour régénérer le monde (ex. changer de level-type), stoppe le serveur et supprime world/.

Contenu

Fichier Rôle
setup.sh / setup.bat Installe/repare le runtime Fabric (télécharge vanilla + lanceur Fabric)
fabric-server-launch.jar Lanceur Fabric (généré par fabric-installer 1.1.2 — non versionné)
server.jar Serveur Minecraft 26.3 vanilla (téléchargé par l'installeur — non versionné)
fabric-installer.jar Installeur (pour réinstaller/réparer — non versionné)
mods/ 46 mods serveur (copie physique) — voir mods/SOURCE.md
config/ Configs générées au premier lancement (non versionnées)
server.properties Config plug-and-play (survie, normal, 20 joueurs)
eula.txt Passer à eula=true avant de lancer
start.sh / start.bat Scripts de lancement (4 Go RAM, nogui)
ecosystem.config.cjs Config PM2 (démarre le serveur dans le nix-shell, Java 25)

Mods

  • Inclus (46) : gameplay/contenu (Better Combat, BOP, BCLib/Better End, Waystones, Backpacks, Drawers, VeinMiner, Tree Harvester, Jade, JEI, etc.). Détail dans mods/SOURCE.md.
  • Exclus (15, client-only) : sodium, iris, continuity, dynamic-fps, xaerominimap, xaeroworldmap, skinlayers3d, waveycapes, capes, chat_heads, morechathistory, fast-ip-ping, modmenu, appleskin, vanillarice. À garder côté client uniquement.
  • Resourcepacks/shaders : jamais côté serveur.

Config / monde

  • config/ : généré au premier lancement ; dépose ici les customs précis quand ils seront définis.
  • world/ : généré au premier lancement (level-name=world, graine aléatoire, pas de level-seed fixe).
  • level-type=minecraft:normal par défaut ; alternative commentée dans server.properties pour Biomes O' Plenty.

Réseau

  • server-port=25565, online-mode=true, white-list=false.
  • server-ip=10.7.0.2 : le serveur n'écoute que sur l'interface portant cette IP (VPN). Laisser vide = écouter sur toutes les interfaces (0.0.0.0).
  • Ouvre le port 25565/TCP (box/pare-feu) et pointe mcpv.ihorizon.org vers l'IP publique.

PM2 (daemon)

ecosystem.config.cjs lance le serveur dans le nix-shell du repo (shell.nix → jdk25), sans dépendre du Java du système. Les chemins sont résolus depuis le fichier (__dirname) : server/ et la racine du repo.

cd /srv/mc/server
pm2 start ecosystem.config.cjs
pm2 logs surviepote-mc
pm2 restart surviepote-mc
pm2 stop surviepote-mc

pm2 save                      # mémorise la liste des process
sudo pm2 startup systemd -u anais --hp /home/anais   # relance au boot

Équivalent manuel de la commande lancée par PM2 :

cd /srv/mc/server
nix-shell /srv/mc --run "bash /srv/mc/server/start.sh"

PM2 ne relaie pas la console interactive : utilise pm2 logs pour la sortie et pm2 sendSignal/pm2 stop (SIGINT → sauvegarde propre via le shutdown hook Java).