this post was submitted on 09 Apr 2025
46 points (77.4% liked)

Selfhosted

45788 readers
371 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

  1. Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.

  2. No spam posting.

  3. Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.

  4. Don't duplicate the full text of your blog or github here. Just post the link for folks to click.

  5. Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).

  6. No trolling.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 2 years ago
MODERATORS
 

Please take this discussion to this post: https://lemmy.ml/post/28376589

Main contentSelfhosting is always a dilemma in terms of security for a lot of reasons. Nevertheless, I have one simple goal: selfhost a Jellyfin instance in the most secure way possible. I don't plan to access it anywhere but home.

TL;DR

I want the highest degree of security possible, but my hard limits are:

  • No custom DNS
  • Always-on VPN
  • No self-signed certificates (unless there is no risk of MITM)
  • No external server

Full explanation

I want to be able to access it from multiple devices, so it can't be a local-only instance.

I have a Raspberry Pi 5 that I want to host it on. That means I will not be hosting it on an external server, and I will only be able to run something light like securecore rather than something heavy like Qubes OS. Eventually I would like to use GrapheneOS to host it, once Android's virtual machine management app becomes more stable.

It's still crazy to me that 2TB microSDXC cards are a real thing.

I would like to avoid subscription costs such as the cost of buying a domain or the cost of paying for a VPN, however I prioritize security over cost. It is truly annoying that Jellyfin clients seldom support self-signed certificates, meaning the only way to get proper E2EE is by buying a domain and using a certificate authority. I wouldn't want to use a self-signed certificate anyways, due to the risk of MITM attacks. I am a penetration tester, so I have tested attacks by injecting malicious certificates before. It is possible to add self-signed certificates as trusted certificates for each system, but I haven't been able to get that to work since it seems clients don't trust them anyways.

Buying a domain also runs many privacy risks, since it's difficult to buy domains without handing over personal information. I do not want to change my DNS, since that risks browser fingerprinting if it differs from the VPN provider. I always use a VPN (currently ProtonVPN) for my devices.

If I pay for ProtonVPN (or other providers) it is possible to allow LAN connections, which would help significantly, but the issue of self-signed certificates still lingers.

With that said, it seems my options are very limited.

you are viewing a single comment's thread
view the rest of the comments
[–] catloaf@lemm.ee 18 points 5 days ago (1 children)

Just run it on the LAN and don't expose it to the Internet. That's 99% of the way there. HTTPS only secures the connection, and I doubt you're sending any sensitive info to or from Jellyfin (but you can still run it in docker and use caddy or something with Let's Encrypt).

The bigger target is making sure jellyfin itself and the host it runs on are updated and protected. You could use a WAF too.

[–] Charger8232@lemmy.ml -4 points 5 days ago (4 children)

Just run it on the LAN and don’t expose it to the Internet.

This would require paying for a VPN to allow LAN connections, which is an option but not my preferred one.

HTTPS only secures the connection, and I doubt you’re sending any sensitive info to or from Jellyfin

This is a matter of threat model, and I would prefer not to expose my TV preferences unencrypted over the network.

but you can still run it in docker and use caddy or something

Does Caddy require a custom DNS in order to point the domain to a local IP address?

The bigger target is making sure jellyfin itself and the host it runs on are updated and protected.

This is easy with securecore, since it updates daily. The rest of the semantics for the actual hosting side aren't too difficult.

[–] catloaf@lemm.ee 9 points 5 days ago (1 children)

You don't need a VPN for LAN connections. You're already on the LAN. You'd only need it for access from the WAN.

If you're using Let's Encrypt, you should probably purchase a domain. I don't think they support .internal domains. Or you could set up your own CA and run it however you want, even issuing certs to access by IP address if you wanted.

[–] Charger8232@lemmy.ml -5 points 5 days ago (1 children)

You don’t need a VPN for LAN connections.

ProtonVPN by default blocks LAN connections, and can only be changed using their paid tier.

[–] catloaf@lemm.ee 16 points 5 days ago (2 children)

For that aspect, I would recommend changing to a provider that doesn't have such ridiculous restrictions.

[–] AbidanYre@lemmy.world 4 points 5 days ago* (last edited 4 days ago)

I kind of get it from Proton's POV. If they have a free tier that allows a limited number of devices they'll want to make sure you don't tunnel all you devices through that one.

[–] Charger8232@lemmy.ml -3 points 5 days ago* (last edited 5 days ago) (1 children)

The only other providers I would use are Mullvad VPN or IVPN, both of which are paid.

I agree it is ridiculous.

[–] Trainguyrom@reddthat.com 4 points 5 days ago (1 children)

Wait you're seriously using a free VPN?

[–] someacnt@sh.itjust.works 8 points 5 days ago (1 children)

Being concerned about security while using free VPN sounds like an oxymoron.

[–] sem@lemmy.blahaj.zone 2 points 5 days ago (1 children)

Is there any reason to think the free Proton VPN is somehow insecure?

[–] litchralee@sh.itjust.works 3 points 5 days ago* (last edited 5 days ago)

Not "insecure" in the sense that they're shoddy with their encryption, no. But being free could possibly mean their incentives are not necessarily aligned with that of the free users.

In security speak, the CIA triad stands for Confidentiality, Integrity, and Availability. I'm not going to unduly impugn Proton VPN's credentials on data confidentiality and data integrity, but availability can be a legit security concern.

For example, if push comes to shove and Proton VPN is hit with a DDoS attack, would free tier users be the first to be disconnected to free up capacity? Alternatively, suppose the price for IP transit shoots through the roof due to weird global economics and ProtonVPN has to throttle the free tier to 10 Mbps. All VPN operators share these possibilities, but however well-meaning Proton VPN and the non-profit behind them are, economic factors can force changes that aren't great for the free users.

Now, the obv solution at such a time would be to then switch to being a paid customer. And that might be fine for lots of customers, if that ever comes to pass. But Murphy's Law makes it a habit that this scenario would play out when users are least able to prepare for it, possibly leading to some amount of unavailability.

So yes, a holistic analysis of failure points is precisely what proper security calls for. Proton VPN free tier may very well be inappropriate. But whether it rises to a serious concern or just warrants an "FYI", that will vary based on individual circumstances.

[–] Tolookah@discuss.tchncs.de 7 points 5 days ago* (last edited 5 days ago) (1 children)

But if you don't plan to access it anywhere but home (your words), then it doesn't have outside access, and putting it on your LAN is done.

Edit: if you do want to access it from outside, running a wire guard vpn locally is pretty easy to do.

[–] Charger8232@lemmy.ml -3 points 5 days ago (1 children)

I still want security in transit, no matter where it is being broadcast from.

[–] Tolookah@discuss.tchncs.de 6 points 5 days ago (1 children)

You don't trust your home network?

[–] AtariDump@lemmy.world 2 points 5 days ago* (last edited 5 days ago) (1 children)

You do‽ I know the person who runs it and they’re completely inept! /s

[–] Tolookah@discuss.tchncs.de 2 points 5 days ago (1 children)

Yeah, but the user is also inept, so it evens out.

Honestly though, they could run a pair of docker containers, one with jellyfin one with wire guard and only have access to the jellyfin instance when logged into the micro sized vpn? (I think docker will let you play with networks that way, I'm experienced enough to be dangerous but not useful)

[–] Johanno@feddit.org 5 points 5 days ago (1 children)

You could do a vpn hosting by yourself.

Meaning your server is basically a vpn tunnel server and you can connect from the Internet to it. Once you are in the encrypted vpn connection you have access to the local network.

If you have dynamic ip you need dns though. But no one can connect just because they know the ip)/dns