Tack till SjslTech för att ha dokumenterat och delat denna verkliga konstruktion. Hans fullständiga videoguide visar hur ZimaBoard 2, Sunshine, Tailscale, Moonlight och en R36S handhållen kan samarbeta som en portabel PC-spelströmningslösning. Denna artikel omorganiserar den konstruktionen till en tydlig systemöversikt och lägger till nätverksförhållanden, detaljer om headless-servern och begränsningar som är värda att förstå innan du återskapar den.
Samarbetsupplysning: Denna artikel skapades i samarbete med SjslTech och baseras på installationen och testerna som visas i hans video. Videobeskrivningen identifierar hans ZimaBoard 2-länk som en affiliatelänk och inkluderar rabattkoden SjslTech. Streamingresultaten varierar beroende på spel, värdkonfiguration, handhållets firmware och nätverksväg.
Snabbt svar: R36S kör inte Windows-spelet själv. Värden kör och renderar spelet, Sunshine kodar videon, Tailscale tillhandahåller en privat väg mellan nätverken, och Moonlight visar strömmen på den handhållna enheten samtidigt som den skickar kontrollerinmatning tillbaka till värden.
Konstruktionen i korthet
Den användbara idén bakom SjslTechs konstruktion är arbetsfördelning. En budgethandhållen enhet kanske inte har hårdvaran eller operativsystemet som krävs för att köra ett PC-spel lokalt, men den kan fortfarande fungera som en streamingklient. Det tyngre arbetet stannar kvar på Windows-värden, medan R36S hanterar videodekodning, nätverk och inmatning.
I videon är servern konfigurerad på Windows 11; SjslTech noterar att processen även gäller för Windows 10. Den kompakta värden är en ZimaBoard 2 single-board server. Den kompletta datapathen ser ut så här:
PC-spel på ZimaBoard 2 → Sunshine → Tailscale-nätverksväg → Moonlight på R36S → kontrollerinmatning skickas tillbaka till värden
| Komponent | Roll i konstruktionen | Vad den inte gör |
|---|---|---|
| ZimaBoard 2 / Windows-värd | Kör PC-spelet, Sunshine och Tailscale. | Den kan inte strömma ett spel smidigt om den inte kan köra och koda spelet smidigt från början. |
| Sunshine | Fångar värddisplayen, kodar sessionen och skickar den till en Moonlight-klient. | Den tillhandahåller inte den privata kors-nätverksvägen som används i denna konstruktion. |
| Tailscale | Placerar värden och handhållet på samma privata tailnet även när de är på olika fysiska nätverk. | Det är inte spelstreaming- eller video-kodningslagret. |
| Moonlight på R36S | Upptäcker eller ansluter till värden, avkodar streamen, visar den och skickar tillbaka kontrollerinmatning. | Det gör inte att handhållet kör Windows-spelet lokalt. |
| R36S Tailscale Manager | Erbjuder ett handhållet-orienterat sätt att installera och hantera Tailscale på en kompatibel R36S-programvaruuppsättning. | Det garanterar inte kompatibilitet med varje klon, bildskärmspanel eller anpassad firmwarebild. |

Varför lägga till Tailscale till Moonlight-spelstreaming?
Moonlight och Sunshine fungerar naturligt när värden och klienten är på samma lokala nätverk. Utmaningen börjar när handhållet lämnar hemmet. Värden är nu bakom en router, R36S bakom en annan, och att exponera en streamingtjänst direkt mot det publika internet medför både installationsproblem och onödig risk.
Tailscale hanterar anslutningslagret. Båda enheterna ansluter till samma krypterade privata nätverk och får identiteter som förblir användbara även när deras lokala IP-adresser ändras. I detta arbetsflöde ansluter Moonlight till värden via dess Tailscale-adress eller namn istället för att förlita sig på offentlig portvidarebefordran.
Det betyder inte att varje fjärrsession kommer ha samma latens. Tailscale försöker etablera en direkt peer-to-peer-väg. När en direkt väg inte är möjlig kan trafiken använda en relä, vilket vanligtvis ökar latensen och minskar tillgänglig bandbredd. Rutten, värdens uppladdningsanslutning och handhållets aktuella nätverk spelar alla roll.
Vad du behöver innan du börjar
- En Windows 10- eller Windows 11-värd som kan köra målspelet och koda en stream samtidigt.
- Sunshine installerat på värden och Moonlight tillgängligt på R36S.
- Tailscale installerat på båda ändpunkterna och inloggade på samma tailnet.
- En kompatibel nätverksadapter för handhållet om dess hårdvara inte har inbyggd Wi-Fi.
- En stabil nätverksanslutning; Ethernet för värden rekommenderas starkt.
- Lokal åtkomst till värden för initial konfiguration och återställning.
Innan du lägger till fjärråtkomst, bekräfta att spelet startar korrekt på värden. SjslTech poängterar en viktig sak i servernoteringarna: om värden redan har svårt att köra ett spel, kommer inte realtidsfångst och kodning att lösa den begränsningen.

