XITRIX / Moonlight-Switch

Moonlight port for Nintendo Switch
770 stars 47 forks source link

[Feature Request] Bake tailscale (or alternative) into Moonlight-Switch #144

Open joshurawr opened 4 months ago

joshurawr commented 4 months ago

This would allow you use moonlight to access your host device(s) from your Switch as a long as you have an internet connection. You wouldn't have to expose the sunshine or gamestream servers to the public internet. In fact, you wouldn't need to expose any ports at all. That could be especially useful for situations where we don't have network administration access.

I don't think it's practical to implement this as a system level feature for Switch, but there are at least two potential solutions to implement tailscale directly into an application. One is tsnet, the other is userspace networking mode.

https://tailscale.com/blog/tsnet-virtual-private-services https://tailscale.com/kb/1112/userspace-networking

I know it's a pipe dream, but it would be really cool to seamlessly use moonlight on switch from anywhere with internet access.

XITRIX commented 4 months ago

On the first glance tailscale looks like close source enterprise solution which is barely possible to implement into open source homebrew app. If you'll find any good open source alternative, maybe I could check, but right now it looks almost impossible

joshurawr commented 4 months ago

Two potential paths forward as I see it.

While Tailscale is definitely "enterprise oriented" and they do sell services to enterprise, it is actually open source. The only caveats are their GUI applications (CLI is BSD-liscensed) and their coordination server (which they host). You can self host that with BSD-licensed Headscale, which they actively work with and advertise, but I don't think that even matters for the client integration.

The other potential solution is called Nebula, which is developed by Slack. It is not a product and Slack doesn't sell or operate any services relating to Nebula. MIT licensed. The main downsides are that it's not as popular as Tailscale, and if you want to run this with magical nat-punching handshake coordination, then you have to self host a server component (which they call "lighthouse"), whereas self hosting would be optional with Tailscale.

Citations:

https://tailscale.com/opensource https://tailscale.com/blog/opensource https://github.com/juanfont/headscale https://github.com/slackhq/nebula

fejich commented 3 months ago

image Networking should be done on an OpenWRT router. A second-hand router is very cheap.

Half a year ago, I used Tinc VPN to build a Mesh network connecting multiple places. In addition to using Moonlight for multiplayer streaming of computer games

It can also enable local LAN connection of NS native games.

jpmorpixels commented 2 months ago

What about ZeroTier One?