bolt Valebyte VPS від $4/міс — NVMe, запуск за 60 секунд.

Отримати VPS arrow_forward
eco Початковий Туторіал

How to Install and Configure Jelly

calendar_month May 25, 2026 schedule 8 хв. читання visibility 57 переглядів
Установка и настройка Jellyfin на VPS: создание личного медиасервера с поддержкой аппаратного транскодирования
info

Потрібен сервер для цього гайду? Ми пропонуємо виділені сервери та VPS у 50+ країнах з миттєвим налаштуванням.

Потрібен сервер для цього гайду?

Розгорніть VPS або виділений сервер за хвилини.

Installing and Configuring Jellyfin on a VPS: Creating a Personal Media Server with Hardware Transcoding Support

TL;DR

In this guide, we will walk through the process of deploying Jellyfin — a completely open-source and free media server — on a virtual (VPS) or dedicated server. We will focus on ensuring maximum performance through hardware acceleration (Intel QuickSync, NVENC), setting up secure access via HTTPS, and automating system maintenance in the context of 2026.

  • Result: A personal alternative to Netflix/Kinopoisk without subscriptions or restrictions.
  • Technology Stack: Docker, Ubuntu 24.04/26.04 LTS, Caddy (Reverse Proxy), Intel/Nvidia Drivers.
  • Key Feature: Configuring Hardware Transcoding for smooth 4K playback on any device.
  • Security: Automatic SSL certificates and container isolation.
  • Setup Time: 40–60 minutes with basic terminal skills.

1. What we are setting up and why

Diagram: 1. What we are setting up and why
Diagram: 1. What we are setting up and why

Media consumption in 2026 has become complex: fragmentation of streaming services, regional restrictions, and the constant rise in subscription costs are forcing users back to the concept of self-hosting. Jellyfin is a fork of Emby that has remained fully committed to Open Source principles. Unlike Plex, there are no paid features like "Plex Pass" for access to hardware decoding or mobile applications.

Why do you need this on a VPS?

  • 24/7 Availability: Your library is accessible from anywhere in the world without the need to keep your home PC turned on.
  • Upload Speed: Data centers have gigabit channels, which is critical for streaming heavy content (Remux, 4K HDR).
  • Privacy: Only you own the data about what and when you watch. No telemetry for corporations.
  • Transcoding: Powerful server CPUs and GPUs allow for "on-the-fly" video format changes to match your internet bandwidth or the capabilities of the client device (e.g., an old tablet or smartphone).

In this guide, we will create a fault-tolerant system that will automatically update, protect itself from attacks, and provide a cinematic experience on any screen.

2. What VPS configuration is needed for this task

Diagram: 2. What VPS configuration is needed for this task
Diagram: 2. What VPS configuration is needed for this task

Choosing hardware is a critical stage. Jellyfin can run on a weak server, but user comfort directly depends on the type of content and the number of simultaneous users.

Characteristic Minimum (1080p, no transcoding) Recommended (4K, 2-3 transcoding streams) Expert level (10+ users)
CPU 2 vCPU (Intel/AMD) 4 vCPU (with AV1/HEVC support) 8+ vCPU or Dedicated Ryzen/Xeon
RAM 2 GB 4-8 GB 16 GB+
Disk 20 GB SSD (OS only) 100 GB+ NVMe (for metadata and cache) 2 TB+ (Block Storage or HDD)
GPU None Intel QuickSync (iGPU) Nvidia Tesla/Quadro/RTX

For most tasks, a suitable VPS with a modern Intel processor is ideal, as QuickSync (QSV) technology is built into many virtualized environments and allows for video transcoding with almost no load on the main CPU cores.

Important note on disks: Video files take up a lot of space. If your project involves storing terabytes of movies, consider connecting external object storage (S3) via rclone or renting a dedicated server with large HDD storage.

3. Server preparation: security and basics

Diagram: 3. Server preparation: security and basics
Diagram: 3. Server preparation: security and basics

We will use Ubuntu 24.04 LTS as the most stable and modern base. First, it is necessary to secure the server, as media servers often become targets for botnets.


# Update the package list and the system to the current state
sudo apt update && sudo apt upgrade -y

