1
submitted 11 months ago by CStfford14@alien.top to c/main@selfhosted.forum

TL;DR: I'm making a game with 3 components and I need two of them to have a virtual network connection similar to Argo tunnel. It has to be something I can distribute and I have complete control over the network without port forwarding one of the components.

I'm developing a game framework similar to Jackbox games. I already have a basic structure for how the game will work. It contains the following 3 parts:

  • Client - Player's devices
  • Proxy - A basic server to proxy traffic between the host and the clients
  • Host - The machine that actually runs the game

I want to be able to distribute the host software to family and have it "just work," which is why I have the proxy server. The idea is that the host will connect to the proxy and provide the game through the proxy to the players. This begs the question, how am I going to pull this off? The proxy will have open ports, but in order to provide two-way communication between the proxy and the host, the host has to have exposed ports as well, right?

I'll break it down this way for clarification. Let's say the host is a simple web server providing files for a website. The proxy is cloudflare. You can run the cloudflared program on the host to create an Argo tunnel, exposing your web server to cloudflare's network without port forwarding, which in turn forwards traffic onto the clients.

That's the basic model I want to achieve, but I'm not sure how to make a system similar to an Argo tunnel since traffic needs to be proxied to a server I control rather than cloudflare's.

I've done a bit of research and have narrowed potential solutions to the following 3 ideas:

  • Make a small OpenVPN server on the proxy server, distribute an OpenVPN client with the host that connects to the OpenVPN server on the proxy
  • Instead of OpenVPN use ZeroTier as a similar configuration (in this case, I would need to run the controller myself if possible)
  • Use websockets (This one I don't think would work since I don't think you can use websockets from within other websockets)
top 1 comments
sorted by: hot top controversial new old
[-] PhilipLGriffiths88@alien.top 1 points 11 months ago

You could use OpenZiti instead. This replaces OpenZiti/ZeroTier, implements strong zero trust principles for the highest security, and even allows you to embed the overlay directly into you game/app using an SDK. If you prefer to share publically, you can use zrok.io, zrok.ia Ngrok replacement for public sharing (incl. TCP/UDP tunnels) which is built on top of Ziti.

this post was submitted on 26 Nov 2023
1 points (100.0% liked)

Self-Hosted Main

504 readers
1 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

For Example

We welcome posts that include suggestions for good self-hosted alternatives to popular online services, how they are better, or how they give back control of your data. Also include hints and tips for less technical readers.

Useful Lists

founded 1 year ago
MODERATORS