Hur SjslTech bygger streamingvägen
Den 17 minuter långa videon följer en rimlig beroendeordning. Sunshine konfigureras först, Tailscale läggs till på servern och handhållet därefter, och Moonlight-parningen sker först efter att båda enheterna dyker upp på det privata nätverket.
- 2:35 — Ställ in Sunshine-servern på Windows.
- 7:12 — Lägg till Tailscale på värden.
- 8:24 — Lägg till Tailscale på R36S.
- 11:57 — Verifiera båda enheterna i Tailscale-instrumentpanelen.
- 12:22 — Para ihop Moonlight-klienten med servern.
- 14:45 — Förbered värden för att köras utan skärm.
- 15:21 — Testa spelstreaming på handhållen enhet.
1. Konfigurera Sunshine på Windows-värden
Installera Sunshine från den officiella projektsidan, öppna sedan dess webbgränssnitt och skapa administrativa uppgifter. Lägg till skrivbordet eller de spel du vill att Moonlight ska starta. Håll applikationen, grafikdrivrutinen och Windows-installationen uppdaterade innan du felsöker prestanda.
Testa Sunshine och Moonlight på det lokala nätverket först när det är möjligt. Ett lyckat lokalt test skiljer streamingkonfiguration från fjärrnätverkskonfiguration. Om den lokala sessionen redan har svart skärm, kontrollproblem eller allvarlig hackighet, kommer tillägg av Tailscale inte att lösa det underliggande Sunshine- eller värdproblemet.
2. Lägg till Tailscale på värden
Installera Tailscale på Windows, logga in och bekräfta att värden är online i administrationspanelen. Notera dess Tailscale-enhetsnamn och privata adress. Använd åtkomstkontroller så att endast avsedda enheter eller användare kan nå värden; ett privat nätverk är mest användbart när medlemskap och behörigheter hålls begränsade.
3. Lägg till Tailscale på R36S
SjslTech använder sin open-source R36S Tailscale Manager för att hantera klientsidan. Följ repositoryts aktuella installations- och kompatibilitetsanvisningar istället för att anta att varje R36S-klon eller anpassad firmwarebild beter sig likadant.
Efter autentisering, kontrollera att både R36S och Windows-värden visas som online i samma tailnet. Denna kontroll i instrumentpanelen är mer än administrativt underhåll: den bekräftar anslutningslagret innan Moonlight-parningen börjar.
4. Para ihop Moonlight med Tailscale-värdadressen
I Moonlight, lägg till värden med dess Tailscale-adress eller ett upplösbart tailnet-namn. Moonlight bör visa en parnings-PIN; godkänn den PIN-koden via Sunshine på värden. När parningen är klar, välj skrivbordet eller ett konfigurerat spel och starta en session.
Om värden visas lokalt men inte på distans, installera inte om alla komponenter direkt. Kontrollera först om båda enheterna är online i Tailscale, om åtkomstkontroller tillåter anslutningen, om Windows-brandväggen tillåter Sunshine och om värden är vaken.

