Hi, I know this topic has been talked about 70 thousand times but I’m still not sure.
I have home server on an intel NUC behind the ISP router. On it I have the standard arr apps, jellyfin, pi-hole etc etc. I would like to access them through a domain rather than an IP. So I set them up in docker, behind traefik, behind authelia and behind cloudflare. I am the only one that uses it.
Now, I’m worried about the security of it all. I’ve been searching here and there and I’ve read about cf tunnels, wireguard server, vps, vlan, OPNsense etc etc. I still don’t know what would be the most secure. Should I just stay with what I have?
EDIT: I’m not behind CGNAT
Check out Tailscale. They have 20 machine limit on the free plan. It runs on wireguard and is pretty secure.
Tailscale Free has a 100 device limit.
Virtually its only limitation against the paid plans is the user limit. (3 users)
And network logging because it’s heavy on their servers.
Also the user limit only applies to your account. You can share devices/etc with other accounts, as many others as you like.
Tailscale is awesome, and super easy to set up. I think the free tier allows up to 100 devices now!
And there’s an OSS control plane replacement called Headscale although I don’t know what’s involved in using it. Researching and implementing it is my backup plan for when Tailscale turns to shit.
E: Just briefly parsed their docs, deployment and usage seem pretty trivial. There’s no need to use forks of the clients either. You can give your Headscale url to the Tailscale clients on login and you’re good to go.
Setting up headscale isn’t too hard. But last time I tried, connecting the clients to it didn’t work properly (on mobile). Since they are using the regular tailscale clients, they don’t have much control over that.
I gotta try. I’m planning to switch to it anyways. The Android client is open source so if something has to be changed it can be contributed or forked if the contribution isn’t accepted.
Install tailscale from F-Droid not Google Play. I had trouble setting up custom server with Google Play version.
I am big into self-hosting and would be happy to run my own Headscale server (I have actually) but imo it’s not worth the effort.
It can be done but it requires a lot of effort and consideration to ensure the relays and routing work for when your clients are in challenging NAT scenarios. And the user experience is not as good.
Instead what I do is continue to use Tailscale but I use the Tailnet Lock feature to give signing authority to my own specified devices so any new devices must be signed off by one of those other devices.
This effectively eliminates the last point of trust where you had to trust tailscale’s servers to manage authorization. The result is you don’t have to worry about trusting tailscale at all, the entire system is zero trust.
The catch is if you lose those devices and the recovery keys you lose the ability to trust or add to your tailnet and your only real option is to delete all the devices and start fresh.
They also have the option to send a recovery key to their servers when you enable Tailnet Lock so support can rescue you in that scenario, but I think if you are using this feature on the first place it’s because you don’t want to do that so I imagine most choose not to lol
I linked to their blog post above because I think it explains the feature well. If you just want the docs they are here
Wireguard itself works software far, thanks anyway :)
Tailscale is amazing, I work with a small company and we were battling with our IT contractor to have a VPN running for remote work.
After a while of things not working as it should I just set up tailscaled because I was using it with my home server and it just works.
We are now on a paid plan and everyone else is using it when working remotely.