Konfiguracja Sunshine i Moonlight: samodzielne hostowanie i utrzymanie

Jeśli potrzebujesz niskich opóźnień dla zdalnego dostępu lub streamingu gier z własnego komputera, Sunshine + Moonlight są atrakcyjne: natywne klienci na wiele platform, doskonałe opóźnienia i brak obowiązkowego konta w chmurze.
If you want low-latency remote access or game streaming from your own PC, Sunshine + Moonlight is attractive: native clients across platforms, excellent latency, and no mandatory cloud account. The catch is operational — getting the stack running is the easy part; keeping it reliable, secure, and reachable without surprises is the quiet, recurring work this walkthrough will make explicit.
Co właściwie robią Sunshine i Moonlight
Sunshine to komponent hosta/serwera, który uruchamiasz na maszynie, z której chcesz streamować. Przechwytuje obraz/dźwięk, koduje klatki i udostępnia usługę, do której łączy się Moonlight (klient). Moonlight to klient: Windows, macOS, Linux, iOS, Android, a nawet niektóre smart TV mają porty lub buildy. Razem implementują streaming w stylu GameStream z nowoczesnymi kodekami i niskimi opóźnieniami.
Wybierz model łączności — relaye, direct lub zarządzane przez Tenvo
Są cztery praktyczne sposoby, by uczynić Sunshine dostępnym z internetu. Wymieniam je wraz z obciążeniem operacyjnym, którego należy się spodziewać.
- Tenvo managed relay (zalecane, chyba że zasady zabraniają infrastruktury osób trzecich). Otrzymujesz wieloregionowe relaye utrzymywane za ciebie; dla większości klientów nie ma potrzeby pracy z certyfikatami, NATem ani routerem. Cennik Tenvo: Free $0 / Lite $2.99/mo / Pro $7.99/mo — uwzględnij to przy oszacowaniu oszczędności na on-call i operacjach.
- Public relay, który uruchamiasz samodzielnie (self-hosted). Warto, gdy wymóg na piśmie to wymusza: zgodność, izolowane VPC, wymogi dotyczące lokalizacji danych. Self-hosting przenosi na twój zespół obowiązki związane z certyfikatami, dostępnością, skalowaniem i przechowywaniem kluczy.
- Połączenia bezpośrednie z przekierowaniem portów lub NAT traversal (UPnP, hole punching). Najniższy koszt infrastruktury, ale kruche: routery domowe, dynamiczne IP, ISP CGNAT i zapory korporacyjne będą to często psuć.
- Sieć prywatna lub VPN (WireGuard, corporate VPN). Bardzo niezawodne, ale wymagają infrastruktury VPN i onboardingu użytkowników. Dobre dla małych zespołów lub laboratoriów, gdzie kontrolujesz oba końce.
Wymagania wstępne — co musisz załatwić przed instalacją
- Host OS: aktualna dystrybucja Linux (Ubuntu 22.04 / Debian 12 to popularne wybory); Windows i niektóre macOS są wspierane, ale Linux jest najczęściej używany dla hostów bez głowy.
- GPU/sterowniki: dla sprzętowego kodowania zwykle chcesz obsługiwanej karty (NVIDIA, AMD) i sterownika, który udostępnia enkoder. Na Linux oznacza to pakiety dostawcy — polityka aktualizacji sterowników GPU ma znaczenie (często wymaga kompatybilności jądra lub X/Wayland).
- Sieć: jeśli planujesz używać relay, upewnij się, że ruch wychodzący TLS (443/HTTPS) jest dozwolony. Dla połączeń bezpośrednich potrzebny będzie stabilny publiczny IP lub dynamic DNS + przekierowanie portów i dostęp do routera.
- Certyfikaty: dla wystawienia do internetu użyj zautomatyzowanego rozwiązania TLS (Caddy, certbot, acme.sh). Jeśli hostujesz relay samodzielnie, będziesz musiał samodzielnie obsłużyć wydawanie i odnawianie certyfikatów.
- Urządzenia klienckie: zainstaluj Moonlight na platformach, z których będą korzystać użytkownicy. Najpierw przetestuj parowanie w LAN, zanim cokolwiek udostępnisz do internetu.
Krok po kroku: instalacja i konfiguracja Sunshine na Linux (przykładowy workflow)
To pragmatyczny przykład dla hosta Linux (zastąp krokami Windows/macOS, jeśli wolisz natywne instalatory). Unikam konkretnych numerów wersji Sunshine, bo metody dystrybucji się zmieniają — pobierz oficjalny release z repozytorium projektu na GitHub lub z repo pakietów, aby mieć najnowszy stabilny build.
1) Przygotuj system # Zadbaj o aktualność pakietów sudo apt update && sudo apt upgrade -y 2) Zainstaluj sterowniki GPU (przykład: NVIDIA) # Na Ubuntu 22.04 sudo apt install -y nvidia-driver-535 # wybierz sterownik dostawcy, którego wymaga twoja GPU 3) Utwórz dedykowanego użytkownika dla Sunshine sudo useradd -r -m -d /var/lib/sunshine -s /usr/sbin/nologin sunshine 4) Pobierz Sunshine i umieść binaria # Pobierz oficjalny release (tarball lub pakiet) i rozpakuj do /usr/local/bin sudo mkdir -p /etc/sunshine /var/lib/sunshine sudo install -m 0755 /path/to/sunshine /usr/local/bin/sunshine 5) Przykładowa jednostka systemd (/etc/systemd/system/sunshine.service) [Unit] Description=Sunshine game streaming host After=network.target [Service] User=sunshine Group=sunshine ExecStart=/usr/local/bin/sunshine --config /etc/sunshine/config.toml Restart=on-failure [Install] WantedBy=multi-user.target sudo systemctl daemon-reload sudo systemctl enable --now sunshine 6) Firewall: otwieraj tylko to, czego potrzebujesz # Jeśli używasz tylko zarządzanego relay, potrzebne jest tylko wychodzące TLS. Dla połączeń bezpośrednich otwórz porty, które Sunshine reklamuje, oraz wybrane porty TCP/UDP. # Przykład (ufw): sudo ufw allow from 192.168.0.0/16 to any port 47999 proto tcp # dostosuj do swojej konfiguracji 7) TLS / certyfikaty # Dla wystawienia do internetu użyj serwera z ACME (Caddy lub certbot) by uzyskać cert dla FQDN. Jeśli uruchamiasz relay, zweryfikuj jego wymagania TLS.
Dwie praktyczne wskazówki: trzymaj konfigurację Sunshine pod kontrolą wersji (/etc/sunshine/config.toml) i uruchamiaj binarium jako nieuprzywilejowany użytkownik. Przetestuj parowanie w LAN zanim ruszysz z DNS lub certyfikatami.
Parowanie i konfiguracja klienta — co się naprawdę dzieje
Przy pierwszym połączeniu Moonlight i Sunshine wymieniają poświadczenia parowania. Typowy przebieg: uruchom Sunshine na hoście, otwórz Moonlight na kliencie, wykryj hosta (odkrywanie LAN lub ręczne IP/FQDN), poproś o parowanie, zaakceptuj na hoście — zazwyczaj przez lokalny prompt lub krótki kod. Po sparowaniu Moonlight przechowuje klucz i łączy się ponownie bez interaktywnego potwierdzenia, dopóki nie cofniesz parowania na hoście.
Jeśli używasz relay (Tenvo lub self-hosted), wykrywanie często odbywa się przez usługę relay, dzięki czemu klient może dotrzeć do hosta stojącego za NAT bez przekierowań portów. Operacyjna uwaga: używając relay stron trzecich, TLS kończy się na tym relayu — operator relay ma techniczną możliwość obserwacji lub przechwycenia ruchu, jeśli zechce. Weź to pod uwagę przy decyzjach dotyczących zgodności i zaufania.
Ciągłe utrzymanie: ciche zobowiązania, które przejmujesz
Uruchomienie własnego hosta Sunshine to nie projekt „ustaw i zapomnij”. Zaplanuj te powtarzalne zadania:
- Odnawianie certyfikatów: jeśli masz publiczne TLS, automatyzuj odnawianie (Let's Encrypt poprzez certbot lub Caddy). Zweryfikuj raportowanie auto‑renew i przetestuj ścieżkę przeładowania dla Sunshine, aby serwis wczytywał nowe certy bez ręcznych restartów.
- Aktualizacje OS i sterowników: comiesięczne poprawki bezpieczeństwa; aktualizacje sterowników GPU w harmonogramie testowym przed wdrożeniem produkcyjnym. Sterowniki często powodują regresje w streamingu i audio.
- Kopie zapasowe konfiguracji i kluczy: przechowuj /etc/sunshine i klucze parowania w backupach konfiguracji. Jeśli stracisz klucze parowania, użytkownicy będą musieli się ponownie sparować.
- Monitoring i alerty: kontrole dostępności (external synthetic test), monitorowanie dysku/CPU/GPU i logów. Zaplanuj SLO dla dostępności oraz miejsce, gdzie potrzebna jest osoba on-call przy awarii hosta w nocy.
- Rotacja i retencja logów: logi streamingu szybko rosną; rotuj logi i usuwaj stare zapisy. Zdecyduj, które logi musisz przechowywać do audytu i jak długo.
- Skalowalność i failover: jeśli masz wiele hostów lub lokalizacji, przetestuj failover. Pojedynczy self-hosted relay w jednym regionie to pojedynczy punkt awarii; Tenvo's multi-region managed relay usuwa ten szczegół operacyjny.
- Cykl życia użytkownika: cofaj parowania, gdy ludzie odchodzą, i audytuj sparowane urządzenia kwartalnie.
Oszacowanie czasu: spodziewaj się 1–2 godzin na instalację i testy dla jednego hosta, potem praca bieżąca mierzona w minutach tygodniowo dla małych konfiguracji (sprawdzenia certyfikatów, aktualizacje). Dla flot licz czas pełnoetatowy na łatki, monitoring i reagowanie na incydenty.
Rozwiązywanie problemów: praktyczne tryby awarii i naprawy
- Brak wykrywania w LAN — sprawdź mDNS/UPnP i lokalny firewall. Niektóre przełączniki korporacyjne blokują multicast; przetestuj przez ping do hosta po IP i spróbuj połączenia ręcznego po FQDN lub IP, zamiast polegać na wykrywaniu.
- Czarny ekran lub zniekształcone klatki — zwykle konflikt sterownika GPU lub kompozytora. Spróbuj sesji bez kompozycji lub zaktualizuj sterownik. Na Wayland sprawdź wsparcie kompozytora dla przechwytywania.
- Brak dźwięku — potwierdź, że backend audio jest ustawiony poprawnie (PulseAudio/pipewire) i że Sunshine jest skonfigurowany do przechwytywania właściwego sinka.
- Wysokie opóźnienia — sprawdź ścieżkę sieciową i ustawienia kodowania. Obniż bitrate lub zmień preset enkodera; przetestuj w LAN, by odseparować problemy GPU/kodowania od problemów sieciowych.
- Parowanie nie udaje się wielokrotnie — wyczyść stare klucze (/etc/sunshine/pairs lub podobne) i rozpocznij ponownie parowanie; obserwuj logi systemowe (journalctl -u sunshine) pod kątem błędów.
If you want deeper security context or need to avoid port forwarding entirely, see our guide Remote Desktop Without Port Forwarding Explained and the security threat model in Is Remote Desktop Secure? An Honest Threat Model. If your requirement is full self-hosting, read Self-Hosted Remote Desktop: Why, How, and What Breaks before you commit.
Ostatnie uwagi — kiedy warto self-hostować, a kiedy opłaca się relay zarządzany
Self-hosting Sunshine i relay ma sens tylko wtedy, gdy polityka lub izolacja sieciowa zmusza cię do takiego rozwiązania. W przeciwnym razie zarządzany relay jest często tańszy w rzeczywistych kosztach operacyjnych: kupujesz dostępność, zarządzanie certyfikatami, multi-regionowy failover i czyjś pager. Tenvo’s managed relay to pragmatyczny domyślny wybór, który rekomendujemy: usuwa większość codziennej pracy, pozostawiając ci kontrolę nad hostami i parowaniami. Jeśli wybierasz self-hosting, przeznacz budżet na wymienione wyżej elementy utrzymania — są ważniejsze niż początkowa instalacja.
Ready to try a managed relay or download clients? Get started at Download. If you want a deeper comparison with other tools, see our other write-ups like RustDesk self-hosted setup: Docker + Caddy TLS and our pricing comparisons to understand total cost of ownership.
Gotowy sprawdzić samodzielnie?
Bezpłatne dla 30 urządzeń, bez karty kredytowej. Uruchomienie i połączenie w dwie minuty.