Skip to content

Docker Deployment

Deploy Plex using Docker for easy management and updates.

Terminal window
# Install Docker
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
# Install Docker Compose
sudo apt install docker-compose-plugin
Terminal window
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-docker

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
Terminal window
# Start
docker compose up -d
# View logs
docker compose logs -f plex
# Update
docker compose pull && docker compose up -d
services:
plex:
# ... other config ...
devices:
- /dev/dri:/dev/dri

Ensure proper permissions:

Terminal window
# Add render group
sudo usermod -aG render $USER
# Note PLEX_UID should have video/render access

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:/config
Terminal window
# Start/stop
docker compose up -d
docker compose down
# View logs
docker compose logs -f plex
# Shell access
docker exec -it plex /bin/bash
# Update all
docker compose pull && docker compose up -d
# Cleanup
docker system prune -af
Terminal window
# Backup config
docker compose stop plex
tar -czvf plex-backup.tar.gz ./config
docker compose start plex