Untrack steam-headless from caddy-autogen branch
This commit is contained in:
@@ -1,72 +0,0 @@
|
|||||||
# 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:unconfined` för att spel/launcher ska fungera stabilt.
|
|
||||||
- `no-new-privileges:true` och `cap_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:unconfined` behö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å `3001` kan webbläsaren visa certifikatvarning vid första anslutning.
|
|
||||||
- Rekommenderad nästa fas: separat Moonlight/Sunshine-spår som opt-in, med egen riskprofil.
|
|
||||||
@@ -1,81 +0,0 @@
|
|||||||
name: steam-headless
|
|
||||||
|
|
||||||
services:
|
|
||||||
steam:
|
|
||||||
image: lscr.io/linuxserver/steam:version-04.02.26
|
|
||||||
container_name: steam-headless
|
|
||||||
restart: unless-stopped
|
|
||||||
shm_size: "1gb"
|
|
||||||
|
|
||||||
environment:
|
|
||||||
TZ: ${TZ}
|
|
||||||
PUID: ${PUID}
|
|
||||||
PGID: ${PGID}
|
|
||||||
STEAM_HTTP_PORT: ${STEAM_HTTP_PORT:-3000}
|
|
||||||
STEAM_HTTPS_PORT: ${STEAM_HTTPS_PORT:-3001}
|
|
||||||
|
|
||||||
ports:
|
|
||||||
- target: 3000
|
|
||||||
published: ${STEAM_HTTP_PORT:-3000}
|
|
||||||
protocol: tcp
|
|
||||||
- target: 3001
|
|
||||||
published: ${STEAM_HTTPS_PORT:-3001}
|
|
||||||
protocol: tcp
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
- type: bind
|
|
||||||
source: /DATA/AppData/$AppID/config
|
|
||||||
target: /config
|
|
||||||
|
|
||||||
# Required by LinuxServer Steam for bubblewrap/game namespaces.
|
|
||||||
security_opt:
|
|
||||||
- seccomp:unconfined
|
|
||||||
- no-new-privileges:true
|
|
||||||
|
|
||||||
# Keep capability surface minimal unless a specific game requires otherwise.
|
|
||||||
cap_drop:
|
|
||||||
- ALL
|
|
||||||
|
|
||||||
x-casaos:
|
|
||||||
envs:
|
|
||||||
- container: TZ
|
|
||||||
description:
|
|
||||||
en_us: Timezone, for example Europe/Stockholm
|
|
||||||
- container: PUID
|
|
||||||
description:
|
|
||||||
en_us: User ID for filesystem permissions
|
|
||||||
- container: PGID
|
|
||||||
description:
|
|
||||||
en_us: Group ID for filesystem permissions
|
|
||||||
ports:
|
|
||||||
- container: "3000"
|
|
||||||
description:
|
|
||||||
en_us: Steam desktop GUI over HTTP
|
|
||||||
- container: "3001"
|
|
||||||
description:
|
|
||||||
en_us: Steam desktop GUI over HTTPS
|
|
||||||
volumes:
|
|
||||||
- container: /config
|
|
||||||
description:
|
|
||||||
en_us: Steam home, configuration, and game files
|
|
||||||
|
|
||||||
x-casaos:
|
|
||||||
architectures:
|
|
||||||
- amd64
|
|
||||||
main: steam
|
|
||||||
category: Games
|
|
||||||
author: Zima Apps Team
|
|
||||||
developer: linuxserver.io
|
|
||||||
icon: https://cdn.simpleicons.org/steam
|
|
||||||
tagline:
|
|
||||||
en_us: Browser-based Steam desktop container for ZimaOS
|
|
||||||
description:
|
|
||||||
en_us: >-
|
|
||||||
Runs LinuxServer Steam as a web-accessible desktop session.
|
|
||||||
Optimized for amd64 and least-privilege defaults, with optional future
|
|
||||||
Moonlight-focused expansion in a later phase.
|
|
||||||
title:
|
|
||||||
en_us: Steam Headless
|
|
||||||
index: /
|
|
||||||
port_map: ${STEAM_HTTPS_PORT:-3001}
|
|
||||||
scheme: https
|
|
||||||
Reference in New Issue
Block a user