this post was submitted on 30 Sep 2025
52 points (98.1% liked)

Selfhosted

51931 readers
1356 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 currently have a jellyfin setup running on my pc which I access when away from home by tailscaling into my home network. This works great for my partner and I while we are away from home.

I have given my siblings access to my jellyfin setup as well, and I've added them to the tailscale network too. They live in a different country though and have had some latency issues (media buffering constantly) making it kinda suck to use.

I would love to be able to improve this performance but I dont really know where to start. Would this be a bandwidth issue somewhere between my pc, tailscale, my router, their router, and their device? Would this be caused by some setting in my jellyfin setup or in the jellyfin client on their device? I would really appreciate any advice on where I should start to troubleshoot to improve this performance.

top 15 comments
sorted by: hot top controversial new old
[–] roofuskit@lemmy.world 1 points 9 hours ago

Jellyfin has setting for transcoding video when you are streaming to an external client. The problem is when you're using tail scale Jellyfin is seeing that client as internal. Because of this you must set caps on the bitrate within the client that is accessing via tailscale.

This of course is assuming your server is capable of the needed transcoding demands.

[–] southrydge@lemdro.id 2 points 22 hours ago

Before anything, are you doing regular restarts on your server? I had a similar issue (nobody overseas though) and they went away after restarting. So now I restart every few days to avoid any issues

[–] non_burglar@lemmy.world 3 points 1 day ago
  1. You might want to set an appropriate bitrate and video quality for transcoding for these users that works acceptably for their latency and bandwidth.
  2. The reason netflix, prime, Disney+, etc work as well as they do is because they have CDN peering, so your version of Game of Thrones comes from somewhere much closer to you in a network sense. You can change your tailscale relay, or you can lock down jellyfin to their ip and specific port and skip the tailscale (I don't recommend it unless you know what you're doing) and let routing tables help with latency.
[–] stratself@lemdro.id 4 points 1 day ago* (last edited 1 day ago) (1 children)

If both your Jellyfin server and your siblings are behind residential CGNAT, then high chance your connections are relayed through Tailscale's DERP servers. You can check with tailscale ping-ing your sibilings' nodes.

If this is the case, you may consider selfhosting your own DERP somewhere close to you, but I'd argue the performance gains are minimal compared to the extra costs. Another solution would be to enable IPv6 for both you and your siblings, skipping NAT traversal. I just hope both ISPs support it and support it properly in $CURRENT_YEAR.

This is all assuming you can direct play (i.e. not transcoding) your media. If you're transcoding, then it's good to look into hardware acceleration like the other comment mentioned, too

[–] nightrider@lemmy.world 1 points 23 hours ago (1 children)

Would using something like pangolin be a solution to improve speeds rather than stuff going via relay it goes DNS->VPS->Local VM behind cgnat accessed via tunnel?

[–] stratself@lemdro.id 1 points 10 hours ago

Hi, I think OP wants their sibilings to directly connect to their PC, skipping any relays, even if it's their VPS.

But if you are comparing setting up your own VPS instead of relaying through Tailscale's DERP, then the answer is... it depends on the distance and whether you can establish VPS->Local VM direct connections.

I found opening a specified port for Tailscale on the VPS to help with direct connections with CGNAT'd peers. I'm not familiar with Pangolin, but I think the same principle applies as long as at least one address:port combination is agreed between Wireguard peers.

If I'm being honest though, before doing all this, try asking your ISPs for IPv6 to avoid these cumbersome things together.

[–] Funky_Beak@lemmy.sdf.org 13 points 2 days ago (2 children)

Tailscale can use relays if it cant find a way to make a p2p connection. Check the documentation. There is a command you can run to see whats using the relay.

The siblings could run
tailscale ping nodeIP/nodeName
This not only shows if they are connected via a DERP (relay) but also retries to connect them directly a few times.
If that doesn't work out it can sadly be quite hard figuring out why a DERP is used instead of a direct connection.

[–] jonathan@piefed.social 4 points 2 days ago

This is the first thing I'd look at too.

[–] Brkdncr@lemmy.world 14 points 2 days ago (1 children)

When they are streaming is it transcoding?

If not, it should be reducing the stream quality to adjust to the available bandwidth.

If it is, it could be limited to your pc’s available resources. You may want to turn on hardware transcoding.

Jellyfin has logs that will tell you if its transcoding and how well it’s working.

Tailscale does add additional hops to their route and has bandwidth limitations but it should be fine for streaming.

[–] SkinList@lemmy.world 4 points 2 days ago (1 children)

I believe that jellyfin has been transcoding using jellyfin-ffmpeg. I do have logs labelled "FFmpeg.Transcode-..." which seem to look fine. I have just turned on hardware acceleration though. Is that what you meant by "hardware transcoding"?

Ill check to see if the buffering is improved and will let you know how it goes! Thanks for the advice!

[–] entropicdrift@lemmy.sdf.org 7 points 2 days ago* (last edited 2 days ago)

Yes, hardware transcoding = using hardware acceleration for decoding/re-encoding the video files. CPUs do it pretty slowly (or they use a ton of electricity if they're fast enough to do it quickly) but the special decoder/encoder chips on GPUs (including integrated graphics GPUs) can handle that sort of task no sweat in most cases as long as you've got it preperly configured.

[–] undefined@lemmy.hogru.ch 4 points 2 days ago

If it’s cable internet you might just be constrained by the available upload speed. I tend to put my media in Storj then run a VPS somewhere between all the clients that serves the media via WebDAV with rclone. This gets around the slow upload speed of cable internet at home, and I can cache the remote content on my NAS at home too.

[–] A_norny_mousse@feddit.org 0 points 2 days ago (1 children)

All the answers so far could point in the right direction. I'm lurking to see which one pans out.

[–] Fedegenerate@lemmynsfw.com 1 points 1 day ago* (last edited 1 day ago)

Sames, I have a bunch of users(2) all streaming jellyfin fine over tailscale, except one house which buffers sporadically over the day. There's no rhyme or reason to the when, or the what that needs to be buffered. As in it'll buffer direct plays/HEVCs/AV1s, or it'll play them fine. Some times it'll buffer at night, sometimes during the day, sometimes neither or both. Worse, I'm getting all my information via users, so maybe theres a common thread, but they haven't found it.

Their internet speed is fine. It could be WiFi being saturated in their area. It could be the relay being a very old rPi3 just isn't up to it (The pi, captures their requests through Pi-Hole and proxyies their traffic over tailscale). It could be the laptop they're using as a client isn't up to it. Or it could be some setting somewhere.

It's annoying whatever it is.