Role: plex¶
Installs Plex Media Server in the Plex LXC, configures the media symlink, and verifies GPU passthrough.
Hosts: plex (LXC 100)
Tasks¶
| Task | Tag |
|---|---|
Fetch PlexSign.v2.key and dearmor to /etc/apt/keyrings/plexmediaserver.v2.gpg |
plex, install |
Render deb822 sources file pointing at https://repo.plex.tv/deb/ |
plex, install |
Remove legacy .list-format Plex repos and old armored plex.asc keyring |
plex, install |
Install plexmediaserver package |
plex, install |
| Enable Plex service at boot | plex, install |
Create media symlink (plex_zfs_mount → plex_media_path) |
plex, config |
Check /dev/nvidia0 availability (if nvidia_transcoding: true) |
plex, gpu |
| Report GPU passthrough status | plex, gpu |
Apt repo: repo.plex.tv, not downloads.plex.tv¶
Plex migrated the canonical apt mirror from downloads.plex.tv/repo/deb to repo.plex.tv/deb/ in early 2026 and rotated the signing key from PlexSign.key (v1, armored) to PlexSign.v2.key (v2, dearmored to a binary keyring). The old mirror still resolves but is frozen — as of 2026-05-22 the latest published build there was 1.42.2.10156-f737b826c with Last-Modified: 2026-01-28. Any host left pointing at it will silently fall behind: apt update && apt upgrade reports nothing new, but Plex's in-app updater shows newer builds because it pulls release metadata over its own API rather than apt.
The role now templates the new URL and key path; the corresponding install snippet is the same as Plex KB 235974187:
Manual edits to /etc/apt/sources.list.d/plex.sources will be overwritten by the next role run — change the template, not the file on the host.
Key variables¶
| Variable | Source | Value |
|---|---|---|
plex_zfs_mount |
plex host_vars | /stash/rodneystash |
plex_media_path |
plex host_vars | /mnt/plex |
plex_data_zfs_dataset |
plex host_vars | stash/plex-data |
plex_data_zfs_quota |
plex host_vars | 100G |
plex_data_mount |
plex host_vars | /stash/plex-data |
plex_claim_token |
plex host_vars | Empty after first setup |
nvidia_transcoding |
plex host_vars | true |
The role creates:
The ZFS pool and Plex data dataset are mounted into the LXC via Proxmox mount points (mp0 for /stash, mp1 for /stash/plex-data) — these are Proxmox-level configs, not managed by this role. The Plex data directory at /var/lib/plexmediaserver/Library/Application Support/Plex Media Server/ is a symlink pointing to /stash/plex-data. See Plex for that config.
GPU passthrough¶
The role checks whether /dev/nvidia0 exists inside the container. It reports the result but does not configure passthrough — that requires:
- The
nvidiarole to have run on the Proxmox host - The LXC config (
/etc/pve/lxc/100.conf) to have thecgroup2andmount.entrylines added
See Plex — GPU passthrough for the required LXC config.
First-time setup note¶
plex_claim_token is only needed when Plex is installed for the first time to link it to a Plex account. Leave it blank once the server is claimed.
Related¶
- Plex service docs
- nvidia role — Host-side GPU setup
- Proxfold rebuild runbook — where Plex + GPU come back online during a bare-metal rebuild