docker.recipes

Plex with Tautulli

beginner

Plex Media Server with Tautulli for statistics and monitoring.

Overview

Plex Media Server is a comprehensive media management and streaming platform that transforms any computer into a personal Netflix-like service. Originally launched in 2008 as a fork of XBMC, Plex automatically organizes your movies, TV shows, music, and photos with rich metadata, movie posters, and episode descriptions while providing apps for virtually every device imaginable. Unlike basic file sharing, Plex transcodes media on-the-fly to ensure compatibility across different devices and network conditions. Tautulli serves as the perfect monitoring companion to Plex, acting as a powerful analytics dashboard that tracks every aspect of your media server's usage. This Python-based application connects to Plex's database to provide detailed statistics about what content is being watched, who's watching it, bandwidth usage, and server performance metrics. Together, Plex and Tautulli create a professional-grade media streaming solution with enterprise-level monitoring capabilities. This combination is ideal for home media enthusiasts who want to monitor their server's performance, families managing multiple user accounts, and anyone running Plex for friends or extended family who needs insights into usage patterns. The pairing enables proactive server management, helping identify bandwidth bottlenecks, popular content, and optimal transcoding settings while maintaining detailed historical records of all media consumption.

Key Features

  • Automatic metadata matching with movie posters, episode descriptions, and cast information
  • Hardware-accelerated transcoding for real-time media conversion across devices
  • Comprehensive usage analytics with detailed viewing statistics and user activity tracking
  • Real-time monitoring of concurrent streams, bandwidth usage, and transcoding performance
  • Historical data retention for long-term usage pattern analysis and server optimization
  • Multi-user management with individual viewing histories and personalized recommendations
  • Mobile sync capabilities for offline viewing on phones and tablets
  • Custom notification system for server events, new content additions, and user activities

Common Use Cases

  • 1Home media enthusiasts wanting professional-grade streaming with detailed usage insights
  • 2Families sharing large media libraries across multiple devices and user profiles
  • 3Content creators monitoring which shows and movies are most popular among viewers
  • 4System administrators managing Plex servers for small organizations or friend groups
  • 5Home lab enthusiasts seeking comprehensive media server performance analytics
  • 6Users troubleshooting streaming issues by analyzing bandwidth and transcoding data
  • 7Media collectors tracking viewing habits to optimize storage and content acquisition

Prerequisites

  • Minimum 2GB RAM recommended for smooth Plex transcoding operations
  • Valid Plex account and claim token from plex.tv/claim for server registration
  • Organized media library with movies and TV shows in separate folder structures
  • Available ports 32400 (Plex web interface) and 8181 (Tautulli dashboard)
  • Basic understanding of media formats and transcoding concepts
  • Sufficient storage space for Plex metadata cache and transcode temporary files

For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms

docker-compose.yml

docker-compose.yml
1services:
2 plex:
3 image: plexinc/pms-docker:latest
4 container_name: plex
5 restart: unless-stopped
6 ports:
7 - "${PLEX_PORT:-32400}:32400/tcp"
8 - "3005:3005/tcp"
9 - "8324:8324/tcp"
10 - "32469:32469/tcp"
11 environment:
12 - TZ=${TZ:-UTC}
13 - PLEX_CLAIM=${PLEX_CLAIM}
14 - PLEX_UID=${PUID:-1000}
15 - PLEX_GID=${PGID:-1000}
16 volumes:
17 - plex_config:/config
18 - plex_transcode:/transcode
19 - ${MEDIA_PATH:-./media}:/data:ro
20 networks:
21 - media-network
22
23 tautulli:
24 image: ghcr.io/tautulli/tautulli:latest
25 container_name: tautulli
26 restart: unless-stopped
27 ports:
28 - "${TAUTULLI_PORT:-8181}:8181"
29 environment:
30 - TZ=${TZ:-UTC}
31 - PUID=${PUID:-1000}
32 - PGID=${PGID:-1000}
33 volumes:
34 - tautulli_config:/config
35 depends_on:
36 - plex
37 networks:
38 - media-network
39
40volumes:
41 plex_config:
42 plex_transcode:
43 tautulli_config:
44
45networks:
46 media-network:
47 driver: bridge

.env Template

.env
1# Plex Media Stack
2PLEX_PORT=32400
3PLEX_CLAIM=claim-xxxxxxxxxxxx
4TAUTULLI_PORT=8181
5TZ=UTC
6PUID=1000
7PGID=1000
8MEDIA_PATH=./media