Köra ZimaBoard 2-värden utan skärm
En kompakt server är mest användbar när den inte behöver en skärm, tangentbord och mus anslutna för varje session. SjslTech tar upp användning utan skärm i slutet av guiden, men en pålitlig setup utan skärm kräver mer än att bara koppla ur skärmen.
- Ställ in Sunshine och Tailscale att starta med Windows.
- Förhindra att värden går in i ett viloläge som inte kan återställas på distans.
- Bekräfta att Sunshine kan fånga en aktiv skärm efter att monitorn kopplats bort.
- Om Windows tar bort skärmkontakten, använd en lämplig dummy-skärmadapter eller en testad virtuell skärmlösning.
- Planera en återställningsväg, som lokal åtkomst eller en separat säkrad fjärradministrationsmetod.
- Undvik att försvaga Windows-inloggningssäkerheten bara för att göra automatisk start enklare.
Testa hela sekvensen från uppstart till strömning innan du förlitar dig på den utanför hemmet: starta om värden, lämna den utan skärm, bekräfta att den återansluter till tailnet och anslut sedan från Moonlight.
Vad spelstreamingstestet faktiskt visar
Klockan 15:21 går SjslTech från konfiguration till ett R36S-speltest. Det viktiga resultatet är funktionellt: handhållenheten når värden via Tailscale-vägen, Moonlight tar emot Sunshine-strömmen och kontrollerinmatning når den fjärrstyrda Windows-sessionen.
Detta är värdefull bevisning från verkligheten, men det bör inte tolkas som en universell referenspunkt. Videon fastställer inte en garanterad latens, bithastighet, bildfrekvens eller spelkompatibilitetsresultat för varje nätverk och varje värdarbetsbelastning.
| Demonstrerat i bygget | Beror fortfarande på din miljö |
|---|---|
| Sunshine kan leverera en Windows-session till Moonlight på R36S. | Om ett specifikt spel körs smidigt på din värd. |
| Tailscale kan göra värden nåbar från ett annat nätverk. | Oavsett om anslutningen är direkt eller vidarebefordrad, och den resulterande latensen. |
| R36S kan fungera som en interaktiv streamingklient. | Kvalitet på Wi-Fi-adapter, firmware-stöd, avkodarens beteende och kontrollerkartläggning. |
| En kompakt värd kan förberedas för användning utan skärm. | Beteende vid skärminspelning efter omstart eller borttagning av skärm. |
Hur man justerar strömmen utan att gissa
Det finns inget enda ”bästa” Moonlight-förinställning för varje R36S och varje fjärranslutning. Justera en variabel i taget, börja med den väg som mest sannolikt orsakar fördröjning.
- Stabilisera värddatorns anslutning. Använd Ethernet när det är möjligt och stoppa bakgrundsuppladdningar som konkurrerar om utgående bandbredd.
- Kontrollera Tailscale-rutten. Dess dokumentation om anslutningstyper förklarar direkta och relävägar. En direkt väg är generellt att föredra för interaktiv streaming.
- Börja nära handhållenhetens användbara skärmupplösning. Att skicka betydligt fler pixlar än klienten kan visa förbrukar bandbredd och kodningstid utan att förbättra det synliga resultatet.
- Sänk bitrate innan du ändrar allt annat. Om blockighet, avbrott eller stora fördröjningsspikar försvinner var nätverksvägen troligen överbelastad.
- Testa sedan bildfrekvens och upplösning separat. Att ändra en inställning per test gör orsaken till en förbättring synlig.
| Symptom | Kontrollera först |
|---|---|
| Värden visas inte i Moonlight | Båda enheterna är online i samma tailnet; värdadressen är korrekt; brandväggs- och åtkomstregler tillåter anslutningen. |
| Videon pausar eller blir blockig | Värdens uppladdningsbandbredd, klientens signalstyrka, ruttyp och strömningsbitrate. |
| Inmatningen känns fördröjd | Nätverksfördröjning, användning av relä, värdens bildfrekvens, kodningsbelastning och klientens avkodningsbelastning. |
| Svart skärm efter att monitorn tagits bort | Windows skärmtillgänglighet och Sunshines valda inspelningsenhet. |
| Knappar eller spakar är felaktigt kartlagda | Moonlight, firmware, PortMaster och spel-specifik kontrollerkartläggning; detta är separat från Tailscale-anslutningen. |
Säkerhetsnoteringar för fjärrspelstreaming
Det som gör denna design attraktiv är att Sunshine inte behöver exponeras avsiktligt som en offentlig internettjänst. Håll Sunshine-gränssnittet skyddat med starka uppgifter, håll Windows och alla tre nätverksapplikationer uppdaterade, granska tailnet-medlemskap och begränsa åtkomsten till de enheter som behöver det. Dela inte autentiseringslänkar eller återanvändbara nycklar i skärmdumpar eller offentliga felsökningsinlägg.
Tailscale minskar behovet av offentlig portvidarebefordran i detta arbetsflöde, men ersätter inte grundläggande slutpunktssäkerhet. Alla som får tillgång till Windows-kontot, Sunshine-uppgifterna eller auktoriserade tailnet kan potentiellt nå mer än bara ett spelbibliotek.
Vem den här uppsättningen är för
Den här byggnationen är meningsfull för en hobbyist som redan äger en R36S, vill experimentera med Windows-spelstreaming och värdesätter en kompakt värd som kan vara tillgänglig utan ett skrivbord fullt av kringutrustning. Den är särskilt intressant för lättare PC-spel och för användare som förstår att handhållenheten är en terminal, inte en ersättnings-GPU.
Det är mindre lämpligt när målspelet redan pressar värden till dess gräns, när fjärranslutningen har inkonsekvent latens eller när användaren förväntar sig konkurrenskraftig molnspelsrespons utan justering. Om ditt primära mål är högpresterande AAA-streaming, börja med att validera värdens lokala spel- och kodningsprestanda istället för att anta att nätverksstacken är flaskhalsen.
Slutsats
SjslTechs byggnad är övertygande eftersom varje verktyg har ett tydligt ansvar. ZimaBoard 2 tillhandahåller Windows-värden, Sunshine tillhandahåller strömmen, Tailscale ger privat tillgänglighet över nätverk och Moonlight förvandlar R36S till fjärrskärm och kontroll.
Det starkaste sättet att reproducera det är i lager: gör spelet stabilt på värden, bevisa Sunshine lokalt, ta båda enheterna till samma tailnet, para Moonlight och optimera först då fjärrprestanda och headless-start. Den ordningen förvandlar ett till synes komplicerat fjärrspelsprojekt till en sekvens av testbara steg.
Vanliga frågor
Kör R36S PC-spelet lokalt?
Nej. Windows-värden kör och renderar spelet. R36S tar emot en komprimerad videoström och skickar kontrollinmatning tillbaka via Moonlight.
Behöver jag Tailscale när båda enheterna är hemma?
Inte nödvändigtvis. Sunshine och Moonlight kan fungera på samma lokala nätverk utan Tailscale. Tailscale blir användbart när värden och handhållna enheten är på olika nätverk eller när du vill ha konsekvent privat adressering.
Garantiar Tailscale låg latens vid streaming?
Nej. Den kan skapa en direkt väg, men vissa nätverkskombinationer kräver en relä. Fysisk distans, routing, trängsel, värdens uppladdningsbandbredd och klientanslutning påverkar fortfarande responsiviteten.
Kan ZimaBoard 2 ersätta en högpresterande gaming-PC?
Det beror på spelen och prestandamålet. Streaming tar inte bort värdens beräkningskrav: värden måste köra spelet och koda videon samtidigt. Behandla denna byggnad som en demonstrerad kompakt streamingvärd, inte som ett generellt prestandalöfte för varje PC-spel.
Kan värden köras utan en skärm?
Ja, efter att headless-beteendet har testats. Sunshine behöver fortfarande en användbar Windows-displaykontext, och värden måste förbli vaken, nätverksansluten och kunna starta de nödvändiga tjänsterna efter omstart.
Behöver jag vidarebefordra Sunshine-portar på min router?
Inte för den privata Tailscale-vägen som demonstreras här. Båda ändpunkterna ansluter via tailnet, så undvik att exponera Sunshine direkt mot det offentliga internet om du inte fullt ut förstår och säkrar en alternativ design.
Zima Kampanjnav
Mer att läsa

Vad är RAID och hur fungerar det?
En nybörjarvänlig RAID-guide som täcker RAID 0, 1, 5, 6 och 10, användbar kapacitet, återuppbyggnader, val av NAS-enhet och säkerhetskopieringsbegränsningar.

Jag förvandlade en Ikea Kallax till ett 10-tums rack-homelab med ZimaCube 2
Rackmonterade homelabs låter fantastiskt tills du inser att du inte vill ha en företagsjetmotor som invaderar ditt vardagsrum. Rörelsen med 10-tums mini-rack är motmedlet....

Hur jag migrerade 14 000 foton till ZimaCube 2 utan någon dataförlust — En Immich-migreringsguide
Flytta ditt Immich-bibliotek och PostgreSQL-databas smidigt. Upptäck den exakta 2,5GbE LAN-överföringsprocessen för att uppgradera till ZimaCube 2 utan någon dataförlust.

