this post was submitted on 31 Mar 2025
211 points (98.2% liked)

Selfhosted

46182 readers
401 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
 

I already host multiple services via caddy as my reverse proxy. Jellyfin, I am worried about authentication. How do you secure it?

(page 3) 47 comments
sorted by: hot top controversial new old
[–] [email protected] 1 points 3 weeks ago

My setup is: Proxmox - restricted LXC running docker which runs jellyfin, tailscale funnel as reverse proxy and certificate provider. So so don't care about jellyfin security, it can get hacked / broken , its an end road. If so i will delete the LXC and bring it up again using backups. Also i dont think someone will risk or use time to hack a jellyfin server. My strategy is, with webservices that don't have critical personal data, i have them isolated in instances. I don't rely on security on anything besides the firewall. And i try not to have services with personal sensitive data, and if i do, on my local lan with the needed protections. If i need access to it outside my local lan, vpn.

[–] [email protected] 29 points 3 weeks ago* (last edited 3 weeks ago) (2 children)

For web access, stick it behind a reverse proxy and use something like Authentik/Authelia/SSO provider of your choice to secure it.

For full access including native clients, set up a VPN.

load more comments (2 replies)
[–] [email protected] 34 points 3 weeks ago* (last edited 3 weeks ago) (11 children)

My setup: Locally (all in docker):

  • JF for managing and local access
  • JF with read only mounted volumes that uses the network of my Wireguard client container
  • Wireguard client opening a tunnel to Wireguard server on VPS ** Ping container regularly doing pings to Wireguard Server so the connection stays up (didn't manage it otherwise)

VPS (Oracle Cloud free tier, also everything in docker):

  • Caddy as a reverse proxy with https enabled and geolocking (only certain countries are allowed to connect to)
  • fail2ban to block IPs that try to bruteforce credentials
  • Wireguard server

Usernames are not shown in the frontend and have to be entered. Passwords are generated by a password manager and can't be changed by the user.

So my clients just get the URL of my reverse proxy and can access the read only JF through my Wireguard tunnel. Didn't have to open any ports on my side. If someone is interested I can share the docker compose files later.

Edit: Here the link to the setup description. Please tell me if something is not clear or you find an error. https://codeberg.org/skjalli/jellyfin-vps-setup

[–] [email protected] 11 points 3 weeks ago (4 children)

I am interested in your docker compose

[–] [email protected] 12 points 3 weeks ago

Will share this evening after work.

load more comments (3 replies)
load more comments (10 replies)
[–] [email protected] -3 points 3 weeks ago* (last edited 3 weeks ago) (1 children)

~~Jellyfin is secure by default, as long as you have https. Just chose a secure password~~

[–] [email protected] 35 points 3 weeks ago* (last edited 3 weeks ago) (4 children)

No, it isn't.

EDIT: I quickly want to add that Jellyfin is still great software. Just please don't expose it to the public web, use a VPN (Wireguard, Tailscale, Nebula, ...) instead.

[–] [email protected] 5 points 3 weeks ago (1 children)

Oh boy. Nope. My friends gonna have to fiddle with a VPN, forget exposing JF to the outside...

load more comments (1 replies)
[–] [email protected] 8 points 3 weeks ago (2 children)

Some of these are bonkers. The argument not to fix them because of backwards compatibility is even wilder. Which normal client would need the ability to get data for any other account that it hasn't the Auth token for.

load more comments (2 replies)
[–] [email protected] 6 points 3 weeks ago

Wtf. Thank you

load more comments (1 replies)
[–] [email protected] 2 points 3 weeks ago (1 children)
[–] [email protected] 6 points 3 weeks ago* (last edited 3 weeks ago)

Or wireguard, depending where & how they want to implement it might be simpler or better/worse on hardware.

[–] [email protected] -3 points 3 weeks ago (8 children)

CloudFlare tunnel with Zero Trust, plus their bot and abuse blocking. Users can get in with the right oauth, plus only allowed from the countries I know they're in. Then just their username and password on jellyfin.

[–] [email protected] 1 points 3 weeks ago* (last edited 3 weeks ago) (1 children)

Using cloudflare tunnels means nothing is encrypted and cloudflare sees all.

load more comments (1 replies)
[–] [email protected] 5 points 3 weeks ago (1 children)

I hate the cloudflare stuff making me do captchas or outright denying me with a burning passion. My fault for committing the heinous crime of using a VPN!

load more comments (1 replies)
[–] [email protected] 9 points 3 weeks ago (4 children)

Doesn't streaming media over a cloudflare tunnel/proxy violate their ToS

[–] [email protected] 0 points 3 weeks ago

No, they removed that clause some 2 or 3 years back.

[–] [email protected] 5 points 3 weeks ago
load more comments (2 replies)
load more comments (5 replies)
[–] [email protected] 6 points 3 weeks ago (6 children)
[–] [email protected] 1 points 3 weeks ago

Uhh, interesting! Thanks for sharing.

load more comments (5 replies)
[–] [email protected] 4 points 3 weeks ago (1 children)

You could put authentik in front of it too

[–] [email protected] 11 points 3 weeks ago (4 children)

I think that breaks most clients

[–] [email protected] 2 points 3 weeks ago

Yes, it breaks native login, but you can authenticate with Authentik on your phone for example, and use Quick connect to authorize non-browser sessions with it.

load more comments (3 replies)
[–] [email protected] 56 points 3 weeks ago* (last edited 3 weeks ago) (1 children)

Is it just you that uses it, or do friends and family use it too?

The best way to secure it is to use a VPN like Tailscale, which avoids having to expose it to the public internet.

This is what I do for our security cameras. My wife installed Tailscale on her laptop and phone, created an account, and I added her to my Tailnet. I created a home screen icon for the Blue Iris web UI on her phone and mentioned to her, "if the cameras don't load, open Tailscale and make sure it's connected". Works great - she hasn't complained about anything at all.

If you use Tailscale for everything, there's no need to have a reverse proxy. If you use Unraid, version 7 added the ability to add individual Docker containers to the Tailnet, so each one can have a separate Tailscale IP and subdomain, and thus all of them can run on port 80.

[–] [email protected] 17 points 3 weeks ago (9 children)

if the cameras don’t load, open Tailscale and make sure it’s connected

I've been using Tailscale for a few months now and this is my only complaint. On Android and macOS, the Tailscale client gets randomly killed. So it's an extra thing you have to manage.

It's almost annoying enough to make me want to host my services on the actual internet....... almost... but not yet.

[–] [email protected] 1 points 3 weeks ago (1 children)
load more comments (1 replies)
[–] [email protected] 6 points 3 weeks ago (1 children)

Have you tried disabling battery optimization for tailscale?

load more comments (1 replies)
[–] [email protected] 7 points 3 weeks ago

Look up your phone on dontkillmyapp.com and make sure tailscale is excluded from battery and network "optimization".

[–] [email protected] 2 points 3 weeks ago (1 children)

Yeah my wife and I are both on Android, and I haven't been able to figure out why it does that.

The Android client is open-source so maybe someone could figure it out. https://github.com/tailscale/tailscale-android

[–] [email protected] 3 points 3 weeks ago* (last edited 3 weeks ago) (3 children)

It loses its foreground notification I've found that kills it for me

even thou the Quick Toggle and the app itself, shows as running

If I disconnect/reconnect the notification comes back, and I've found something even more weird on my device (A Xiaomi with its infamous OOM / background app killer....) is Tailscale still actually works fine most of the time without the foreground notification. I'm hazarding a 70% of the time for me?

A lot of us a while back found v1.5.2 fugged around with the persistent notification going RIP

https://github.com/tailscale/tailscale/issues/10104

[–] [email protected] 1 points 3 weeks ago

Oh the Quick Toggle has never, ever worked correctly. I hoped they fixed it after the UI refresh update but unfortunately not yet.

[–] [email protected] 2 points 3 weeks ago (1 children)

Oh the Quick Toggle has never, ever worked correctly. I hoped they fixed it after the UI refresh update but unfortunately not yet.

[–] [email protected] 2 points 3 weeks ago* (last edited 3 weeks ago) (1 children)

What device/ROM are you using?

It's been very iffy for me on and off from Miui > HyperHyperOS, but just checking now?

Works fine

Like I say, the foreground notification seemed to be the lifeline to some of us using it and keeping it alive, even after IIRC some more restrictions came in with future versions of Android (forgive me, I'm very lazy these days and just skim Mishaal's TG feed 😇)?

e: also dupe comment ;)