Usage Notes

  1. 1Plex at http://localhost:32400/web
  2. 2Get claim token from plex.tv/claim
  3. 3Tautulli at http://localhost:8181
  4. 4Connect Tautulli to Plex in settings

Individual Services(2 services)

Copy individual services to mix and match with your existing compose files.

plex
plex:
  image: plexinc/pms-docker:latest
  container_name: plex
  restart: unless-stopped
  ports:
    - ${PLEX_PORT:-32400}:32400/tcp
    - 3005:3005/tcp
    - 8324:8324/tcp
    - 32469:32469/tcp
  environment:
    - TZ=${TZ:-UTC}
    - PLEX_CLAIM=${PLEX_CLAIM}
    - PLEX_UID=${PUID:-1000}
    - PLEX_GID=${PGID:-1000}
  volumes:
    - plex_config:/config
    - plex_transcode:/transcode
    - ${MEDIA_PATH:-./media}:/data:ro
  networks:
    - media-network
tautulli
tautulli:
  image: ghcr.io/tautulli/tautulli:latest
  container_name: tautulli
  restart: unless-stopped
  ports:
    - ${TAUTULLI_PORT:-8181}:8181
  environment:
    - TZ=${TZ:-UTC}
    - PUID=${PUID:-1000}
    - PGID=${PGID:-1000}
  volumes:
    - tautulli_config:/config
  depends_on:
    - plex
  networks:
    - media-network

Quick Start

terminal
1# 1. Create the compose file
2cat > docker-compose.yml << 'EOF'
3services:
4 plex:
5 image: plexinc/pms-docker:latest
6 container_name: plex
7 restart: unless-stopped
8 ports:
9 - "${PLEX_PORT:-32400}:32400/tcp"
10 - "3005:3005/tcp"
11 - "8324:8324/tcp"
12 - "32469:32469/tcp"
13 environment:
14 - TZ=${TZ:-UTC}
15 - PLEX_CLAIM=${PLEX_CLAIM}
16 - PLEX_UID=${PUID:-1000}
17 - PLEX_GID=${PGID:-1000}
18 volumes:
19 - plex_config:/config
20 - plex_transcode:/transcode
21 - ${MEDIA_PATH:-./media}:/data:ro
22 networks:
23 - media-network
24
25 tautulli:
26 image: ghcr.io/tautulli/tautulli:latest
27 container_name: tautulli
28 restart: unless-stopped
29 ports:
30 - "${TAUTULLI_PORT:-8181}:8181"
31 environment:
32 - TZ=${TZ:-UTC}
33 - PUID=${PUID:-1000}
34 - PGID=${PGID:-1000}
35 volumes:
36 - tautulli_config:/config
37 depends_on:
38 - plex
39 networks:
40 - media-network
41
42volumes:
43 plex_config:
44 plex_transcode:
45 tautulli_config:
46
47networks:
48 media-network:
49 driver: bridge
50EOF
51
52# 2. Create the .env file
53cat > .env << 'EOF'
54# Plex Media Stack
55PLEX_PORT=32400
56PLEX_CLAIM=claim-xxxxxxxxxxxx
57TAUTULLI_PORT=8181
58TZ=UTC
59PUID=1000
60PGID=1000
61MEDIA_PATH=./media
62EOF
63
64# 3. Start the services
65docker compose up -d
66
67# 4. View logs
68docker compose logs -f

One-Liner

Run this command to download and set up the recipe in one step:

terminal
1curl -fsSL https://docker.recipes/api/recipes/plex-tautulli-stack/run | bash

Troubleshooting

  • Plex server not accessible remotely: Check port forwarding for 32400 and ensure Plex account is properly claimed
  • Tautulli showing 'Unable to connect to Plex': Verify Plex server URL is set to http://plex:32400 in Tautulli settings
  • High CPU usage during streaming: Enable hardware transcoding in Plex settings or adjust quality settings to reduce load
  • Missing movie metadata and posters: Ensure media files follow Plex naming conventions and check agent settings
  • Tautulli statistics not updating: Restart both containers and verify Plex database permissions are correctly set
  • Transcoding fails with permission errors: Check that PUID/PGID environment variables match your system user permissions

Community Notes

Loading...
Loading notes...

Download Recipe Kit

Get all files in a ready-to-deploy package

Includes docker-compose.yml, .env template, README, and license

Components

plextautulli

Tags

#plex#media-server#streaming#tautulli#monitoring

Category

Media & Entertainment
Ad Space