feat(ansible): serveur dédié Satisfactory sur gpu-01

- Nouveau rôle satisfactory_server : install steamcmd (login anonyme,
  app 1690800), service systemd avec update auto en ExecStartPre,
  MemoryMax=16G + Nice=5 (protège le llama-server), firewalld 7777 tcp+udp
- Retries steamcmd (« Missing configuration » rc=8 au premier run)
- Fcontext SELinux bin_t sur steamcmd/ et server/ (203/EXEC sinon)
- gateway : DNAT 192.168.1.200:7777 → gpu-01:7777 (TCP+UDP) + forward
- Doc admin/ops/satisfactory.md (accès, exploitation, pièges rencontrés)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
alkatrazz 2026-07-02 23:29:47 +02:00
parent aaa982f93c
commit bd169e5e1a
9 changed files with 262 additions and 1 deletions

49
admin/ops/satisfactory.md Normal file
View file

@ -0,0 +1,49 @@
# Serveur dédié Satisfactory (gpu-01)
Serveur de jeu **Satisfactory** hébergé sur **gpu-01** (192.168.10.20), à côté du
llama-server. Installé par le rôle Ansible **`satisfactory_server`** (steamcmd, login
anonyme Steam, app `1690800`) — service systemd `satisfactory-server`.
## Accès
| Depuis | Adresse |
|---|---|
| LAN domestique (192.168.1.x) | `192.168.10.20:7777` (route via s01) **ou** `192.168.1.200:7777` (DNAT) |
| Internet (optionnel) | port-forward box → `192.168.1.200:7777` (TCP+UDP) — le DNAT fait le reste |
Dans le jeu : **Server Manager → Add Server**. Nom du serveur et mot de passe admin se
définissent **en jeu à la première connexion** (pas de fichier de config).
## Réseau
- **gpu-01 firewalld** : `7777/tcp` + `7777/udp` ouverts (gérés par le rôle).
Les ports `7778/udp` et `27015/udp` encore ouverts sont des restes pré-1.0, inutiles.
- **storage-01 nftables** (rôle `gateway`) : DNAT `192.168.1.200:7777 → 192.168.10.20:7777`
(TCP+UDP) + règle forward associée. Redéploiement : `--tags gateway`.
## Exploitation
```bash
# état / logs (sur gpu-01)
systemctl status satisfactory-server
journalctl -u satisfactory-server -f
# mise à jour du jeu = simple restart (steamcmd +app_update en ExecStartPre)
systemctl restart satisfactory-server
```
- **Install** : `/srv/satisfactory/server` (~10 Go, disque OS), user système `satisfactory`
- **Sauvegardes** : `/srv/satisfactory/.config/Epic/FactoryGame/Saved/SaveGames/server/`
— ⚠️ **aucun backup automatisé** (gap connu, comme etcd/PostgreSQL)
- **Garde-fous ressources** (32 Go partagés avec llama-server) : `MemoryMax=16G` — une
usine late-game qui explose la RAM fait tuer **le jeu**, pas le LLM — et `Nice=5`
(priorité CPU au llama-server). À ajuster via host_vars si besoin.
## Pièges rencontrés à l'installation (2026-07-02)
1. **steamcmd « Missing configuration » (rc=8)** au tout premier `+app_update` — bug
connu steamcmd (app info pas encore en cache). Le rôle fait des retries.
2. **SELinux 203/EXEC** : `steamcmd.sh` extrait depuis /tmp gardait le contexte
`user_tmp_t`, le jeu héritait de `var_t` (/srv) — systemd (init_t) refuse d'exécuter
ces types. Le rôle pose un fcontext **`bin_t`** sur `steamcmd/` et `server/` +
`restorecon`. Symptôme : `Failed at step EXEC ... Permission denied`.