# Install necessary basic utilities
sudo apt install -y curl wget git vim software-properties-common apt-transport-https ca-certificates lsb-release

# Create a user with limited privileges (do not work under root!)
sudo adduser jellyadmin
sudo usermod -aG sudo jellyadmin

# Configure basic firewall (UFW)
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 8096/tcp
sudo ufw enable
    

It is also recommended to change the default SSH port and set up key-based authentication to minimize the risk of brute-force attacks. After that, we will install Fail2Ban to automatically block suspicious IPs.


sudo apt install -y fail2ban
# Basic configuration will protect SSH "out of the box"
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
    

4. Installing drivers for hardware transcoding

Diagram: 4. Installing drivers for hardware transcoding
Diagram: 4. Installing drivers for hardware transcoding

Hardware transcoding (HWA) is what distinguishes a professional setup from an amateur one. Without it, the CPU will be 100% loaded when trying to watch a 4K movie on a smartphone while on the go.

For Intel processors (QuickSync)

QuickSync is the favorite for VPS. Let's install the necessary drivers and OpenCL libraries:


# Install Intel drivers for video decoding
sudo apt install -y intel-media-va-driver-non-free libva-drm2 libva-x11-2 vainfo intel-opencl-icd

# Check driver availability
vainfo
    

You should see a list of supported profiles (Entrypoint: VAEntrypointVLD). If the command returns an error, make sure the graphics core is passed through in your virtualization settings.

For Nvidia graphics cards (NVENC)

If you have a powerful Dedicated server with an Nvidia GPU, use proprietary drivers:


# Add driver repository
sudo add-apt-repository ppa:graphics-drivers/ppa -y
sudo apt update

# Install the current driver (the version may be higher in 2026)
sudo apt install -y nvidia-driver-550 nvidia-utils-550 nvidia-container-toolkit

# Check GPU operation
nvidia-smi
    

5. Installing Docker and Docker Compose

Diagram: 5. Installing Docker and Docker Compose
Diagram: 5. Installing Docker and Docker Compose

Using Docker allows you to isolate Jellyfin from the main system, simplifies updates, and makes it easier to move the server to other hardware.


# Add official Docker GPG key
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Set up the repository
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# Add current user to the docker group
sudo usermod -aG docker $USER
    

After executing the commands, log back into the terminal for the permissions to take effect.

6. Deploying Jellyfin via Docker

Diagram: 6. Deploying Jellyfin via Docker
Diagram: 6. Deploying Jellyfin via Docker

We will create a directory structure for storing configuration and media files, and then describe the service in the docker-compose.yml file.


# Create working directories
mkdir -p ~/jellyfin/{config,cache,media}
cd ~/jellyfin

# Create configuration file
nano docker-compose.yml
    

Insert the following content into the file (example for Intel QuickSync):


services:
  jellyfin:
    image: jellyfin/jellyfin:latest
    container_name: jellyfin
    user: 1000:1000 # Your user ID (find out via id -u)
    network_mode: bridge
    ports:
      - 8096:8096
    volumes:
      - ./config:/config
      - ./cache:/cache
      - ./media:/media
    devices:
      # GPU passthrough for Intel QuickSync
      - /dev/dri/renderD128:/dev/dri/renderD128
      - /dev/dri/card0:/dev/card0
    restart: unless-stopped
    environment:
      - JELLYFIN_PublishedServerUrl=https://media.yourdomain.com
    
Tip: If you are using Nvidia, replace the devices section with GPU support via deploy.resources.reservations and specify NVIDIA_VISIBLE_DEVICES=all.

Run the container:


docker compose up -d
    

7. Network Configuration and HTTPS via Caddy

Diagram: 7. Network Configuration and HTTPS via Caddy
Diagram: 7. Network Configuration and HTTPS via Caddy

Opening port 8096 directly to the internet is unsafe. We will set up Caddy — a modern web server that will automatically obtain and renew SSL certificates from Let's Encrypt.


# Installing Caddy for Ubuntu
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1G 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1G 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy

# Configuring Caddyfile
sudo nano /etc/caddy/Caddyfile
    

Specify your domain in the configuration file:


