# Steam Moonlight (Scaffold) Detta är en scaffold för hybridspåret (browser + Moonlight) baserat på `josh5/steam-headless`. Kompletterande säkerhetsdokument: - `SECURITY.md` - `MOONLIGHT-RUNTIME-CHECKLIST.md` ## Syfte - Ge en låg-risk default för browserbaserad Steam-desktop. - Ge en separat opt-in-profil för Moonlight/Sunshine. - Isolera högriskinställningar till en explicit profil (`moonlight`). ## Imagepinning - Compose använder immutable referens: - `josh5/steam-headless:debian-0.2.0@sha256:540366bee31297c5679a5006a84dbca039ca62aaab695852b51b5f62dffd2c14` - Repon kräver att `latest` inte används i compose. ## Profiler - `steam` (default): browser-first, lägre risk, ingen host network. - `steam-moonlight` (`profiles: ["moonlight"]`): aktiverar Sunshine + controller/GPU passthrough med högre privilegier. ## Körning - Default (rekommenderad start): - `docker compose -f Apps/steam-moonlight/docker-compose.yaml up -d steam` - Moonlight (opt-in): - `docker compose -f Apps/steam-moonlight/docker-compose.yaml --profile moonlight up -d steam-moonlight` - Innan Moonlight aktiveras: - byt `SUNSHINE_PASS` till ett starkt lösenord, - verifiera `GPU_CARD_DEVICE` och `GPU_RENDER_DEVICE` för rätt GPU. ## Portar - Defaultprofil (`steam`): - `${STEAM_WEB_PORT:-8083}/tcp` för webdesktop. Moonlightprofilen använder `network_mode: host` och tar därför nätverk direkt från host. ## Volymer - Defaultprofil: - `/DATA/AppData/$AppID/home -> /home/default` - `/DATA/AppData/$AppID/games -> /mnt/games` - Moonlightprofil: - `/DATA/AppData/$AppID/moonlight-home -> /home/default` - `/DATA/AppData/$AppID/moonlight-games -> /mnt/games` ## Privilegier och säkerhet Gemensamt: - `no-new-privileges:true` Defaultprofil (`steam`, lägre risk): - `cap_drop: ["ALL"]` - Ingen `network_mode: host` - Inga device mounts - Ingen Sunshine-aktivering som default Moonlightprofil (högrisk): - `ipc: host` - `security_opt: ["seccomp:unconfined", "apparmor:unconfined", "no-new-privileges:true"]` - `cap_drop: ["ALL"]` + `cap_add: [NET_ADMIN, SYS_ADMIN, SYS_NICE]` - `network_mode: host` - Device mounts: `/dev/fuse`, `/dev/uinput`, `/dev/dri/*` - `device_cgroup_rules: ['c 13:* rmw']` ## Säkerhetsavvikelser Denna app innehåller avsiktliga avvikelser, primärt i `moonlight`-profilen. Varför det behövs: - Moonlight/Sunshine och fysisk controller-input kräver i praktiken host-nära åtkomst i denna containerfamilj. Alternativ som utvärderats: - Browser-only (`steam` default): lägre risk men sämre latens/gamepad. - Full `privileged: true`: avvisat i scaffolden för att begränsa attackytan. Risker: - Host network minskar nätverksisolering. - Extra capabilities och device-passthrough ökar konsekvensen vid containerkompromettering. Riskreducering: - Högrisk är opt-in via profil, inte default. - Ingen docker socket-mount används. - Persistent data är begränsad till `/DATA/AppData/$AppID/...`. - Defaultprofilen droppar alla Linux capabilities. ## Status Scaffolden är avsedd för kontrollerad vidareutveckling och verifiering, inte som slutlig hardened release.