This server is the media hub of the Trash Panda ecosystem. It manages media libraries, handles streaming, and performs transcoding. While the server is largely internet-adjacent for remote access, it is designed to separate storage and network duties across dedicated interfaces to maximize performance and stability. Proper hardware configuration ensures reliable media delivery and predictable transcoding performance.
This page covers OS installation, NIC configuration, storage setup, Plex Media Server native installation, and initial configuration. Detailed library management, remote access, and advanced Plex configuration are covered in their own guides.
Role of This Server in the Ecosystem
The Plex Media Server:
Hosts all media libraries
Streams content to internal and remote clients
Performs video/audio transcoding, leveraging GPU acceleration
Connects to the NAS via NFS for media access
By dedicating this physical server to Plex, we:
Reduce impact on other services
Centralize media management
Ensure predictable performance for streaming and transcoding
Simplify troubleshooting and scaling
This server is the backbone of media access — it should be quiet, performant, and reliable.
Base Operating System
Ubuntu Server 24.04 LTS or newer
Minimal installation (no desktop environment)
Automatic security updates enabled
Ubuntu LTS provides:
Long-term security support
Strong community documentation
Stability for long-running media workloads
This server should run headless and be administered via SSH.
Storage Configuration
Network Configuration
This server requires two physical network interfaces, following established NIC rules.
NIC 1 — DMZ VLAN
Purpose:
Administrative access (SSH)
Plex web interface and remote streaming
Outbound access for updates
Characteristics:
Routed
MTU 1500
Static IP recommended
NIC 2 — NFS VLAN
Purpose:
Characteristics:
Segregating traffic ensures:
Predictable streaming and transcoding performance
Reduced network contention
Isolation of critical media operations
Install Plex natively on Ubuntu as a system service. Do not use Docker.
Follow these steps on the bare-metal server:
1. Add the Plex Repository
# Install HTTPS transport and necessary packages
sudo apt update
sudo apt install curl apt-transport-https -y
# Add Plex repository key
curl https://downloads.plex.tv/plex-keys/PlexSign.key | sudo apt-key add -
# Add Plex repository
echo deb https://downloads.plex.tv/repo/deb public main | sudo tee /etc/apt/sources.list.d/plexmediaserver.list
# Update package lists and install Plex
sudo apt update
sudo apt install plexmediaserver -y
3. Verify and Enable Service
# Check Plex service status
sudo systemctl status plexmediaserver
# Enable Plex to start at boot
sudo systemctl enable plexmediaserver
# Start Plex service if not already running
sudo systemctl start plexmediaserver
# Allow default Plex port 32400 TCP
sudo ufw allow 32400/tcp
sudo ufw reload
5. Access Plex Web Interface
Open a web browser and go to: <server-ip>:32400
Notes:
Plex runs as the plex user by default.
Ensure that /transcoder and /cache directories have proper permissions for the plex user.
If using GPU acceleration, verify that NVIDIA drivers are installed and accessible by Plex (e.g. RTX 3060).
Initial Plex Configuration
Builder's choice unless otherwise noted
Plex Account & Online Services
Builder's choice for:
Account login
Online media sources
Authorized web devices
Watchlist
Webhooks
Streaming services
Plex Home
Manage Library Access
Privacy settings
Plex Web
General Section:
Builder's choice
Quality Section:
Video Quality: 8 Mbps, 1080p
Check “Play smaller videos at original quality” (Internet Streaming)
Check “Use recommended settings” (Home Streaming)
Debug Section:
Debug Level: Disabled
Check Direct Play
Check Direct Stream
Player Section:
Settings
General:
Enter Plex Server friendly name
Leave all checkboxes unchecked
Server Update Channel: Public
Remote Access:
Plex behind a reverse proxy may show “Not available outside your network” – this is normal
Uncheck “Manually specify public port”
Internet Upload Speed: 90% of ISP allocation
Limit remote stream bitrate: 8 Mbps (1080p)
Agents (Legacy):
Builder's choice
Library:
Scan my library automatically
Run a partial scan when changes are detected
Include music libraries in automatic updates (if applicable)
Scan my library periodically (15 minutes)
Empty trash automatically after every scan
Allow media deletion
Database Cache Size: 256MB
Remaining options: Builder's choice
Network:
Client Network: IPv4 Only
Secure Connections: Preferred
Certificates: configure only if installed locally
Preferred network interface: DMZ VLAN NIC (do NOT select NFS NIC)
Uncheck Strict TLS configuration
Uncheck Enable local network discovery (GDM)
Remote streams allowed per user: 3
LAN Networks: comma-delimited list of local subnets
Terminate sessions paused longer than: 10 minutes
Uncheck Treat WAN IP as
LAN bandwidth
Check Enable Relay
-
Leave allowed IPs without auth blank
Webhooks unchecked unless actively used
Transcoder (baseline: NVIDIA RTX 3060):
Transcoder Quality: Make my CPU hurt
Transcoder temporary directory: /transcoder
Downloads temporary directory: /transcoder/temp_d
Transcoder throttle buffer: 120 seconds
Background transcoding preset: Fast
Uncheck Enable HDR tone mapping
Uncheck Disable video stream transcoding
Check Use hardware acceleration when available
Check Use hardware-accelerated video encoding
HEVC encoding: Never
Hardware transcoding device: explicitly select GPU
Max simultaneous GPU transcodes: 5
Max CPU transcodes: Unlimited
Max background video transcodes: 1
Languages:
DLNA:
Builder's choice
Scheduled Tasks:
Start time: 02:00
Stop time: 05:00
Backup database every 3 days
Optimize database weekly
Remove old bundles weekly
Remove old cache files weekly
Refresh local metadata every 3 days
Update all libraries during maintenance
Upgrade media analysis during maintenance
Uncheck Refresh library metadata periodically
Perform extensive media analysis during maintenance
Extras:
Builder's choice
Libraries:
Use the Add Libraries button to point to media paths.