[–] [email protected] 2 points 3 weeks ago (2 children)

For me it's always been busted both on AOSP and Miui/HyperOS...

[–] [email protected] 2 points 3 weeks ago* (last edited 3 weeks ago)

Huh. The nearest I have to an actual "AOSP" device is my King Kong Cubot phone that has probably the cleanest version of "stock Android" I've ever seen, and I'm going to presume you mean like a Google Pixel / Graphene etc?

Tailscale and the QS tile / notification was solid on that Cubot but to be honest, I've barely turned it on these days and is now one of those drawer phones.

Miui / HyperHyperOS though is a different kettle of fish and exempting Tailscale from its App lel Killer does seem to work. 70-80%ish.....

But there is something that just fuggs up and turn it off/on like most thingys I own 🙈

load more comments (1 replies)
[–] [email protected] 15 points 3 weeks ago (2 children)

I use plain wireguard on me phone, always on essentially with no issues. I wonder why tailscale app can't stay open.

[–] [email protected] 3 points 3 weeks ago (1 children)

I suspect that it goes down and stays down whenever there is an app update, but I haven't confirmed it yet.

Does the plain wireguard app stay up during updates?

[–] [email protected] 10 points 3 weeks ago* (last edited 3 weeks ago)

Android wireguard all hasn't been updated in 18mo. Its extremely simple with a small code base. There basically isn't anything to update. It uses wireguard kernel module which is itself is only like 700 lines of code. It so simple that it basically became stable very quickly and there is nothing left of update right now.

