I’ve been researching different ways to expose Docker containers to the internet. I have three services I want to expose: Jellyfin, Omnivore (Read-it-later app), and Overseerr.
I’ve come across lots of suggestions, like using Nginx with Cloudflared, but some people mention that streaming media goes against Cloudflared tunnel TOS, and instead recommend Tailscale, or Traefik, or setting up a WireGuard VPN, or using Nginx with a WireGuard VPN.
The amount of conflicting advice has left me confused. So, what would be the best approach to securely expose these containers?
Do you actually want to expose the things to “the internet”, or do you just want yourself (and an approved set of other users) to be able to access them from outside of your network?
If it’s the former, you’re going to want to learn about DNS, NAT, exposing ports, firewall settings, and network monitoring.
But if it’s the latter, then I recommend checking out tailscale because that gives you and some friends LAN-like access with a great internal DNS and it works really well.
The thing with tailscale is that its just a VPN connection – from my understanding. Why not just self host your own VPN server?
I’ll just use Tailscale until they fuck it up, which I’m sure they will, eventually. It’s not very hard to rebuild using something else for the 40 or 50 nodes I’m likely to have. I’ve done it before and I’m sure I’ll do it again.
Yes, but No, but. It’s like an always on self discovering VPN. No need to connect and login if you lose connection or change from WiFi to cell to Ethernet, it just figures it out. And as other commentor said it is wireguard. So you can set it up yourself without a 3rd party, just takes a little bit of tech savvy skill and trasfering some public keys between each set of connections. Tailscale just makes it effortless.
Yeah it’s wireguard under the hood iirc, so you probably could put in effort in order to achieve roughly what tailscale does, if you have the knowledge and time involved in doing that. I don’t think there’s any secret sauce that would be impossible to someone to DIY.
I don’t blame people for being skeptical, especially those of us in the Linux, FOSS, and self-hosted world. I was skeptical too, because part of the reason I wanted to self-host was to move away from a dependency on companies, and I’m weary of the mere possibility of tailscale’s eventual capitalist enshittification. But after trying it, I have to admit that it’s been a game changer for me.
For me personally, tailscale is just an easy out-of-the-box solution that works well for what I want it to do (give me encrypted access to my server from anywhere in the world). I’m not so good at networking that I could get anywhere near the level of convenience that tailscale affords me, and I have too many other projects that I want to do before reinventing tailscale for myself. So instead I have a small free tailnet with all of my devices (and a couple other users’ devices), and it has totally changed my relationship with self-hosting and my server.
In my view, It’s a pretty good deal, for now at least.