Funk-lab/admin/ops/satisfactory.md
alkatrazz bd169e5e1a 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>
2026-07-02 23:29:47 +02:00

2.3 KiB

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

# é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.