https://git.zx2c4.com/wireguard-android/about/

I personally get the from obtainium to bypass play store

[–] [email protected] 10 points 3 weeks ago (2 children)

Same, wireguard with the 'WG Tunnel" app, which adds conditional Auto-Connect. If not on home wifi, connect to the tunnel.

[–] [email protected] 1 points 3 weeks ago (4 children)

I just stay connected to wireguard even at home, only downside is the odd time I need to chromecast, it needs to be shut off.

[–] [email protected] 2 points 3 weeks ago

Oh shit, you may have just solved my only issue with Symfonium

load more comments (3 replies)
[–] [email protected] 1 points 3 weeks ago* (last edited 3 weeks ago) (1 children)

conditional Auto-Connect. If not on home wifi, connect to the tunnel.

You don't need this with Tailscale since it uses a separate IP range for the tunnel.

Edit: Tailscale (and Wireguard) are peer-to-peer rather than client-server, so there's no harm leaving it connected all the time, and hitting the VPN IPs while at home will just go over your local network.

The one thing you probably wouldn't do at home is use an exit node, unless you want all your traffic to go through another node on the Tailnet.

[–] [email protected] 4 points 3 weeks ago (9 children)

I also have a different subnet for WG. Not sure I understand what you're saying...

load more comments (9 replies)
load more comments (3 replies)
[–] [email protected] 20 points 3 weeks ago (1 children)

I use fail2ban to ban IPs that fall to login and also IPs that perform common scans in the reverse proxy

[–] [email protected] 13 points 3 weeks ago

also have jellyfin disable the account after a number of failed logins.

load more comments
view more: ‹ prev next ›