How to Set Up a Plex Media Server on a Mini PC | Mini PC Lab
By Mini PC Lab Team · February 4, 2026 · Updated March 27, 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 personally tested or thoroughly researched.

Plex on a mini PC gives you Netflix-quality streaming from your own movie and TV collection, playable on any device — phone, TV, browser, or Plex app. This guide covers installation via Docker, library configuration, and hardware transcoding setup so your mini PC isn’t burning CPU to convert video formats.
Before You Start
Requirements:
- Mini PC running Linux (Debian 12 or Ubuntu 24.04 recommended)
- Docker installed — see our Docker setup guide if needed
- Storage for your media library (external USB drive, NAS, or internal NVMe)
- Plex account (free) at plex.tv — required for the initial claim token
- Estimated time: 20–30 minutes
Hardware note: Hardware transcoding works well on Intel (Quick Sync) and AMD (VA-API with Radeon 780M). The Intel N150 handles 1080p hardware transcoding. For 4K, use an AMD Ryzen (SER9 PRO+) or Intel Core mini PC with Quick Sync. See our best mini PC for Plex guide for specific recommendations.
Step 1: Prepare Your Media Storage
Plex needs a consistent path to your media files. Set up your storage before configuring Plex.
For USB external drives:
# Find your drive
lsblk
# Example output shows /dev/sda with your drive
# Create a mount point
sudo mkdir -p /media/plex
# Auto-mount on boot — add to /etc/fstab
# First, find the UUID of your drive
sudo blkid /dev/sda1
# Add to /etc/fstab (replace UUID with yours)
echo "UUID=your-uuid-here /media/plex ext4 defaults,nofail 0 2" | sudo tee -a /etc/fstab
# Mount now
sudo mount -a
For internal NVMe (second drive or dedicated partition):
# Format if new (replace /dev/nvme1n1 with your device)
sudo mkfs.ext4 /dev/nvme1n1
# Get UUID
sudo blkid /dev/nvme1n1
# Mount
sudo mkdir -p /media/plex
echo "UUID=your-uuid-here /media/plex ext4 defaults 0 2" | sudo tee -a /etc/fstab
sudo mount -a
Recommended directory structure:
/media/plex/
├── Movies/
│ ├── The Matrix (1999)/
│ │ └── The Matrix (1999).mkv
│ └── Inception (2010)/
│ └── Inception (2010).mkv
├── TV Shows/
│ └── Breaking Bad/
│ ├── Season 01/
│ │ ├── Breaking.Bad.S01E01.mkv
│ │ └── Breaking.Bad.S01E02.mkv
│ └── Season 02/
└── Music/
Plex uses this naming format for automatic metadata matching. The year in parentheses for movies is required for accurate matching.
Step 2: Get Your Plex Claim Token
A claim token links your Plex installation to your Plex account during initial setup.
- Log in at plex.tv/claim
- Copy the token (it looks like
claim-xxxxxxxxxxxxxxxxxxxx) - You have 4 minutes to use it — generate it right before running the container
Step 3: Install Plex via Docker Compose
mkdir -p ~/services/plex
cd ~/services/plex
Create the docker-compose.yml:
services:
plex:
image: lscr.io/linuxserver/plex:latest
container_name: plex
network_mode: host # Required for Plex device discovery
environment:
- PUID=1000 # Your user's ID (check with: id -u)
- PGID=1000 # Your group's ID (check with: id -g)
- TZ=America/New_York
- VERSION=docker
- PLEX_CLAIM=claim-xxxxxxxxxxxxxxxxxxxx # Replace with your token
volumes:
- ./config:/config # Plex config, database, metadata
- /media/plex:/media # Your media library
devices:
- /dev/dri:/dev/dri # GPU passthrough for hardware transcoding
restart: unless-stopped
docker compose up -d
Plex starts and is accessible at http://[YOUR-IP]:32400/web.
Step 4: Initial Plex Setup
Open http://[YOUR-IP]:32400/web in a browser.
- Name your server — something memorable like “Home Plex”
- Add libraries:
- Click “Add Library” → select type (Movies, TV Shows, Music)
- Set the folder path to
/media/Movies(or wherever your media is inside the container — we mapped/media/plexon the host to/mediain the container) - Click “Add Library” — Plex starts scanning
The initial library scan can take 5–30 minutes depending on your collection size. Plex fetches metadata, cover art, and episode descriptions from online databases.
Step 5: Enable Hardware Transcoding
Hardware transcoding uses your mini PC’s GPU to convert video formats instead of the CPU. This is the difference between smooth 4K playback and a maxed-out CPU.
Enable in Plex settings:
- Open Plex web UI → Settings (wrench icon)
- Navigate to Settings → Transcoder
- Enable “Use hardware acceleration when available”
- Enable “Use hardware-accelerated video encoding”
Verify GPU access on the host:
# Check GPU render node exists
ls /dev/dri/
# Should show: card0 renderD128
# Check GPU is detected by the Intel/AMD driver
ls -la /dev/dri/renderD128
Add your user to the render group for GPU access:
# Check what group owns renderD128
ls -la /dev/dri/renderD128
# Example: crw-rw---- 1 root render ...
# Add your user (and the docker user) to that group
sudo usermod -aG render $USER
sudo usermod -aG video $USER
Intel Quick Sync verification:
# Install Intel media driver tools
sudo apt install -y intel-media-va-driver vainfo
# Check VA-API support
vainfo 2>&1 | grep VAProfileH264
# Should show H264 encode/decode capabilities
AMD Radeon 780M VA-API verification:
# Install AMD VA-API driver
sudo apt install -y mesa-va-drivers vainfo
# Check support
vainfo 2>&1 | grep -i H264
# Should show H264 capabilities via radeonsi
Test hardware transcoding:
Start playing a video in Plex and force transcoding by setting quality to a lower setting than the source. Go to Plex Dashboard → Active Streams. If you see “(hw)” next to the transcode activity, hardware acceleration is working.
Step 6: Enable Remote Access
To watch Plex outside your home network:
- Settings → Remote Access
- Enable “Allow me to access my media outside my home”
- Plex uses relay servers by default — no port forwarding required
Optional: Direct connection (better performance):
Forward port 32400 on your router to your mini PC’s IP. In Plex Remote Access settings, enter your external IP and port 32400. Plex will test the direct connection.
Best option for remote access: Tailscale
Connect your phone and server via Tailscale instead of opening ports. Your Plex server appears on the Tailscale network and direct playback works without relay servers. No router configuration needed.
Jellyfin as a Free Alternative
Jellyfin is a fully open-source, free alternative to Plex with no subscription requirement for hardware transcoding. If you don’t want a Plex Pass, Jellyfin handles everything Plex does including hardware transcoding via VA-API.
# ~/services/jellyfin/docker-compose.yml
services:
jellyfin:
image: lscr.io/linuxserver/jellyfin:latest
container_name: jellyfin
environment:
- PUID=1000
- PGID=1000
- TZ=America/New_York
volumes:
- ./config:/config
- /media/plex:/data/media
ports:
- "8096:8096"
devices:
- /dev/dri:/dev/dri # Hardware transcoding
restart: unless-stopped
Access at http://[YOUR-IP]:8096. The setup wizard is similar to Plex. Enable hardware transcoding under Admin → Dashboard → Playback → Hardware Acceleration → select “Video Acceleration API (VAAPI).”
Troubleshooting
Hardware transcoding shows “Conversion failed”
Usually a driver or permission issue. Verify /dev/dri/renderD128 exists, your user has render group access, and vainfo shows VA-API capabilities. Restarting Docker after adding user to render group is required.
Library scan finds no media
Check that your folder names match Plex’s expected format. Movies need the year: Movie Name (2024)/Movie Name (2024).mkv. TV shows need Season folders: Show Name/Season 01/Show.S01E01.mkv. Verify file permissions — Plex runs as the PUID/PGID you specified.
Plex shows buffering on remote playback
Check bandwidth first: 1080p direct play needs ~10Mbps upload. If upload is limited, enable transcoding and set a lower quality cap in Plex settings. For 4K remote playback, hardware transcoding is required on most network connections.
”Not claimed” — server doesn’t appear in Plex web
The claim token expired (4-minute window). Stop the container, remove the config directory, regenerate a new claim token, and run docker compose up -d again. Only needed once.
What to Do Next
- Add Overseerr for request management — users can request new movies/shows
- Add Tautulli for Plex usage statistics and notifications
- Set up Radarr + Sonarr + qBittorrent for automated media acquisition
- See our best mini PC for Plex guide if you need more transcoding headroom
Quick Price Summary
- Beelink EQ14 — 1080p Quick Sync transcoding
- Beelink SER9 PRO+ — 4K VA-API via Radeon 780M
- GMKtec K11 — simultaneous 4K streams
Recommended Hardware
→ Check Current Price: Beelink EQ14 on Amazon — Intel N150, 1080p hardware transcoding via Quick Sync, 6W idle → Check Current Price: Beelink SER9 PRO+ on Amazon — Ryzen 7, Radeon 780M for 4K VA-API transcoding, 8W idle → Check Current Price: GMKtec K11 on Amazon — Ryzen 9 8945HS, best iGPU for simultaneous 4K streams