Skip to main content
Mini PC Lab logo
Mini PC LabMini PCs for Homelabs
tutorials

How to Set Up Plex on a Mini PC 2026

By Max · May 2, 2026 · Updated August 6, 2026

This article contains affiliate links. If you purchase through our links, we may earn a commission at no extra cost to you. We only recommend products we’ve thoroughly researched and verified.

How to set up Plex on a mini PC hero image

Plex turns your mini PC into a media server that streams to every screen in your home — and with hardware transcoding enabled, it does it without breaking a sweat. This guide walks through the full setup: installing Plex via Docker, configuring hardware transcoding with VA-API, organizing your media library, and enabling remote access.

What you need:

  • A mini PC running Ubuntu Server 24.04 LTS recommended or Debian 12
  • A Plex Pass subscription for hardware transcoding
  • Media files on local storage or an external drive

Recommended hardware:


Step 1: Prepare the Mini PC

Install Ubuntu Server 24.04 LTS

Download Ubuntu Server 24.04 LTS, flash to USB with Balena Etcher, and install. During setup:

  • Enable SSH server
  • Set a static hostname e.g., plex-server
  • Create a non-root user account

After first boot, update the system:

sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget nano htop

Set a Static IP Address

Assign a static IP so your Plex server is always reachable at the same address:

# Find your network interface name
ip link show

# Edit netplan config
sudo nano /etc/netplan/01-netcfg.yaml
network:
  version: 2
  ethernets:
    enp1s0:          # Replace with your interface name
      dhcp4: false
      addresses:
        - 192.168.1.100/24   # Replace with your desired IP
      routes:
        - to: default
          via: 192.168.1.1   # Replace with your router IP
      nameservers:
        addresses: [1.1.1.1, 8.8.8.8]
sudo netplan apply

Step 2: Install Docker

# Install Docker via official script
curl -fsSL https://get.docker.com | sh

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

# Apply group change without re-login
newgrp docker

# Verify installation
docker run hello-world

Step 3: Install Intel VA-API Drivers Intel iGPU Only

For the Beelink EQ14 N150 and GEEKOM IT12 i5-12450H:

# Install VA-API drivers for Intel iGPU
sudo apt install -y \
  intel-media-va-driver-non-free \
  vainfo \
  i965-va-driver

# Verify hardware decoding works
vainfo

Expected output should list supported decode profiles including H264, HEVC H265, VP9, and AV1:

VAEntrypointVLD: H264
VAEntrypointVLD: HEVC/H265
VAEntrypointVLD: VP9
VAEntrypointVLD: AV1

If vainfo returns errors, ensure the kernel modules are loaded:

sudo modprobe i915
echo "i915" | sudo tee /etc/modules-load.d/i915.conf
# AMD VA-API is included in mesa-va-drivers
sudo apt install -y mesa-va-drivers vainfo

# Verify
LIBVA_DRIVER_NAME=radeonsi vainfo

Step 4: Deploy Plex via Docker Compose

Create the Plex directory structure:

mkdir -p ~/plex/{config,transcode}
mkdir -p /mnt/media/{movies,tvshows,music}

Mount your external drive if needed:

# Find drive UUID
sudo blkid

# Mount external HDD
sudo mkdir -p /mnt/media
echo "UUID=your-drive-uuid /mnt/media ext4 defaults 0 2" | sudo tee -a /etc/fstab
sudo mount -a

Create the Docker Compose file:

mkdir -p ~/plex && nano ~/plex/docker-compose.yml
services:
  plex:
    image: lscr.io/linuxserver/plex:latest
    container_name: plex
    network_mode: host     # Enables local network discovery
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York  # Replace with your timezone
      - VERSION=docker
      - PLEX_CLAIM=claim-xxxx  # Get from plex.tv/claim (valid 4 minutes)
    volumes:
      - ~/plex/config:/config
      - /mnt/media:/media        # All your media
      - ~/plex/transcode:/transcode  # Transcode tmp dir
    devices:
      - /dev/dri:/dev/dri        # Hardware transcoding (Intel/AMD)
    restart: unless-stopped

Get your Plex claim token: Visit plex.tv/claim while logged in to your Plex account. Copy the claim-xxxx token — it expires in 4 minutes, so start the container immediately after.

