this post was submitted on 12 Aug 2025
53 points (94.9% liked)

Selfhosted

50550 readers
396 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
 

Hi y’all, thanks for the help with my question yesterday. I did a bit of homework, and I think I’ve got things figured out. Here’s my revised plan:

  1. configure a cron job to update DuckDNS with my IP address every 5 minutes

  2. use ufw to block all incoming traffic, except to ports 80 and 443, to allow incoming traffic to reach Caddy

  3. configure the Caddyfile to direct traffic from my DuckDNS subdomain to Jellyfin’s port

Does this seem right this time? Am I missing anything, or unnecessarily adding steps? Thanks in advance, I’ll get the hang of all this someday!

all 46 comments
sorted by: hot top controversial new old
[–] frongt@lemmy.zip 20 points 4 days ago (2 children)

I still don't recommend putting jellyfin on the Internet. It's not designed for it. There are some API endpoints you can access without authentication, not to mention potential authentication bypass vulnerabilities.

5 minutes is also probably too frequent. Leases are usually significantly longer. You might hit a rate limit and get blocked.

[–] compostgoblin@lemmy.blahaj.zone 7 points 4 days ago (3 children)

Thanks for the tip! I’ll back the refresh rate off to be safe.

I’m not sure I entirely understand your concern about putting Jellyfin on the internet. A large part of my interest in selfhosting is being able host my own music library, my own cloud storage, etc, and access it as an alternative to Spotify or Google Drive. Doesn’t that inherently mean that they need to be on the internet, if I want to be able to access them when I’m away from home?

My goal has been to find a way to do that safely, but if that’s not possible, that’s good to know too, so I don’t keep trying to do the impossible.

[–] DreamlandLividity@lemmy.world 1 points 2 hours ago

I just finished refining my Jellyfin setup. I use caddy as reverse proxy and use authelia as authentication in front of Jellyfin. This way only users logged in to authelia can access my Jellyfin. And there is an SSO plugin for jellyfin to avoid double login. The tricky part was getting apps to work.

[–] dogs0n@sh.itjust.works 8 points 3 days ago* (last edited 3 days ago) (1 children)

It's honestly just a matter of how much risk you are comfortable with for using jellyfin on the open internet.

(If i remember correctly:) The unauthenticated routes thing can only be used for streaming your content without a login (if you can guess the contents ids on your server I believe).

In my opinion, it's not worth the hassle of using a vpn because I don't think this risk is worth mitigating with one.

But everyone has their own personal risk assesment of course.

P.s. Easier than a VPN, at least for logging in other users, would be to use some type of proxy authentication like Authelia. I believe jellyfin has a plugin you can use. It can be complicated to setup, but it's an option. I believe it should protect all routes exposed by jellyfin so that solves the unauthenticated streaming issue. (I still dont think this is necessary but more choice for the risk-adverse!).

https://github.com/authelia/authelia

[–] frongt@lemmy.zip 1 points 3 days ago (3 children)

Yes, those are the known vulnerabilities. We don't know how many unknown vulnerabilities could be discovered in the future.

[–] dogs0n@sh.itjust.works 4 points 3 days ago

Unfortunately no software exists that is fully perfect in this regard (any program could have multiple bugs just waiting to be found), but jellyfin being open source puts it in a better situation for finding vulnerabilities sooner.

[–] Auli@lemmy.ca 1 points 2 days ago

And are these the ones they let people see what media I have or are there any serious ones?

[–] ITGuyLevi@programming.dev 2 points 3 days ago

At least we are more likely to hear about them than we would for PMS. Quickest way to find vulnerabilities is to have as many eyes as possible on it, if you only let the 20 devs you employ look a lot can be missed. Just my opinion though.

[–] AbidanYre@lemmy.world 12 points 4 days ago (1 children)

Wireguard or tailscale are much better ways of accessing jellyfin from outside your network.

[–] compostgoblin@lemmy.blahaj.zone 5 points 4 days ago (3 children)

What if I want a bunch of people to be able to log into my library via Finamp?

[–] ExperiencedWinter@lemmy.world 2 points 4 days ago

I highly recommend Tailscale, you can share machines/services with unlimited friends on the free tier, and all of the actual auth stuff is handled by someone who isn't me.

[–] frongt@lemmy.zip 2 points 4 days ago

