There have been multiple accounts created with the sole purpose of posting advertisement posts or replies containing unsolicited advertising.

Accounts which solely post advertisements, or persistently post them may be terminated.

Guide: Jellyfin + Jellyseer

So now that we’ve setup our arr-stack and are able to download stuff either via usenet or torrents we can actually set up something to consume our media on!

I’ve used Plex in the past and while it is a much more polished experience than jellyfin, the decisions made by the plex team are not really confidence inspiring when it comes to privacy. So i’ve switched over to jellyfin and i am more than happy with it!

Jellyseer on the other hand is a much more polished UI for Sonarr and Radarr. It connects to your jellyfin instance to chech what is available and it connects to your sonarr and radarr instance to tell them what you want to download. It’s super simple, has an integrated browser for all shows and movies for you to find and looks really frigging good. This is also amazing if you “offer your services” to friends and family, as this is a super easy to understand website for your other users to “request” shows and movies. You can configure if some users requests should automatically be approved or if you want to manually click yes and no for each request.

So let’s get going!

  1. Preamble
    ===========

All these guides assume you have basic knowledge about docker & docker compose. To quickly summarize the methods here:

You either use a webui to manage your docker-compose like Dockge or you create a folder and a docker-compose.yaml for each service listed here and copy the contents of each of them into that docker-compose.yaml; IMPORTANT: You HAVE to name them docker-compose.yaml exactly like that. Do NOT name them radarr.yaml for example. After you created a docker-compose.yaml and filled it with the contents here, you simply run docker compose up -d

Since neither Jellyfin nor Jellyseer actually download some “problematic files” there is no need to run them through any VPN. Of course it doesn’t hurt to route them through the same VPN you have for sonarr / radarr and the likes.

I will provide two seperate docker-compose.yaml for the Jellyfin installation. One with hardware accelerated transcoding for NVidia cards, and one that has no hw-accel.


  1. Folder Structure
    ===================

