My first try at self hosting, and I have some questions...
So, here's what I set up:
Docker with some containers behind Gluetun
Gluetun gives access to the local network so I can access the containers on my home network through http.
The only port I exposed to the internet is the 32400 for Plex.
I reach my home network remotely only through Wireguard, my fritzbox router has a guided setupt that gives me a wg configuration so I just scanned the QR code with my phone. I learned this opens the default wg port.
Now, you can never be 100% safe, but is my simple setup safe/solid enough?
9 times out of 10 I thinker with it when I am at home
It's still a work in progress and I am open to any kind of suggestions
If you use WireGuard for local access, I don’t think you need to open any port on your firewall, unless you are sharing your plex with other people that do not have access via WireGuard. But I know just enough to get me in trouble, so I’m sure I’ll be corrected on this.
This is correct. But the port wont reply to anything but a valid client, so it should not be too apparent to a would-be attacker that you have a port open at all.
No, you are correct. If you are the only person accessing the service you don't need to open any ports since you access your network via Wireguard anyway.
Not really directly answering your question here so feel free to ignore me. But if I'm understanding right your setup sounds like a more complicated way of doing what I am.
I put tailscale on all my devices. And in every docker compose for the ports I do. TailscaleIP:hostport:containerport
So nothing can be access on local network at all. Only through tailscale. Which I can access from any of my devices locally or remotely without opening a port. All E2E encrypted I'm pretty sure. The only con is having to trust tailscale.
One thing that was recommended to me by someone a while ago, is that, unless you need it for something specific, mount your media in Plex as read only.
Plex has functions where you can delete content from the library from their UI. If you need that for some reason, obviously don't make it read only. If you're hoarding the data, and therefore never delete it, or use an external system for deleting files, then RO all the way.
The only caveat to this is if you're using a local disk on the Plex system, which then shares out the drive/folder for adding new content, in which case, you're screwed. It has to be rw so the OS can add/remove data.
In my case, as I think may be common (or at least, not rare), my back end data for Plex Media is on a NAS, so it's easy to simply have the system running Plex, mount that network share as RO, and you're done. The data on the NAS can be accessed and managed by other systems RW, direct to the NAS.
Since Plex is exposed to the internet, if anyone with sufficient rights is compromised, in theory, an attacker could delete the entire contents of your media folder with it. If you limit RW access to internal systems only, then that risk can be effectively mitigated.
I'm doing basically what you're doing, with the main difference being that I have a VPS that tunnels external traffic through a handful of exposed services. I do this so I can get TLS working properly (they all use LetsEncrypt certs, and auto renew).
Yours is simpler, and if it works, great! I would echo what others said here, don't expose Plex unless you actually want to access Plex remotely. Once something is exposed, it's going to get hit with all kinds of automated spam.
Plex is shared with family so the door is open. But if I'm getting this right, since it runs in docker and I've enabled 2fa and a strong password it's fine.
I personally have absolutely no services with an open port to the internet, everything accessed remotely goes through Tailscale. I just don't trust that I could do it myself safely
Honestly, you're just making more limitations and overhead by running everything over tunnels locally. There are better ways to secure your local network. If this works for you, and you don't want to bother with extra steps, just go for it though.
The downsides are performance, and a lot of extra hurdles trying to get other things to interface with any of the other services.
You'll also be at a disadvantage coming to forums and asking for help, because the preface will be explaining your setup before anyone can really help you with issues.
Maybe I asked the wrong question. I meant to ask: this is what I came up with. It works. Some containers in docker and the only open ports are the Wireguard one and Plex. Is it safe to have everything on http inside my home network or should I look into hardening it?
Well the service doesn't matter. The authentication and authorization to the service does. If whatever you're running has a solid barrier to entry, then no problems. If it's open without any challenges, AND it can perform actions that harm your network, then that's bad news.
If you're worried about someone getting into your network and hacking something, the tunnels won't do much to prevent that. What you're describing is Security Through Obscurity in a way. You're putting up extra unnecessary barriers that aren't preventing access to something that isn't secure in the first place.