mirror of
https://github.com/Alkatrazz24/Funk-lab.git
synced 2026-07-08 05:34:43 +02:00
feat(ansible): serveur dédié Satisfactory sur gpu-01 (#74)
* 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> * fix(satisfactory): ouvrir le port 8888/tcp Reliable Messaging Depuis la 1.1, le client ouvre un socket TCP :8888 en plus du jeu UDP :7777. Bloqué par firewalld, le join réussissait puis le client était déconnecté (~60 s) avec « connection to the host has been lost » (log client : LogReliableMessaging: Failed to connect to server socket). - firewalld gpu-01 : + 8888/tcp (variable satisfactory_reliable_port) - gateway s01 : DNAT + forward étendus à 8888/tcp - doc : tableau des 3 sockets + piège n°3 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * docs(satisfactory): accès internet via IPv4 full-stack Free Le remap de port Freebox (17777→7777) ne fonctionne pas : le serveur annonce ses ports dans le protocole (externe = interne obligatoire). Option IPv4 full-stack activée → redirections 1:1 7777 tcp+udp + 8888 tcp vers funk-s01, DNAT existant inchangé. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
aaa982f93c
commit
507f4822f0
9 changed files with 290 additions and 1 deletions
71
admin/ops/satisfactory.md
Normal file
71
admin/ops/satisfactory.md
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
# 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 (amis) | `kaya.freeboxos.fr:7777` — redirections Freebox → funk-s01, le DNAT fait le reste |
|
||||
|
||||
> ⚠️ **Le remap de port (ex. 17777→7777) ne marche PAS** : le serveur annonce ses ports
|
||||
> au client dans le protocole (API → port de jeu, jeu → reliable port). Externe = interne
|
||||
> obligatoire ([wiki](https://satisfactory.wiki.gg/wiki/Dedicated_servers)). Free IPv4
|
||||
> partagée ne permettant pas de rediriger < 16384, l'option **IPv4 full-stack** (gratuite,
|
||||
> espace abonné Free) a été activée le 2026-07-03 (IP fixe `82.67.223.17`) pour pouvoir
|
||||
> ouvrir 7777/8888 en 1:1. Redirections Freebox requises (destination **funk-s01**) :
|
||||
> `7777/tcp`, `7777/udp`, `8888/tcp` — ports de début/fin/destination identiques.
|
||||
|
||||
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
|
||||
|
||||
Le serveur utilise **trois sockets** (Satisfactory ≥ 1.1) :
|
||||
|
||||
| Port | Proto | Rôle |
|
||||
|---|---|---|
|
||||
| 7777 | UDP | Jeu |
|
||||
| 7777 | TCP | API HTTPS (Server Manager) |
|
||||
| 8888 | TCP | **Reliable Messaging** — bloqué = déconnexion ~60 s après chaque join |
|
||||
|
||||
- **gpu-01 firewalld** : `7777/tcp+udp` + `8888/tcp` 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 → 192.168.10.20`
|
||||
(7777 TCP+UDP, 8888 TCP) + règles forward associées. 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`.
|
||||
3. **Déconnexion ~60 s après chaque join** (« Your connection to the host has been
|
||||
lost ») : le port **8888/tcp (Reliable Messaging)** n'était pas ouvert. Le join UDP
|
||||
réussit, puis le client tente le socket TCP 8888, se fait rejeter par firewalld et
|
||||
abandonne. Diagnostic dans le log **client**
|
||||
(`.../FactoryGame/Saved/Logs/FactoryGame.log`) :
|
||||
`LogReliableMessaging: Error: Failed to connect to server socket`.
|
||||
Loading…
Add table
Add a link
Reference in a new issue