media.yourdomain.com {
    reverse_proxy localhost:8096
    
    header {
        # Security settings
        Strict-Transport-Security "max-age=31536000;"
        X-XSS-Protection "1; mode=block"
        X-Frame-Options "DENY"
    }
}
    

Restart Caddy:


sudo systemctl restart caddy
    

8. Optimization and Library Setup

Diagram: 8. Optimization and Library Setup
Diagram: 8. Optimization and Library Setup

Now that the server is accessible via HTTPS, go to the web interface. After the initial setup (selecting a language and creating a user), you need to activate hardware acceleration.

  1. Go to the Dashboard.
  2. Go to the Playback section.
  3. In the Hardware acceleration drop-down list, select Intel QuickSync (or Video Acceleration API / NVENC).
  4. Check the formats supported by your CPU (usually H264, HEVC, MPEG2, VC1, VP9, AV1).
  5. Enable "Allow encoding in HEVC format" to save bandwidth.
  6. Save the changes.

Metadata Optimization: For faster interface performance, it is recommended to enable the "Save metadata into media folders" option. This will allow for faster library recovery when reinstalling the system.

9. Backups and System Maintenance

A media server is not just movie files, but also a huge database (watch progress, custom posters, collections). Losing this data is painful.

Backup Automation with Restic

Restic is a fast and secure tool for incremental backups. We will save the config folder to an external S3 storage.


sudo apt install restic

# Repository initialization (S3 example)
export AWS_ACCESS_KEY_ID=your_key
export AWS_SECRET_ACCESS_KEY=your_secret
restic -r s3:s3.amazonaws.com/your-bucket init

# Backup script
nano ~/backup_jellyfin.sh
    

#!/bin/bash
# Stop the container for DB integrity
docker stop jellyfin
restic -r s3:s3.amazonaws.com/your-bucket backup ~/jellyfin/config
docker start jellyfin
# Remove old backups (keep the last 7 days)
restic -r s3:s3.amazonaws.com/your-bucket forget --keep-daily 7 --prune
    

Add the script to crontab so it runs every night at 03:00.

10. Troubleshooting + FAQ

Why does 4K video lag during playback?

Check the "Dashboard" tab during playback. If it says "(Transcoding)", it means the client device does not support the file format and the server is transcoding it. Ensure Hardware Acceleration is enabled. If the processor can't keep up, limit the maximum bitrate in the user settings.

What is the minimum VPS configuration required?

For comfortable operation without transcoding (Direct Play), 2 vCPUs and 2 GB of RAM are sufficient. However, for a 4K library with transcoding, we recommend at least 4 vCPUs and the presence of Intel QuickSync hardware acceleration.

What to choose — VPS or dedicated for this task?

If your library is up to 500 GB, a VPS is more cost-effective. If you plan to store 10–20 TB of content, renting a dedicated server with several HDDs will be significantly cheaper in terms of cost per gigabyte.

"Playback Error" in Firefox browser?

Firefox has limited support for HEVC/H.265 codecs. Use Chromium-based browsers or the native Jellyfin Media Player app for PC — it supports all formats without transcoding.

How to add external subtitles?

Simply place the .srt file in the same folder as the video, with the exact same name. Jellyfin will pick it up automatically. You can also use the OpenSubtitles plugin.

Movie covers are not downloading?

Check the access permissions for the config folder. The user inside the container must have write permissions. Also, ensure the server has access to api.themoviedb.org.

11. Conclusions and Next Steps

We have successfully deployed a professional Jellyfin media server on a VPS, secured it with HTTPS, and configured hardware acceleration for smooth streaming. Now your media library is completely under your control.

What to do next?

  • Content Automation: Explore the "Arr-stack" (Sonarr, Radarr, Prowlarr) to automatically find and download new episodes of your favorite TV shows.
  • Monitoring: Install Grafana and Prometheus to track server load and network traffic.
  • Storage Expansion: If you run out of disk space, connect cloud storage via rclone mount using SSD caching.

Self-hosting is the path to digital independence. Jellyfin is the foundation of this process, providing commercial-level convenience with full code transparency.

Поділитися цим записом:

installing and configuring jellyfin on vps: creating a personal media server with hardware transcoding support
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.