Docker Deployment
Docker Deployment
Section titled “Docker Deployment”Deploy Plex using Docker for easy management and updates.
Prerequisites
Section titled “Prerequisites”# Install Dockercurl -fsSL https://get.docker.com | shsudo usermod -aG docker $USER
# Install Docker Composesudo apt install docker-compose-pluginBasic Docker Run
Section titled “Basic Docker Run”docker run -d \ --name plex \ --network=host \ -e TZ="America/New_York" \ -e PLEX_CLAIM="claim-xxxx" \ -v /path/to/config:/config \ -v /path/to/transcode:/transcode \ -v /path/to/media:/data \ plexinc/pms-dockerDocker Compose
Section titled “Docker Compose”Create docker-compose.yml:
version: '3.8'
services: plex: image: plexinc/pms-docker:latest container_name: plex restart: unless-stopped network_mode: host environment: - TZ=America/New_York - PLEX_CLAIM=claim-xxxx - PLEX_UID=1000 - PLEX_GID=1000 volumes: - ./config:/config - ./transcode:/transcode - /mnt/media/movies:/data/movies - /mnt/media/tv:/data/tv# Startdocker compose up -d
# View logsdocker compose logs -f plex
# Updatedocker compose pull && docker compose up -dHardware Transcoding
Section titled “Hardware Transcoding”services: plex: # ... other config ... devices: - /dev/dri:/dev/driEnsure proper permissions:
# Add render groupsudo usermod -aG render $USER# Note PLEX_UID should have video/render accessservices: plex: # ... other config ... runtime: nvidia environment: - NVIDIA_VISIBLE_DEVICES=all - NVIDIA_DRIVER_CAPABILITIES=compute,video,utilityInstall nvidia-container-toolkit:
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.listsudo apt update && sudo apt install -y nvidia-container-toolkitsudo systemctl restart dockerFull Stack Example
Section titled “Full Stack Example”Complete media stack with Plex:
version: '3.8'
services: plex: image: plexinc/pms-docker:latest container_name: plex restart: unless-stopped network_mode: host environment: - TZ=America/New_York - PLEX_CLAIM=claim-xxxx volumes: - ./plex/config:/config - ./plex/transcode:/transcode - /mnt/media:/data devices: - /dev/dri:/dev/dri
tautulli: image: tautulli/tautulli:latest container_name: tautulli restart: unless-stopped ports: - "8181:8181" environment: - TZ=America/New_York volumes: - ./tautulli:/config
kometa: image: kometateam/kometa:latest container_name: kometa restart: unless-stopped environment: - TZ=America/New_York - KOMETA_RUN=true - KOMETA_TIME=05:00 volumes: - ./kometa:/configManagement Commands
Section titled “Management Commands”# Start/stopdocker compose up -ddocker compose down
# View logsdocker compose logs -f plex
# Shell accessdocker exec -it plex /bin/bash
# Update alldocker compose pull && docker compose up -d
# Cleanupdocker system prune -afBackup
Section titled “Backup”# Backup configdocker compose stop plextar -czvf plex-backup.tar.gz ./configdocker compose start plex