Tautulli is a monitoring and analytics dashboard for Plex — it tracks who is streaming, what they are watching, when they started, and how much bandwidth they are using, in real time.
What it is
| Platform | TrueNAS Scale (Docker custom app) |
| Port | 8181 (web UI) |
| Image | lscr.io/linuxserver/tautulli:latest |
| Config path | /mnt/apps/tautulli/config → /config |
| Purpose | Plex monitoring, notifications, and analytics |
| License | GPL-3.0 |
Tautulli connects to your Plex server via its API and logs every stream — who is watching, what device they are using, the quality setting, bandwidth consumption, and playback progress. It is the Plex equivalent of a network monitoring tool: you do not need it to stream media, but once you have it, you wonder how you managed without.
It also handles notifications: email or webhook alerts when new content is added, when a user starts a stream, when a stream buffers, or when someone shares your server with an unauthorized user.
The hard part: connecting to Plex and setting up notifications
The install is trivial. The hard part is configuring Tautulli's connection to Plex and setting up useful notifications that do not spam you.
- Tautulli → Plex connection flow
- → http
- //<nas-ip>:32400
- Connection requirements
- Plex IP
- http://<nas-ip>:32400 (use NAS IP, not localhost)
- Plex token
- Found in Plex → Settings → General → Authorized Devices
The mistake everyone makes: entering http://localhost:32400 as the Plex URL. On TrueNAS Scale with Docker networking, localhost inside the Tautulli container points to Tautulli itself. Use the NAS IP.
- Correct connection
- Tautulli → http
- //192.168.1.x:32400 (NAS IP + Plex port)
- Wrong connection
- Tautulli → http
- //localhost:32400 (Tautulli talks to itself)
- Tautulli → http
- //plex:32400 (container name only works if Tautulli is on host networking)
Notification rules
| Event | Action | Recommended |
|---|---|---|
| New media added | Email/webhook | On (useful for Plex Pass users) |
| Stream started | Off (noisy) | |
| Stream buffers | On (signals transcoding issues) | |
| Stream paused > 10 min | On (someone forgot to stop) | |
| New user added | On (security) | |
| Server down | Email/webhook | On (critical) |
How to install it
Docker Compose (TrueNAS Scale custom app)
services:
tautulli:
image: lscr.io/linuxserver/tautulli:latest
container_name: tautulli
restart: unless-stopped
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/London
ports:
- 8181:8181
volumes:
- /mnt/apps/tautulli/config:/config
After deploy:
# Open the web UI at http://<nas-ip>:8181
# Initial setup wizard guides you through Plex connection
Initial configuration
- Open Tautulli at
http://<nas-ip>:8181 - Setup wizard runs on first launch:
- Plex Media Server IP:
http://<nas-ip>:32400 - Plex Media Server Port:
32400 - Plex Token: paste from Plex settings or Preferences.xml
- Test Connection → should return "Successfully connected to Plex"
- Finish wizard → Tautulli starts logging streams immediately
Configuration that matters
Plex connection
| Setting | Value |
|---|---|
| Plex URL | http://<nas-ip>:32400 |
| Plex Token | From Plex → Settings → General → Authorized Devices |
| Poll interval | 5 seconds (default, fine for most setups) |
| Plex library refresh | 60 seconds |
Notification agents
| Agent | Setup |
|---|---|
| Settings → Notification Agents → Email → SMTP server details | |
| Webhook | Settings → Notification Agents → Webhook → URL + JSON template |
| Telegram | Settings → Notification Agents → Telegram → Bot token + chat ID |
| Discord | Settings → Notification Agents → Discord → Webhook URL |
Logging
| Setting | Recommended value | Why |
|---|---|---|
| Log retention | 90 days | Keeps enough history for analytics without bloating the database |
| Import play count | On | Syncs Plex watch history on first setup |
| Age rating slider | Enable | Shows content ratings on the dashboard |
Dashboard
| Widget | Purpose |
|---|---|
| Activity | Real-time stream list with quality, bandwidth, progress |
| Library stats | Total media items, size, last scan |
| Top 10 | Most watched movies/shows in last 7/30/90 days |
| Users | Who is watching, when they last watched, total hours |
What I'd tell anyone building this
-
Tautulli does not replace Plex's built-in analytics. Plex has basic "Now Playing" and "History" pages. Tautulli adds per-user analytics, notification rules, and historical trends that Plex does not provide.
-
The Plex token expires if you change your password. If Tautulli stops connecting after a password change, grab a new token from Plex → Settings → General → Authorized Devices.
-
Notifications are optional but useful. The most valuable notification is "stream buffers" — it tells you when transcoding is struggling, which means you need to adjust quality settings or enable hardware transcoding.
-
Tautulli does not control Plex. It is read-only — it monitors streams but cannot pause, stop, or transcode. For control, use the Plex web UI or mobile app.
-
The database grows over time. Tautulli's SQLite database stores every stream event. After a year, it can reach several hundred MB. Configure log retention in Settings → General → Database to keep it manageable.
Get it
Links:
Quick install (Docker Compose):
services:
tautulli:
image: lscr.io/linuxserver/tautulli:latest
container_name: tautulli
restart: unless-stopped
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/London
ports:
- 8181:8181
volumes:
- /mnt/apps/tautulli/config:/config
Log in at http://<nas-ip>:8181, run the setup wizard, and connect to your Plex server.