Plex with Tautulli
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:latest4 container_name: plex5 restart: unless-stopped6 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:/config18 - plex_transcode:/transcode19 - ${MEDIA_PATH:-./media}:/data:ro20 networks: 21 - media-network2223 tautulli: 24 image: ghcr.io/tautulli/tautulli:latest25 container_name: tautulli26 restart: unless-stopped27 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:/config35 depends_on: 36 - plex37 networks: 38 - media-network3940volumes: 41 plex_config: 42 plex_transcode: 43 tautulli_config: 4445networks: 46 media-network: 47 driver: bridge.env Template
.env
1# Plex Media Stack2PLEX_PORT=324003PLEX_CLAIM=claim-xxxxxxxxxxxx4TAUTULLI_PORT=81815TZ=UTC6PUID=10007PGID=10008MEDIA_PATH=./mediaUsage Notes
- 1Plex at http://localhost:32400/web
- 2Get claim token from plex.tv/claim
- 3Tautulli at http://localhost:8181
- 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 file2cat > docker-compose.yml << 'EOF'3services:4 plex:5 image: plexinc/pms-docker:latest6 container_name: plex7 restart: unless-stopped8 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:/config20 - plex_transcode:/transcode21 - ${MEDIA_PATH:-./media}:/data:ro22 networks:23 - media-network2425 tautulli:26 image: ghcr.io/tautulli/tautulli:latest27 container_name: tautulli28 restart: unless-stopped29 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:/config37 depends_on:38 - plex39 networks:40 - media-network4142volumes:43 plex_config:44 plex_transcode:45 tautulli_config:4647networks:48 media-network:49 driver: bridge50EOF5152# 2. Create the .env file53cat > .env << 'EOF'54# Plex Media Stack55PLEX_PORT=3240056PLEX_CLAIM=claim-xxxxxxxxxxxx57TAUTULLI_PORT=818158TZ=UTC59PUID=100060PGID=100061MEDIA_PATH=./media62EOF6364# 3. Start the services65docker compose up -d6667# 4. View logs68docker compose logs -fOne-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 | bashTroubleshooting
- 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 & EntertainmentAd Space
Shortcuts: C CopyF FavoriteD Download