With its solid performance, zero-clutter design, and suite of useful plugins, Jellyfin is easily one of the best utilities for organizing and streaming your media collection to any device in your household. It’s also fairly easy to deploy, and you’ve got the option to host it inside Docker, Podman, or LXC containers.

Speaking of LXC services, Jellyfin pairs exceedingly well with Proxmox, provided you’re willing to put in some extra effort to configure the container. So, here’s a detailed guide to help you self-host Jellyfin on your Proxmox workstation.

Deploying the Jellyfin server

The first step to turning your Proxmox system into a media-streaming war machine involves creating a Jellyfin container inside a runtime environment. Since we’re going the LXC route, you can use the Jellyfin image available on the community-managed Proxmox VE-Helper Scripts repository to quickly deploy the container.

  1. Select your preferred Proxmox node and open its Shell tab.
    Switching to the Shell tab in the Proxmox UI
  2. Paste the following command into the terminal interface and hit Enter:
    bash -c "$(wget -qLO - https://github.com/community-scripts/ProxmoxVE/raw/main/ct/jellyfin.sh)"
    Running the script to grab the Jellyfin package
  3. Hit Yes when Proxmox asks for your approval before choosing Advanced Settings.
    Choosing Advanced Settings in the Proxmox UI
  4. Use your arrow keys to hover the cursor over the Privileged option, press Spacebar to select it, and hit Enter to proceed to the next step.
    Choosing the Privileged option when creating an LXC in Proxmox
  5. Be sure to type a Root Password for the Jellyfin LXC.
    Entering a Root password when creating an LXC in Proxmox
  6. Choose the ideal Storage, CPU, Memory, and Network settings for your Jellyfin container.
    Choosing the Storage Space when creating an LXC in Proxmox
  7. Hit Yes when the script asks you to enable Root access and wait for Proxmox to finish creating and deploying the container.
    Enabling Root Access for an LXC container
  8. Soon, Proxmox will generate an IP address for your Jellyfin server, and you can use it to access the container’s web UI.
    Using the IP address to access a Jellyfin LXC

Configuring the Jellyfin web UI

Now that your Jellyfin server is online, it’s time to go through its initial setup wizard.

  1. Choose the Display Language and hit Next on the Welcome screen.
    Choosing the Display Language at the Jellyfin welcome page
    Remember to choose Next after each step in this section.
  2. Pick a Username and Password for your Jellyfin container.
    Entering the Username and Password in the Jellyfin initialization wizard
  3. Leave the Media Libraries tab as is and pick your Language and Country/Region settings.
    Entering the Language and Country/Region settings in the Jellyfin initialization wizard
  4. Agree to Allow remote SSH connections to the Jellyfin server.
    Allowing SSH connections to the Jellyfin initialization wizard
  5. Tap Finish to finish the configuration process and enter the Jellyfin dashboard.
    Finishing the Jellyfin initialization wizard

Mounting an SMB share to Proxmox

Although you’ve successfully deployed the Jellyfin server, you may have noticed that its web UI is extremely barren, with zero media files as far as the eye can see. That’s because you’ll need to link your media library with the Jellyfin instance. Assuming you’ve already stored your movies, TV shows, and podcasts on a NAS and have an SMB share set up beforehand, you’ll have to mount the SMB drive to the Proxmox host first. To do so,

  1. Navigate to the Datacenter tab on the Proxmox web UI and pick the Storage tab.
    Accessing the Storage tab in the Proxmox web UI
  2. Click on Add and select SMB/CIFS from the drop-down menu.
    Adding a new SMB share to the Proxmox web UI
  3. Create an ID for the share, type the IP address of your NAS into the Server field, enter the Username and Password of the SMB share, and use the Share tab to select the folder where you’ve stored the media files on your NAS before hitting the Add button.
    Selecting the SMB/CIFS settings in the Proxmox web UI

Connecting the SMB share to your Jellyfin server

With the SMB share connected to your Proxmox host, you’ll have to mount it on your Jellyfin LXC before you can access your media files from its dashboard. To do so,

  1. Switch to the Console tab of your Jellyfin server and enter root as the Username followed by the Password you’d set earlier.
    Logging into the Jellyfin container
  2. Execute the mkdir command to create a new directory on your Jellyfin container.
    mkdir /new-directory-for-media-files
    Using the mkdir command to create a new folder inside Jellyfin
  3. Head back to the Shell tab of your Proxmox node and open the config file that corresponds to the number of your Jellyfin LXC.
    nano /etc/pve/lxc/container-number.conf
    Accessing the container config file using the nano editor
  4. Append the mpo (the path to the SMB share on your Proxmox host) and mp (the directory you created on your Jellyfin LXC) path variables into the file.
    mp0: /mnt/pve/smb-location,mp=/new-directory-for-media-files
    Mounting an SMB share to the Jellyfin container
  5. Tap Ctrl+X, Y, and Enter to save and exit the config file and restart the Jellyfin LXC container.
  6. Head back to the Jellyfin server's web UI and click on the Dashboard option.
    Accessing the Jellyfin Dashboard
  7. Switch to the Libraries tab and select the Add Media Library option.
    Adding a Media Library to the Jellyfin LXC
  8. Choose the Content Type of your media library, use the + button to select the folder where you mounted the SMB share, and hit OK.
    Adding a Media Library to the Jellyfin LXC

Turn your PVE server into a media-streaming powerhouse

Assuming you’ve followed all the steps correctly, your media files will appear inside the Jellyfin dashboard and the app will pull the metadata for your videos from its sources. If it doesn’t, you can create local .nfo files inside the SMB share and fill in the right parameters. I also recommend installing some plugins to boost the functionality of your Jellyfin server even further.