Moonshine: стриминг игр с Linux-ПК на Moonlight с изоляцией сессий и HDR

Moonshine: стриминг игр с Linux-ПК на Moonlight с изоляцией сессий и HDR

На GitHub опубликован проект Moonshine, программа-хост для стриминга игр с Linux-ПК на любое устройство с клиентом Moonlight. Ввод с клавиатуры, мыши и геймпада передаётся обратно на хост, так что можно играть удалённо так, будто сидишь за компьютером.

Ключевая особенность, изоляция: каждая стрим-сессия и каждое приложение запускаются в собственном композиторе (compositor), полностью отдельно от рабочего стола хоста. Это значит, что хост-ПК остаётся пригодным для другой работы во время стрима, а сам стрим может идти вообще без подключённого монитора (headless-сервер, без HDMI-заглушки).

Moonshine поддерживает аппаратное кодирование видео H.264, H.265 и AV1 через GPU, а также истинный 10-битный HDR для игр, где он есть. Звук передаётся в стерео или в объёмном 5.1/7.1 с низкой задержкой через кодек Opus. У кодирования AV1 пока есть проблема на видеокартах NVIDIA: со временем размер кадров растёт (баг), исправление обещано в версии драйвера 595.44.3.0, до этого разработчик советует использовать H.264 или H.265.

Проект работает только на Linux (проверено на Arch, сообщалось о работе и на других дистрибутивах), требует systemd, а также GPU с поддержкой аппаратного кодирования видео через Vulkan, подходят NVIDIA RTX, AMD RDNA2 и новее, Intel Arc. На стороне клиента нужен Moonlight версии 6.0 или новее; совместимость со старыми версиями и неофициальными портами не гарантируется.

Установка на Arch-подобных системах, через AUR (yay -S moonshine) с последующим включением systemd-сервиса; либо сборка из исходников через cargo. Приложения для трансляции описываются в конфигурационном файле config.toml, а специальные сканеры автоматически находят установленные игры Steam и приложения по .desktop-файлам, так что их не нужно прописывать вручную.

Автор Moonshine сравнивает проект с Sunshine, более известной альтернативой того же назначения: Sunshine поддерживает больше платформ и в целом богаче по функциям, а Moonshine работает только на Linux, зато запускает каждую сессию в изолированном окружении и работает без активного сеанса рабочего стола.

Отдельно подчёркивается ограничение по безопасности: Moonshine не рассчитан на использование в публичных сетях, поскольку лежащий в основе протокол GameStream не шифрует трафик полностью на уровне приложения. Для стриминга через интернет разработчик рекомендует VPN, Tailscale, WireGuard или ZeroTier, и прямо предупреждает не открывать порты Moonshine наружу в интернет.

Ключевые факты

  • Moonshine, open-source сервер для стриминга игр с Linux-ПК на любое устройство с клиентом Moonlight (нужна версия 6.0+)
  • Каждая сессия и каждое приложение запускаются в изолированном композиторе, хост остаётся пригоден для другой работы, поддерживается запуск без монитора (headless)
  • Аппаратное кодирование H.264/H.265/AV1 через GPU (NVIDIA RTX, AMD RDNA2+, Intel Arc), истинный 10-битный HDR, звук до 5.1/7.1 через Opus
  • У AV1-кодирования баг на видеокартах NVIDIA (кадры растут в размере со временем); фикс обещан в драйвере 595.44.3.0, пока рекомендуют H.264/H.265
  • Не предназначен для публичных сетей, трафик GameStream не шифруется полностью, для стриминга через интернет нужен VPN (Tailscale, WireGuard, ZeroTier)

Почему это важно

Moonshine закрывает нишу линуксового хоста для игрового стриминга с упором на изоляцию: в отличие от классических решений, которые занимают рабочий стол хоста целиком, здесь каждая сессия и каждое приложение получают собственное изолированное окружение (compositor). Это позволяет использовать один и тот же компьютер одновременно и как игровой сервер, и для другой работы, а также запускать его вообще без подключённого монитора, как headless-сервер.

Кому это важно

В первую очередь, пользователям Linux, у кого есть игровой ПК с GPU (NVIDIA, AMD или Intel Arc) и желание играть удалённо со смартфона, планшета, телевизора или другого компьютера через клиент Moonlight. Также интересно тем, кто держит домашний headless-сервер и хочет добавить к нему игровой стриминг без покупки отдельного монитора-заглушки.

Как это применить

Установка, через AUR-пакет (yay -S moonshine) с включением systemd-сервиса, либо сборка из исходников через cargo при наличии нужных зависимостей (Rust, Vulkan, Wayland и др.). Игры описываются в config.toml вручную или подхватываются автоматически через встроенные сканеры Steam-библиотеки и .desktop-файлов. Подключение клиента Moonlight выполняется по PIN-коду через веб-страницу пары или из командной строки.

Можно ли доверять

Проект опубликован на GitHub автором hgaiser, конкретные технические детали (протоколы кодирования, требования к GPU, зависимости сборки) описаны подробно и проверяемо, что типично для рабочего open-source репозитория. Автор честно указывает ограничения, экспериментальность AV1-кодирования на NVIDIA и небезопасность протокола для публичных сетей, что говорит скорее о добросовестной документации, чем о рекламном тексте.

Риски и подводные камни

Трафик стрима не шифруется полностью на уровне приложения, использование в публичных сетях без VPN создаёт риск перехвата ввода и видеопотока. Кодирование AV1 сейчас ненадёжно на видеокартах NVIDIA (кадры растут в размере), пока не выйдет исправленный драйвер, стоит использовать H.264 или H.265. Проект работает только на Linux и требует systemd, так что на других системах или урезанных дистрибутивах он неприменим.

«Moonshine не рассчитан на использование в публичных сетях. Лежащий в основе протокол GameStream имеет ограничения, из-за которых трафик не шифруется полностью на уровне приложения. Если нужно стримить через интернет, используйте VPN, Tailscale, WireGuard или ZeroTier. Не открывайте порты Moonshine напрямую в интернет.»

— из документации проекта Moonshine на GitHub