This is based entirely on my previous posts on how to set up your arr-stack (usenet or torrents. If you don’t use an arr-stack or already have one up and running with a different folder structure you’re on your own here.

Since we already established this folder structure we can simply add two more folders for jellyfin and jellyseer in the configs tree:


<span style="color:#323232;">arr-stack (for this example let's say it's located in /mnt/arr-stack)
</span><span style="color:#323232;">	|---- media
</span><span style="color:#323232;">	    |---- movies
</span><span style="color:#323232;">	    |---- shows
</span><span style="color:#323232;">	    |---- music
</span><span style="color:#323232;">	    |---- etc.
</span><span style="color:#323232;">	|---- configs
</span><span style="color:#323232;">	    |---- radarr
</span><span style="color:#323232;">	    |---- sonarr
</span><span style="color:#323232;">	    |---- qbittorrent
</span><span style="color:#323232;">	    |---- jellyfin
</span><span style="color:#323232;">            |---- jellyseer
</span><span style="color:#323232;">	    |---- etc.
</span><span style="color:#323232;">	|---- torrents
</span><span style="color:#323232;">	    |---- complete
</span>

also, if you have a fast SSD in your system with enough free storage you can also create a folder there for your jellyfin cache. Let’s assume it is on /mnt/fastssd/jellyfin/cache This can make a drastic difference in performance and buffering.


  1. Docker-Compose Files for each Service
    ========================================

2.1.1 Jellyfin without hardware accelerated transcoding


<span style="color:#323232;">version: "3.5"
</span><span style="color:#323232;">services:
</span><span style="color:#323232;">  jellyfin:
</span><span style="color:#323232;">    image: jellyfin/jellyfin
</span><span style="color:#323232;">    container_name: jellyfin
</span><span style="color:#323232;">    user: 1000:1000
</span><span style="color:#323232;">    network_mode: host
</span><span style="color:#323232;">    volumes:
</span><span style="color:#323232;">      - /mnt/arr-stack:/mnt/arr-stack
</span><span style="color:#323232;">      - /mnt/arr-stack/configs/jellyfin:/config
</span><span style="color:#323232;">      - /mnt/fastssd/jellyfin/cache:/cache
</span><span style="color:#323232;">    restart: unless-stopped
</span>

2.1.2 Jellyfin WITH hardware accelerated transcoding (NVidia)


<span style="color:#323232;">version: "3.5"
</span><span style="color:#323232;">services:
</span><span style="color:#323232;">  jellyfin:
</span><span style="color:#323232;">    image: jellyfin/jellyfin
</span><span style="color:#323232;">    container_name: jellyfin
</span><span style="color:#323232;">    user: 1000:1000
</span><span style="color:#323232;">    network_mode: host
</span><span style="color:#323232;">    volumes:
</span><span style="color:#323232;">      - /mnt/arr-stack:/mnt/arr-stack
</span><span style="color:#323232;">      - /mnt/arr-stack/configs/jellyfin:/config
</span><span style="color:#323232;">      - /mnt/fastssd/jellyfin/cache:/cache
</span><span style="color:#323232;">    restart: unless-stopped
</span><span style="color:#323232;">    extra_hosts:
</span><span style="color:#323232;">      - host.docker.internal:host-gateway
</span><span style="color:#323232;">    runtime: nvidia
</span><span style="color:#323232;">    deploy:
</span><span style="color:#323232;">      resources:
</span><span style="color:#323232;">        reservations:
</span><span style="color:#323232;">          devices:
</span><span style="color:#323232;">            - capabilities:
</span><span style="color:#323232;">                - gpu
</span>

To test if your server is properly configured to run docker containers with your NVidia GPU you can run the following command:

sudo docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi

This will open NVidia-SMI as a docker container. If you see a table there with information about your GPU and the power consumption etc. you’re good to go! If not, please look up how to configure your docker host for NVidia GPUs.

2.2 Jellyseer


<span style="color:#323232;">version: "3"
</span><span style="color:#323232;">services:
</span><span style="color:#323232;">  jellyseerr:
</span><span style="color:#323232;">    image: fallenbagel/jellyseerr:latest
</span><span style="color:#323232;">    container_name: jellyseerr
</span><span style="color:#323232;">    environment:
</span><span style="color:#323232;">      - LOG_LEVEL=debug
</span><span style="color:#323232;">      - TZ=Europe/Berlin #Changethis to your timezone!
</span><span style="color:#323232;">    ports:
</span><span style="color:#323232;">      - 5055:5055
</span><span style="color:#323232;">    volumes:
</span><span style="color:#323232;">      - /mnt/arr-stack/configs/jellyseerr:/app/config
</span><span style="color:#323232;">    restart: unless-stopped
</span>

  1. Configuring each service
    ===========================

After we’ve started our services it’s time to open the webui’s and configure them.

3.1 Jellyfin

  1. Open the webui on ipofyourserver:8096
  2. Select Language
  3. Set up username + password
  4. Add a media library
    1. Under content type select the one to start with; Lets assume "Shows"
    2. Give it a "Display Name"
    3. Under Folder click on the + Icon
    4. Browse to /mnt/arr-stack/media/shows and click OK
  5. Add any other Library in the same manner; Movies, Music

3.1.1 Hardware Acceleration

Obviously this part only for if you set jellyfin up with your GPU.

  1. Click the Hamburger Menu in the left upper corner
  2. Go to Settings
  3. Under Administration, click on Dashboard
  4. Click on Playback
  5. Click on Transcoding
  6. Under Hardware Acceleration select "NVidia NVENC"
  7. Select all checkboxes on the different codecs
  8. Enable tone-mapping and keep the algorithm

This is the fundamental basic setup. Jellyfin has an extensive Plugin ecosystem for all different things to do. Most of them make it much more easy to get correct metadata for different types of content.

3.2 Jellyseer

  1. Open the webui ipofyourserver:5055
  2. Click on "Use your Jellyfin Account"
  3. Enter your jellyfin URL which is ipofyourserver:8096
  4. Enter the credentials you set up in your jellyfin instance
  5. Sign In
  6. Click on "Sync Libraries"
  7. Check your libraries
  8. Click on Start Scan
  9. Click on Continue
  10. Click on Add Radarr Server
  11. Check "Default Server"
  12. Name it "Radarr"
  13. Enter the IP of your Radarr server
  14. Enter your Radarr API Key (you find it in Radarr -> Settings -> General)
  15. Click on Test at the bottom
  16. Select your Quality Profile that you want as a default
  17. Select your Radarr Root Folder
  18. Click on Add Server
  19. Rinse and Repeat with adjusted values for Sonarr

Now if you find a movie or show you can click on “Requst” and see that it will automatically push that request to either radarr or sonarr and they will start looking and downloading for it.


  1. You’re done
    ==============

Now you also have a fully functional and possibly hardware accelerated Jellyfin instance that can do movies, shows and music.

One more interesting addition to this stack would be Jellystats

If you’re looking for something for adult content that goes hand in hand with Whisparr, look into stash and additionally xbvr if you’re looking for a VR library and player.

mino ,
@mino@lemmy.ml avatar

Cool. I recently setup jellyfin and radarr/sonarr but was then too exhausted to try jellyseer. This post made me realize it is trivial. I will definitely set that up as well.

Nice post!

criitz ,

Is jellyseer similar to overseerr?

Syer10 ,

Its a fork of Overaeerr for JellyFin

femtech ,

Well for all 3, it works with Plex, jelly, and emby. Also overseer admin has not had time to maintain their repo so jellyseerr is better even if you keep using Plex.

RandomLegend OP ,
@RandomLegend@lemmy.dbzer0.com avatar

It’s a fork of it specifically for jellyfin instead of Plex, so yes 👍

idegenszavak ,

version: property isobsolete, and you can safely remove those lines: github.com/compose-spec/compose-spec/…/spec.md#ve…

RandomLegend OP ,
@RandomLegend@lemmy.dbzer0.com avatar

Nice heads up

fungos ,

You can also replace common or shared attributes between your configs using env files: docs.docker.com/…/set-environment-variables/-…

Things I put there: UIDs, GIDs, TZ, shared mount paths, etc.

RandomLegend OP ,
@RandomLegend@lemmy.dbzer0.com avatar

You’re right, but introducing .env files would be an extra step for each and every docker process here.

This was meant as an absolutely fundamental basic setup. If you know your way around docker you also know what to improve from those guides.

Everyone who does not know this, can get the services up and running without extra steps.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • [email protected]
  • random
  • lifeLocal
  • goranko
  • All magazines