Start Plex:

cd ~/plex
docker compose up -d

# Watch startup logs
docker compose logs -f plex

Step 5: Initial Plex Configuration

Open Plex in your browser: http://192.168.1.100:32400/web

Add Media Libraries

  1. Click “Add Library” in the setup wizard
  2. Select library type: Movies, TV Shows, or Music
  3. Add folders: /media/movies, /media/tvshows, etc.
  4. Let Plex scan and match your media takes minutes to hours depending on library size

Enable Hardware Transcoding

In Plex Web → Settings → Transcoder:

  1. Enable “Use hardware acceleration when available” requires Plex Pass
  2. Enable “Use hardware-accelerated video encoding”
  3. Set “Transcoder quality” to “Make my CPU hurt” allows more simultaneous streams

Verify hardware transcoding is active by starting a stream that requires transcoding e.g., play a HEVC file on a device that only plays H.264. In Plex Web → Dashboard, the session should show “hw” next to the video codec.


Step 6: Organize Your Media

Plex requires specific folder naming to match your content correctly.

Movies:

/media/movies/
├── The Dark Knight (2008)/
│   └── The Dark Knight (2008).mkv
├── Interstellar (2014)/
│   └── Interstellar (2014).mkv

TV Shows:

/media/tvshows/
├── Breaking Bad/
│   ├── Season 01/
│   │   ├── Breaking Bad - S01E01 - Pilot.mkv
│   │   └── Breaking Bad - S01E02 - Cat's in the Bag.mkv

Use FileBot or tinyMediaManager to auto-rename files to Plex’s expected format.


Step 7: Enable Remote Access

Option A: Plex Relay Simplest — No Router Configuration

Plex automatically uses relay servers for remote access without port forwarding. Performance is limited usually under 5 Mbps — adequate for 1080p but not ideal for 4K.

Option B: Port Forwarding Best Performance

Forward port 32400 TCP on your router to your Plex server’s IP:

  1. Log in to your router admin panel
  2. Find “Port Forwarding” or “NAT” settings
  3. Add rule: External port 32400 → Internal IP 192.168.1.100, port 32400

In Plex Settings → Remote Access → verify “Fully accessible outside your network” appears.

Option C: WireGuard VPN Most Secure

Run WireGuard on the same mini PC — access Plex and all home services through the VPN without opening any ports:

# WireGuard in Docker
docker run -d \
  --name=wg-easy \
  -e WG_HOST=your.ddns.domain.com \
  -e PASSWORD=adminpassword \
  -p 51820:51820/udp \
  -p 51821:51821/tcp \
  -v ~/.wg-easy:/etc/wireguard \
  --cap-add NET_ADMIN \
  ghcr.io/wg-easy/wg-easy

Access Plex at http://192.168.1.100:32400/web through the VPN.


Troubleshooting

Hardware Transcoding Not Working

# Verify /dev/dri exists on host
ls -la /dev/dri/

# Check container has access
docker exec plex ls -la /dev/dri/

# Check VA-API works inside container
docker exec plex vainfo

If /dev/dri/renderD128 permissions deny the abc user in the container:

# Get video group GID
getent group video

# Add to docker-compose.yml
environment:
  - PGID=44  # video group GID

Plex Can’t Find Media

# Check media permissions inside container
docker exec plex ls -la /media/movies/

# Ensure PUID/PGID in compose matches your user
id $USER
# Copy uid and gid values to PUID/PGID

Database Corruption After Crash

# Restore from Plex backup
ls ~/plex/config/Library/Application\ Support/Plex\ Media\ Server/Plug-in\ Support/Databases/

# Plex keeps recent database backups automatically
# Rename the corrupt database and Plex rebuilds from the backup

Hardware Transcoding Performance Guide

How Many Streams Can Your Hardware Handle?

Mini PCCPUiGPUSimultaneous 4K HEVC → 1080p H.264
Beelink MINI S12N95Intel UHD1 VA-API
Beelink EQ14N150Intel HD1-2 VA-API
GEEKOM IT12i5-12450HIntel UHD 7703-4 Quick Sync
Beelink SER9R7 H255Radeon 780M2-3 VA-API

