# satisfactory_server

Serveur dédié **Satisfactory** sur gpu-01 — installé via **steamcmd** (login anonyme, app
Steam `1690800`), lancé par systemd (`satisfactory-server.service`).

## Variables (defaults)

| Variable | Défaut | Rôle |
|---|---|---|
| `satisfactory_user` | `satisfactory` | Utilisateur système du service |
| `satisfactory_home` | `/srv/satisfactory` | Home + racine d'install |
| `satisfactory_install_dir` | `/srv/satisfactory/server` | Fichiers du jeu (~10 Go) |
| `satisfactory_port` | `7777` | Jeu (UDP) + API HTTPS (TCP) |
| `satisfactory_reliable_port` | `8888` | Reliable Messaging (TCP, ≥ 1.1) — **bloqué = kick à ~60 s** |
| `satisfactory_update_on_start` | `true` | `steamcmd +app_update` en `ExecStartPre` à chaque (re)start |
| `satisfactory_memory_max` | `16G` | `MemoryMax` systemd — protège llama-server (32 Go partagés) |
| `satisfactory_nice` | `5` | Priorité CPU réduite vs llama-server |

## Caveats

- **Premier run long** : le task d'installation télécharge ~10 Go depuis Steam
  (guardé par `creates:` — ne rejoue jamais). Prévoir 10-30 min selon le débit.
- **Mises à jour du jeu** : gérées par l'`ExecStartPre` du service (à chaque restart),
  pas par Ansible. `systemctl restart satisfactory-server` = update + relance.
- **Sauvegardes** : `~satisfactory/.config/Epic/FactoryGame/Saved/SaveGames/server/`
  — **non sauvegardées ailleurs** (pas de backup automatisé, gap connu).
- **Config serveur** (nom, mot de passe admin) : se fait **en jeu** à la première
  connexion (menu Server Manager), pas par fichier.
- **RAM** : usine late-game > 12 Go possible. `MemoryMax=16G` fait tuer le jeu par
  l'OOM-killer plutôt que d'affamer le slot LLM (:1234) — augmenter si besoin via host_vars.
- **Réseau** : ton PC (192.168.1.x) joint gpu-01:7777 via storage-01 — la chaîne
  `forward` du rôle `gateway` autorise déjà tout le trafic LAN domestique → LAN cluster.
  Dans le jeu : ajouter le serveur avec l'adresse `192.168.10.20:7777`.
- Les ports firewalld `7778/udp` et `27015/udp` présents sur gpu-01 sont des restes
  des anciens ports « Experimental » (avant la 1.0) — inutiles désormais.
