Skip Navigation
Jump
How do you secure your home lab?
  • Honestly I just use a good firewall and forward_auth/authelia in caddy (so authentication happens before any apps) and it works well.

    I also don't expose SSH to the public internet anymore (more laziness than anything, have it semi-exposed in yggdrasil and wireguard) (mostly because the SSH logs get annoying for journalctl -f)

    1
  • Jump
    Caddy seems to good to be true? I just set it up and it works perfect, straight out of the box
  • I would not directly expose Jellyfin to the Internet (including reverse proxy) because of security issues they've had. And no, a reverse proxy (like Caddy) doesn't usually add much insecurity or security^.

    The thing I currently do is use forward_auth w/ Authelia (from anywhere, you could also use basic_auth though the UX sucks) but bypass it for the app in private IP ranges (aka at home or in VPN):

    jellyfin.example {
            @notapp {
                    not {
                            header User-Agent *Jellyfin*
                            client_ip private_ranges
                    }
            }
    
            forward_auth @notapp localhost:8080 {
                    uri /api/verify?rd=https://authelia.example/
            }
            reverse_proxy 192.168.1.44:8080
    }
    

    Apps get to continue working, and I can access it from my phone without a VPN setup (because it's annoying and I only look at metadata on my phone anyway).

    You can also do a simpler config (which I used to do) where you just give an HTTP Unauthorized for anything outside of private ranges (this lets you do the HTTP challenge for a certificate while still not exposing Jellyfin to the general internet).

    ^You can configure more security by doing authentication in the reverse proxy so that anyone trying to attack services behind it must first authenticate with the reverse proxy, but this is not the default. Security-wise this ends up similar to forcing all access through a VPN first, if a little harder to setup.

    2