Steam Headless
Steam Headless kör en webbaserad Linux-desktop med Steam i container, baserat på LinuxServer image lscr.io/linuxserver/steam.
Syfte
- Ge enkel Steam-access via webbläsare i ZimaOS.
- Hålla v1 med minsta möjliga privilegier.
- Förbereda en separat senare fas för Moonlight-fokuserad streaming.
Portar
3000/tcp(HTTP desktop):${STEAM_HTTP_PORT:-3000}3001/tcp(HTTPS desktop):${STEAM_HTTPS_PORT:-3001}
Volymer
/DATA/AppData/$AppID/config -> /config
All Steam-data (profil, cache, installerade spel) lagras under appens egna AppData-sökväg.
Privilegier och säkerhet
Aktiva säkerhetsinställningar i denna app:
security_opt: ["seccomp:unconfined", "no-new-privileges:true"]cap_drop: ["ALL"]- Ingen
privileged: true - Ingen
network_mode: host - Ingen mount av
/var/run/docker.sock
Motivering:
- LinuxServer Steam använder sandbox/bubblewrap-mönster som normalt kräver
seccomp:unconfinedför att spel/launcher ska fungera stabilt. no-new-privileges:trueochcap_drop: ["ALL"]används för att kompensera med lägsta möjliga capability-yta i övrigt.
Kända tradeoffs:
- På vissa Debian/Ubuntu-hostar kan även
apparmor:unconfinedbehövas. Detta är inte default här av least-privilege-skäl. - Browser-vägen (KasmVNC) är enkel men ger inte samma latens/gamepad-egenskaper som Moonlight.
Säkerhetsavvikelser
Denna app använder en avvikelse från strikt seccomp-default:
seccomp:unconfined
Varför det behövs:
- För kompatibilitet med LinuxServer Steam runtime och dess sandboxade processer.
Alternativ som utvärderats:
- Standard seccomp-profil: blockar delar av förväntad processmodell för Steam/spel.
- Full
privileged: true: avvisat på grund av större attackyta.
Risker:
- Minskad syscall-filtrering jämfört med default seccomp-profil.
- Om container komprometteras finns större möjlighet att anropa kernel-funktioner än med strikt seccomp.
Riskreducering:
- Inga host-network eller docker-socket mounts.
- Capability-surface minimerad med
cap_drop: ["ALL"]. - Isolerad data-path under
/DATA/AppData/$AppID/....
Driftnoteringar
- För GPU-acceleration kan extra device-mounts krävas beroende på host och drivrutiner.
- Om HTTPS används på
3001kan webbläsaren visa certifikatvarning vid första anslutning. - Rekommenderad nästa fas: separat Moonlight/Sunshine-spår som opt-in, med egen riskprofil.