Suggestions for Jellyfin Setup on Pi4

I'm planning to run Jelllyfin of a 4 GB Pi4 I have. This is the hardware I have and am planning to use:

-Pi4 4GB
-Crucial 240 GB SSD (Currently running DietPi on this, connected directly to the Pi4 via a SATA-USB 3 cable)
-WD Red 4 TB (Powered by a Pibox enclosure, haven't connected/mounted it yet)
-The official power supply I got with the Pi

The nascent idea I have so far is to run applications and local torrenting off the SSD, use the WD Red as the storage device. I'll try and set up tailscale for remote access/users for now- I don't think I have enough experience to experiment with reverse proxy at the moment.

I'm currently only planning to use it for Jellyfin, although tinkering with a FOSS alternative to google photos would be cool to do in the long run.

I previously used a YAMS guide on an old laptop and it seemed to turn out fine, although I didn't really test or use it properly. I've seen TRaSH guides recommended as well. I'm planning to go with YAMS and see how it turns out, although using OMV seems fun/cool to setup and try as well. But would it work well off a Pi4?

Any suggestions/tweaks on how to go ahead with this? I'm looking to install and use the usual *arr applications along with Jellyfin and Tailscale.
 
With Pi4, direct play (without transcoding) should work fine.
With Tailscale in the middle, things can get a bit tricky if you are not on the same LAN and tailscale is not able to find a direct connection, forcing you to go via a relay. In that case, you'd get pretty low bandwidth making direct playback mostly unfeasible.
 
Use docker for easier upgrades and manageability. There are plenty of guides available with just a google search away.
The YAMS guide uses docker, so I should be fine on that front. I've used it before, but I'll try and get the hang of it better this time, maybe try to use portainer alongside it as well.

With Pi4, direct play (without transcoding) should work fine.
With Tailscale in the middle, things can get a bit tricky if you are not on the same LAN and tailscale is not able to find a direct connection, forcing you to go via a relay. In that case, you'd get pretty low bandwidth making direct playback mostly unfeasible.
Yeah, saw how playback got affected when a 4K syncplay for two users (no transcoding) kept buffering for ages. What's the solution to this? Reverse proxy or something else?

Get a mini pc with intel 8th gen cpu. Itll be good for other services you may wanna run in future as well.
Yep, that's the next step -this time I want to basically set this up to build confidence and use it as a proof of concept first. Will then upgrade to a mini pc and relegate the pi for just pi-hole and some other stuff.
 
Yeah, saw how playback got affected when a 4K syncplay for two users (no transcoding) kept buffering for ages. What's the solution to this? Reverse proxy or something else?
Were both users on the same LAN?
If not, this is most likely because your connection is going via a relay. A reverse proxy with an easily routable IP would help in this case, making your connection direct instead of via a relay. For my setup I use a cheap digitalocean VPS to act as a reverse proxy, which has a public IP (with port 41641 open for UDP) so is easily able to establish direct connections with devices on all networks.

You can check the type of connection via a tailscale ping from the client. It'll show something like this:

Code:
> tailscale ping jellyfin

pong from jellyfin (100.86.59.20) via DERP(blr) in 39ms
pong from jellyfin (100.86.59.20) via DERP(blr) in 39ms
pong from jellyfin (100.86.59.20) via DERP(blr) in 39ms
pong from jellyfin (100.86.59.20) via DERP(blr) in 41ms
pong from jellyfin (100.86.59.20) via xx.xx.xx.xx:56828 in 43ms

You want it to say something like the last line here (not via DERP). The tailscale docs have details on what can be done to make the connection direct: https://tailscale.com/kb/1257/connection-types#obstacles-to-a-direct-connection

If the connection is already direct and bandwidth is not an issue, your bottleneck might be somewhere other than the network (IO/CPU etc).
 
Last edited:
Back
Top