Direct Play vs Transcoding

Direct Play no transcoding is always preferable — zero CPU load, perfect quality:

  • Enable on modern Plex clients Apple TV, Roku, Android TV that support HEVC/H265
  • Set “Maximum quality” on client to prevent Plex from transcoding unnecessarily
  • Direct Play requires the client device to support the video codec

Transcoding is needed when:

  • The client device can’t play the source codec H.265/HEVC → H.264
  • Bandwidth is limited 4K → 1080p downscale for remote streaming
  • Multiple audio tracks need remuxing

Optimizing for Direct Play

Configure client devices to request highest quality:

  1. In Plex app settings: set “Remote Quality” to “Original”
  2. Set “Allow Insecure Connections” in server settings if using local IP
  3. Add Apple TV, Fire TV, or Chromecast with Google TV — all support H.265 Direct Play

Who Should Skip This Comparison

Frequently Asked Questions

Do I need to buy Plex Pass for a home server?

Plex Pass is required for: hardware transcoding on Linux, mobile sync for offline viewing, and Live TV/DVR features. If you only stream within your home network to devices that support Direct Play Apple TV, Roku: Plex Pass is not strictly necessary. For 4K with transcoding or multiple remote streams: Plex Pass is effectively required.

Is Jellyfin better than Plex for a mini PC?

Jellyfin is free and open-source — hardware transcoding works without a subscription. For a homelab on a budget where you own the hardware: Jellyfin eliminates the Plex Pass cost. Plex has better client apps particularly on mobile and smart TVs, better metadata matching, and the Discover feature. Choose Jellyfin for zero cost; choose Plex for better polish and broader client support.

How do I update Plex when a new version releases?

# Pull the latest LinuxServer Plex image and restart
cd ~/plex
docker compose pull && docker compose up -d

LinuxServer’s Plex image auto-updates when you pull — no manual version tracking needed.

Can I run Plex and Home Assistant on the same mini PC?

Yes. The EQ14 runs Plex, Home Assistant, Pi-hole, and other services simultaneously at ~8-10W average power. Plex spikes CPU/GPU during active transcoding sessions but drops back to near-idle between streams. Schedule resource-intensive tasks library scans, media optimization during low-activity hours.

Why does Plex say transcoding is not available?

Three common causes: 1 No active Plex Pass — hardware transcoding requires Plex Pass. 2 /dev/dri not passed to the container — check docker-compose.yml devices section. 3 VA-API driver not installed on the host — run vainfo on the host to verify GPU decode is working.

Can a mini PC run Plex Media Server?

Yes. Mini PCs with Intel or AMD iGPUs run Plex effectively. The Intel N150 Beelink EQ14 handles 1-2 simultaneous 4K HEVC transcodes via VA-API with Plex Pass. The Intel i5-12450H GEEKOM IT12 handles 3-4 simultaneous 4K streams using Intel Quick Sync. Direct Play no transcoding works on any mini PC — transcoding capability depends on the iGPU.

Enable Hardware Transcoding

Yes. Plex Pass is required to enable hardware-accelerated transcoding on Linux. Without Plex Pass, Plex falls back to software transcoding, which can struggle with 4K HEVC on N-series CPUs. Plex Pass costs $40/year or $120 lifetime. Hardware transcoding reduces CPU load from 80-100% to 10-25% per 4K stream, making it essential for multi-user Plex servers.

What is the best way to run Plex on a mini PC — Docker or bare metal?

Docker is recommended. The LinuxServer Plex Docker image is actively maintained, easy to update, and integrates cleanly with other containerized services. It provides /dev/dri device passthrough for hardware transcoding. Bare metal installation is an alternative if you prefer direct system access, but offers no advantage over Docker for Plex specifically.

Enable Hardware Transcoding

Pass /dev/dri to the Plex Docker container with the devices directive in docker-compose.yml. For Intel iGPUs EQ14, IT12: install intel-media-va-driver-non-free on the host. For AMD iGPUs SER9: ROCm is not used for Plex — Plex uses VA-API on AMD as well. In Plex Settings → Transcoder, enable ‘Use hardware acceleration when available’ — this option only appears with an active Plex Pass subscription.