Игровой рабочий стол
Selkies-десктоп с GPU для стриминга игр в браузер по WebRTC (NVENC).
Для чего
Базовый шаблон облачного гейминга: образ Selkies EGL Desktop
(ghcr.io/selkies-project/nvidia-egl-desktop) транслирует рабочий стол Linux
в браузер по WebRTC с аппаратным кодированием NVENC. Поверх него
provision.sh конкретной игры доустанавливает саму игру и запускает её в сессии.
Окружение стриминга
vast_hash_id намеренно пустой: образ, проброс портов и переменные окружения
не берутся из шаблона на стороне Vast.ai, а инжектятся в payload запуска
(VastAiProvider::launchInstance) из манифеста приложения
(config/applications.php → supertuxkart.runtime). Так весь рантайм гейминга
живёт в репозитории и воспроизводим. Эффективный набор docker-опций:
-p 8080:8080 # entrypoint.port (Selkies web UI)
-p 3478:3478 # TURN
-p 65532:65532 ... -p 65535:65535 # TURN relay (по одному порту, не диапазоном)
-e SELKIES_BASIC_AUTH_PASSWORD=… # per-launch, из provision_state.password
-e SELKIES_ENCODER=nvh264enc
-e SELKIES_ENABLE_BASIC_AUTH=true
-e SELKIES_TURN_PROTOCOL=tcp
-e SELKIES_TURN_PORT=3478
-e TURN_MIN_PORT=65532
-e TURN_MAX_PORT=65535
-e DISPLAY_SIZEW=1920
-e DISPLAY_SIZEH=1080
WebRTC использует внутренний TURN поверх TCP (площадки Vast/RunPod не дают произвольный UDP). Если стрим подключается, но видео чёрное — это TURN/UDP, а не контейнер.
Предустановленное ПО
Готовы запустить Игровой рабочий стол?
Запустить GPU-сервер