Install Plex on TrueNAS Scale

Personal media server — indexes movies, TV, and music, generates metadata, and streams to every device.

Cover for Install Plex on TrueNAS Scale

Plex is the media server that turns your TrueNAS box into a personal Netflix — it indexes your movies, TV shows, and music, generates artwork and metadata, and streams to every device in your house and beyond.

What it is

Platform TrueNAS Scale (Docker custom app)
Ports 32400 (web UI), 1900 (DLNA), 8324 (companion)
Image lscr.io/linuxserver/plex:latest
Config path /mnt/apps/plex/config → /config
Media path /mnt/media → /media
License Plex Pass (optional, for hardware transcoding)

Plex scans your media library, downloads metadata (posters, cast info, plot summaries), and serves it to clients via its own protocol. It handles transcoding for devices that cannot play the original format — your 4K HEVC file gets transcoded to 1080p H.264 for your phone on a slow connection.

The LinuxServer.io image runs Plex as a headless server with automatic updates, clean volume mounts, and hardware transcoding support via NVIDIA GPUs or Intel Quick Sync.

The hard part: library paths and metadata storage

The install is five minutes. The hard part is getting the library paths right so Plex sees the same files that Radarr and Sonarr organize, without double-scanning or missing metadata.

PACKET ANALYSIS
Correct mount structure
Plex library paths
/media/movies, /media/tv, /media/music
Wrong mount structure

The mistake everyone makes: mounting media paths differently in each container. If Radarr writes to /movies but Plex watches /media/movies, Plex never sees new files. Every container must mount the same base path and use consistent subpaths.

PACKET ANALYSIS
Consistent mount pattern
Base
/mnt/media → /media (same in every container)
Plex
watches /media/movies, /media/tv
Radarr
writes to /media/movies
Sonarr
writes to /media/tv

How to install it

Docker Compose (TrueNAS Scale custom app)

services:
  plex:
    image: lscr.io/linuxserver/plex:latest
    container_name: plex
    restart: unless-stopped
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/London
      - VERSION=docker
      - PLEX_CLAIM=  # Optional: claim token from https://plex.tv/claim
    network_mode: host
    volumes:
      - /mnt/apps/plex/config:/config
      - /mnt/media:/media

Note: network_mode: host is required for DLNA discovery and Plex's companion app protocol. If you use bridge networking, devices on your LAN cannot discover Plex automatically.

After deploy:

# Claim token (optional, links server to your Plex account):
# Visit https://plex.tv/claim, copy the token, add to PLEX_CLAIM env var

# Check server status:
docker logs plex 2>&1 | grep "Started"

Log in at http://<nas-ip>:32400/web and sign in with your Plex account.

Initial configuration

  1. Add Library
  2. Click Add Library → select type (Movies, TV Shows, Music)
  3. Click Browse for Media Folder → navigate to /media/movies (or /media/tv)
  4. Click Add

  5. Scan Library

  6. Plex scans your library and downloads metadata
  7. First scan of a large library takes 10–30 minutes
  8. Subsequent scans are incremental

  9. Settings → Transcoder

  10. Enable hardware transcoding if you have an NVIDIA GPU or Intel Quick Sync
  11. Set transcoding quality to "Automatic" for most setups

  12. Settings → Library

  13. Enable Scan my library automatically
  14. Set Periodic partial scans to every 15 minutes
  15. This picks up new files added by Radarr/Sonarr

Configuration that matters

Library paths

Library Container path Host path
Movies /media/movies /mnt/media/movies
TV Shows /media/tv /mnt/media/tv
Music /media/music /mnt/media/music

Transcoding

Setting Recommended value Why
Hardware transcoding Enable if GPU available Offloads CPU-intensive transcoding
Transcoder quality Automatic Balances quality and performance
Maximum simultaneous transcodes 2–4 (depends on GPU) Prevents GPU overload
H.264 profile Auto Lets Plex choose the best profile

Remote access

Setting Value
Port 32400 (forward on your router)
Manual public port 32400
Secure connections Required
Custom URL https://plex.your-domain.com:32400

If remote access fails, check that port 32400 is forwarded on your router to the NAS IP. Plex uses UPnP for automatic port mapping, but manual forwarding is more reliable.

Metadata

Setting Recommended value Why
Metadata agents The Movie Database (TMDB) Best free metadata source
Prefer local metadata Off Online metadata is more complete
Refresh interval 24 hours Keeps metadata current without hammering APIs
Image quality High Better artwork on clients

What I'd tell anyone building this

  • The media path must be identical across all containers. If Plex watches /media/movies and Radarr writes to /movies, Plex will not see new files. Mount the same base path (/mnt/media → /media) in every container.

  • Use network_mode: host on TrueNAS Scale. Bridge networking breaks DLNA discovery, Plex companion protocol, and automatic client detection. Host mode is the simplest way to avoid connection issues.

  • Hardware transcoding is worth the setup. A single 4K HEVC transcode uses 80–100% of a modern CPU. With an NVIDIA GPU or Intel Quick Sync, the same transcode uses 10–20% of the GPU. Enable it in Settings → Transcoder if your hardware supports it.

  • Don't forget the Plex claim token. Without it, your server is not linked to your Plex account and you cannot access it remotely. Get it from https://plex.tv/claim within 4 minutes of starting the container.

  • The first library scan is slow. A library with 500+ movies takes 15–30 minutes to scan and download metadata. Do not interrupt it — the scan resumes on restart, but the metadata cache is lost.

Get it

Links:

Quick install (Docker Compose):

services:
  plex:
    image: lscr.io/linuxserver/plex:latest
    container_name: plex
    restart: unless-stopped
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/London
      - VERSION=docker
      - PLEX_CLAIM=  # paste claim token from https://plex.tv/claim
    network_mode: host
    volumes:
      - /mnt/apps/plex/config:/config
      - /mnt/media:/media

Log in at http://<nas-ip>:32400/web, add your libraries, and start streaming.

Comments (0)

Join the discussion — sign in to comment.

Sign in

No comments yet — be the first to share your thoughts.

Related reading