Okay, to your credit, this did actually work. Though I’d remove step 2, since the module already does that, and step 3’s port has a dedicated option (.openFirewall in the tailscale module).
I guess the plan now is to set up my network with tailscale and then hopefully drop in headscale later on.
I have the same need, and ended up with having chisel server running on one machine on home network. When I am away, through a cloudflare tunnel, chisel client allow me to access any tcp/udp services on my home network.
wgautomesh, which uses lan broadcast and occasional messages between members of the mesh to discover the current endpoint IPs of (static) mesh members. It’s a small rust deamon in a single file of easily readable code, without all the extras for dynamic nodes and authentication services if you don’t need them