Provide them with VPN access. If that's too much for them, then they don't get access. Tough. On the scale of security vs convenience, that's nothing.

If you really really want, you should at least see if you can put a WAF in front, and put the server itself somewhere it doesn't have access to the rest of your network (a DMZ) so that if and when it gets hacked, it doesn't compromise the entire network.

[–] FreedomAdvocate@lemmy.net.au -5 points 4 days ago* (last edited 4 days ago) (1 children)

You use plex instead, or you accept the massive security vulnerabilities.

[–] Auli@lemmy.ca 1 points 2 days ago (1 children)

What vulnerabilities? Sure there are some but nothing massive that I have seen. Care to post them.

[–] FreedomAdvocate@lemmy.net.au -2 points 2 days ago

web endpoints with zero authentication lol

[–] FreedomAdvocate@lemmy.net.au -4 points 4 days ago (2 children)

It’s not designed for it

Yet everyone in here tells everyone to switch from Plex, which is designed for it, to jellyfin lol

[–] metaStatic@kbin.earth 13 points 4 days ago (1 children)

I prefer security vulnerabilities I can manage to privacy ones I cannot.

[–] FreedomAdvocate@lemmy.net.au -5 points 3 days ago

What privacy vulnerabilities are you talking about exactly?

[–] Auli@lemmy.ca 0 points 2 days ago (1 children)

Only one of these software has lead to someone hacking into someone's computer.

[–] FreedomAdvocate@lemmy.net.au -2 points 2 days ago

You have no idea how many breaches jellyfin has been the cause of lol

[–] AbsolutelyNotAVelociraptor@sh.itjust.works 9 points 4 days ago (1 children)

If it's for your personal use and no one else is going to connect, why don't you just configure a wireguard tunnel to remotely connect to your server as if you were in LAN without exposing anything?

[–] compostgoblin@lemmy.blahaj.zone 6 points 4 days ago (2 children)

I’d like to be able to share it with friends and family

[–] Onomatopoeia@lemmy.cafe 5 points 4 days ago* (last edited 4 days ago) (2 children)

Tailscale has the Funnel feature too, which puts the endpoint on Tailscale's servers.

You could do both - Funnel for people who you don't want to walk through setting up a client, and use the client for those who you're willing to put the effort into.

[–] compostgoblin@lemmy.blahaj.zone 4 points 4 days ago* (last edited 4 days ago)

My preference would be to avoid Tailscale, but I’ll check it out. Thanks!

[–] bigboitricky@lemmy.world 1 points 3 days ago

I second this for the funnel feature

It made my whole issue with ports easy since it forwards only one open port

Tailscale allows you to do the same except you can create keys with limited access to only certain ports (just in case you don't want them peeking around your server).

[–] TarantulaFudge@startrek.website 6 points 3 days ago* (last edited 3 days ago) (2 children)

It's perfectly fine to host jellyfin online. Use a proxy server to enable TLS and do not use default ports 80/443. Use letsencrypt for free certificates. No need for VPN to access here either. Do not expose any other ports such as SSH on default ports. Lock down your jellyfin server and any other related services behind a VPN service and block access to Internet through other interfaces (except for port forwards on your ISP for jelly). Go high on port ranges since they typically aren't scanned or blocked. Go dual stack for best results and don't use your router address for IPv6 more than likely you have your own /64 choose a different address for port forwards. Do not assign this address to your internal servers. Use a reserved unrouted IPv6 range internally and do NAT6. Do not allow any raw IPv6 internet access

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

do not use default ports 80/443.

In my opinion, you'd be fine using default ports. Guess there's no harm in using other ports though, other than the pain of having the remember which port to use if you ever forget when adding a new device, etc.

Edit: I should add that im speaking of only ports 80/443 here. If you must expose ssh over the internet (probably shouldnt) for example, then yes, use a non-standard port (I use non standard ports for pretty much all apps except http/s).

[–] possiblylinux127@lemmy.zip 2 points 3 days ago

Do not expose Jellyfin. It has unauthenticated endpoints that will be exploited by bots

[–] Creat@discuss.tchncs.de 6 points 4 days ago

You don't need to hard update your IP every 5 minutes. The typical DNS updaters (just use ddclient) can simply check if your IP is up to date and only update if it isn't.

[–] 3dcadmin@lemmy.relayeasy.com 0 points 3 days ago

I forgot duckdns still exists to be fair