Self-hosted решения для стриминга
Зачем вообще это нужно?
Я рассматриваю следующие юзкейсы:
- Стриминг игр с ПК на клиенты. Клиентом может быть что угодно, главное требование - это 5GHz Wi-Fi,
либо возможность подключения по проводу.
Вместо того, что бы покупать несколько устройств, способных в поддержку современных игр, вы можете обзавестись тонкими клиентами с встроенным GPU (мини-пк, ультрабуки), ПК с dedicated GPU и играть подключаясь к нему с клиентов. - Замена KVM свитча. Если у вас есть несколько ПК (Игровой / Рабочий / Личный / Сервер на Windows), к ним можно подключаться по сети с минимальной задержкой ввода.
За все время протестировано множество решений:
Steam Link
Основным предназначением Steam Link является стриминг игр, но в теории вы можете стримить всё, что можно добавить в библиотеку Steam, включая
приложения или игры из других магазинов.
Плюсы:
- Хорошая интеграция с Steam Deck и устройствами с Steam клиентами - просто нажал и играешь.
- Удобно настраиваются дополнительные клавиши.
- Игры самостоятельно включаются и выключаются.
Минусы:
- Нестабильная работа.
- Отсутствие виртуальных экранов (игры будут в разрешении и с частотой кадров монитора хост ПК).
В целом, я бы пользовался Steam Link, если бы не встретился с артефактами и лагами, но какого-либо решения этим проблемам я найти не смог.
Платформы:
- Хост: macOS, Linux, Windows
- Клиенты: любые
Sunshine и его форки
Sunshine - это логическое продолжение NVIDIA Gamestream protocol, но с поддержкой видеокарт от Intel, AMD и NVIDIA и с открытым исходным кодом.
Подходит как для стриминга игр, так и для обычного удаленного использования ПК.
С ним я прошел:
- RDR2 на Nintendo Switch.
- The Legend of Zelda: Breath of the Wild на Legion Go.
- Doom Eternal на Steam Deck.
Помимо игр, я использовал его для доступа к приложениям на Windows, которых нет на других платформах (например Microsoft Access).
Sunshine
Плюсы:
- Стабильная работа.
- Наличие клиентского приложения почти под все подходящие платформы.
Минусы:
- Отсутствие удобного решения для создания виртуальных экранов повторяющих разрешение и частоту кадров клиента.
Платформы:
- Хост: macOS, Linux, Windows
- Клиенты: любые
Apollo
Форк Sunshine, основным отличием которого является встроенная поддержка виртуальных экранов через SudoDVA.
Плюсы:
- Автоматическая работа с виртуальными экранами.
- Система разрешений для клиентов.
- Синхронизация буфера обмена между клиентом и сервером.
Минусы:
- Отсутствие поддержки систем кроме Windows, так как "взрослых" решений для работы с виртуальными экранами на Linux и macOS сейчас нет.
Платформы:
- Хост: Windows
- Клиенты: любые
Duo
Форк Sunshine, который добавляет поддержку одновременного использования ПК несколькими клиентами.
Плюсы:
- Возможность одновременного использования несколькими клиентами.
- Наличие Sandbox режима для клиентов.
Минусы:
- Для полноценного использования нужно заплатить 10$.
- Закрытый исходный код.
- Нет точной информации о том, как это работает и насколько это безопасно.
- Нет поддержки для других систем, и скорее всего никогда не будет.
Я не смог найти рабочих альтернатив этому приложению, поэтому считаю, что заплатить 10$ стоит того, либо вы можете попытаться обойти это ограничение.
Юзкейсов довольно много - вы можете полноценно использовать ПК пока на нем кто-то играет под другим пользователем или играть на одном ПК одновременно с несколькими
людьми.
Я использовал Duo несколько месяцев и почти не встретил проблем. Единственное что заставило меня перейти на другое решение - это желание упростить свой сетап, так как я не совсем понимал как работает Duo и возникнут ли у меня проблемы с ним в будущем.
Платформы:
- Хост: Windows
- Клиенты: любые
Magic Mirror

Экспериментальный проект эксклюзивно под Linux с Wayland. Может стримить множество приложений на фоне, не блокируя доступ к ПК. В основном, создан для стриминга игр и работает довольно схоже с Steam Link (Сам запускает приложения и управляет их состоянием, не умеет стримить систему полностью).
Плюсы:
- Возможность одновременного использования несколькими клиентами.
- Поддержка Linux.
Минусы:
- Работает нестабильно.
- Есть клиенты только под Linux и macOS
Платформы:
- Хост: Linux с Wayland
- Клиенты: macOS с GUI или Linux через терминал
Чем я пользуюсь сам
Для себя я выбрал Apollo, так как он работает просто и стабильно. Из альтернатив я предлагаю рассмотреть:
- Sunshine, если вы предпочитаете использовать Linux на ПК для игр. Можно изучить возможные решения для виртуальных экранов и самостоятельно реализовать через скрипты.
- Duo, если вы хотите использовать ПК одновременно на нескольких клиентах или использовать его пока кто-то играет.
Технические тонкости
У каждого клиента разное время требуемое для декода стрима, от этого зависит задержка ввода. Сообщество создало таблицу, где указаны клиенты и их decoding performance: SoC-Benchmark. Если ссылка сейчас неактуальна, таблицу можно найти по запросу "Moonlight decoding performance excel".
Если вы пользуетесь Steam Deck, можно столкнуться с нестабильным стримом из-за странной работы Wi-Fi модуля. Решение можно найти в этом Github Issue.
