Plex Media Server turns a pile of movie and TV files into a polished, Netflix-style library you can stream to a TV, phone, or laptop. This guide gets a server installed, claimed to your account, and scanning its first library — whether that server is a dedicated NAS or a Proxmox LXC container.
This is the first post in a short Plex series. Once the server is up, the next steps are keeping playback smooth (Direct Play and transcoding) and keeping the library tidy (naming and metadata).
Where to run Plex
Plex reads your media off disk and streams it out. The single most important rule is: run Plex as close to your media as possible. Streaming files across the network to a Plex server that then streams them out again wastes bandwidth and invites stutter.
| Your media lives on… | Run Plex on… | Why |
|---|---|---|
| A NAS (Synology, Asustor, QNAP, TrueNAS) | The NAS itself | Plex reads the array locally, no network hop |
| Proxmox cluster storage | An LXC container with the media bind-mounted | Lightweight, shares the host kernel |
| A single Linux box | That box | Simplest possible setup |
A VM works too, but an LXC container is lighter and starts faster. The only reason to prefer a VM is hardware transcoding with GPU passthrough, which needs the full device isolation a VM provides.
Task 1: Install Plex
Every major NAS vendor ships Plex in its app store — Synology Package Center, Asustor App Central, QNAP App Center. Install it from there so updates and permissions are handled for you.
NAS app catalogs are often weeks behind the official Plex release. If the built-in “Update” button shows nothing but plex.tv has a newer version, download the vendor package (.spk, .apk, .qpkg) directly from plex.tv/media-server-downloads and install it manually through your NAS app manager. Manual installs preserve your existing library — only the program binary is swapped.
Create a Debian LXC container (2 cores, 2 GB RAM is plenty for a small library), then install Plex from the official repository so it stays updated with apt:
# Add Plex's official APT repository
curl -fsSL https://downloads.plex.tv/plex-keys/PlexSign.key \
| sudo gpg --dearmor -o /usr/share/keyrings/plex.gpg
echo "deb [signed-by=/usr/share/keyrings/plex.gpg] https://downloads.plex.tv/repo/deb public main" \
| sudo tee /etc/apt/sources.list.d/plexmediaserver.list
sudo apt-get update
sudo apt-get install -y plexmediaserver
# Confirm it is running
sudo systemctl status plexmediaserver --no-pager
Plex now listens on port 32400. Reach the setup UI at http://<server-ip>:32400/web. There’s a copy-paste Plex install playbook with these exact commands plus the headless-claim step.
Task 2: Bind-mount your media (LXC only)
If Plex is on a NAS, skip this — the app already sees the array. For an LXC container, you need to expose your media folders to the container. Add a bind mount on the Proxmox host, pointing the host’s media directory into the container:
# Example: container 120, media on the host at /mnt/media
pct set 120 -mp0 /mnt/media,mp=/media,ro=0
# Restart the container to apply
pct reboot 120
Plex runs as its own user inside the container. If it can see the folder but reports “no media found,” the files are likely owned by a user Plex cannot read. Check ownership with ls -ln and, if needed, chown the media tree to the UID Plex runs as (commonly plex on Debian). Getting permissions right now saves a lot of “empty library” confusion later.
See the Proxmox storage guide if your media lives on NFS or ZFS and you’re deciding how to present it to the container.
Task 3: Claim the server and run setup
Browse to http://<server-ip>:32400/web from a machine on the same network as the server and sign into (or create) your free Plex account. When you open the UI from the same LAN, Plex claims the server to your account automatically.
If you can’t reach the UI from the same network (a headless NAS, a container on an isolated VLAN), claim it with a token instead. Get a claim token from plex.tv/claim — it’s valid for four minutes — then attach it:
# Token from https://plex.tv/claim (expires in 4 minutes)
curl -X POST "http://<server-ip>:32400/myplex/claim?token=claim-YOUR_TOKEN_HERE"
A claimed server shows up automatically in every Plex app you sign into.
Finish the wizard: give the server a name, then add libraries. Create one library per content type — a Movies library and a TV Shows library are separate, because Plex uses a different scanner and metadata agent for each. Point each library at the matching folder:
| Library type | Points at | Scanner |
|---|---|---|
| Movies | /media/Movies |
Plex Movie |
| TV Shows | /media/TV |
Plex TV Series |
| Anime | a separate folder | Plex TV Series (or a specialized agent) |
Keep movies and TV in physically separate top-level folders. Mixing them in one library confuses the scanner and produces wrong matches. One folder, one content type, one library.
Task 4: Get the file naming right the first time
The scanner identifies files by name. Match Plex’s expected layout and almost everything matches automatically — Plex documents the exact conventions for movies and TV shows if you want the authoritative reference:
Movies/
The Matrix (1999)/
The Matrix (1999).mkv
Blade Runner 2049 (2017)/
Blade Runner 2049 (2017).mkv
TV/
Firefly/
Season 01/
Firefly - S01E01.mkv
Firefly - S01E02.mkv
The (Year) on movies and the S01E02 on episodes are what disambiguate remakes and multi-season shows. Files that don’t match this pattern land as “unmatched” and need manual fixing — covered in the library naming and metadata post.
Task 5: Reach Plex from outside your network
Inside your home network, Plex just works. For remote streaming you have two options:
- Plex Remote Access — Plex tries to open a port on your router automatically via UPnP. When it works, you get direct streaming; when your ISP blocks it or disables UPnP, Plex falls back to a slow relay.
- A private mesh VPN — put your devices and the server on a Tailscale tailnet and stream over that. Nothing is exposed to the public internet, and clients on the tailnet connect directly instead of through the relay.
The VPN route is the more secure of the two — no inbound port is ever opened to the internet — and it sidesteps the relay-throttling problem entirely.
What’s next
Your server scans, matches, and streams. The two things that make or break the experience from here are playback quality (avoiding forced transcodes that stutter) and library hygiene (correct titles and sort order). Both have their own post below.
Related posts:
- Plex Direct Play and Transcoding on Weak Hardware — get smooth playback without a beefy CPU
- Organizing a Plex Library: Naming, Agents, and Metadata — fix unmatched files and wrong titles
- Creating Your First Proxmox LXC Container — the container this guide installs Plex into
- Proxmox Storage Guide — presenting NFS or ZFS media to a container
- Tailscale Subnet Router — reach Plex remotely with no port forwarding
- Proxmox Backup Server — back up the Plex database so a rebuild is a restore
Recommended hardware for this setup:
- NAS enclosure — a multi-bay NAS to hold the media array
- NAS hard drives — CMR NAS-rated drives for a media library
- Mini PC — an Intel QuickSync mini PC if you want a dedicated Plex box
This post contains Amazon affiliate links (tag: buildahomelab-20). I earn a small commission on qualifying purchases at no extra cost to you.