93 lines
3.9 KiB
Markdown
93 lines
3.9 KiB
Markdown
# 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
|
|
|
|
```bash
|
|
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 :
|
|
|
|
```bash
|
|
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.
|
|
|
|
```bash
|
|
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 :
|
|
|
|
```bash
|
|
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).
|