Files
zima-apps/Apps/steam-moonlight/README.md
T

3.1 KiB

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.