Why Plex Alone Does Not Tell the Full Story
Plex is excellent at playing media. It streams, transcodes, and organizes a library with minimal fuss, but its built-in activity dashboard stops well short of what a serious self-hoster actually wants to know. How many times has a specific show been watched? Which user on your server burns through the most bandwidth? What resolution does your hardware actually deliver under load? Plex does not answer any of that in any useful depth, and that gap is exactly where Tautulli steps in.
Tautulli is a free, open-source monitoring and analytics application built specifically for Plex Media Server. It runs alongside Plex, hooks into its activity feed, and logs everything: plays, pauses, streams, transcodes, user sessions, and device history. Once it is connected, every playback event gets recorded permanently, giving you a searchable, visual record of how your server is actually being used. This guide walks through the full setup, from installing both applications to reading your first real analytics dashboard.

Installing Plex Media Server
If Plex is not already running on your machine, the fastest path is a direct install from the official Plex download page at plex.tv/media-server-downloads. Packages are available for Ubuntu, Debian, Fedora, Windows, and macOS, along with Docker images for those who prefer container-based setups. On Ubuntu or Debian, download the .deb package, then run sudo dpkg -i plexmediaserver_*.deb followed by sudo systemctl enable --now plexmediaserver to start the service and set it to launch on boot. Plex will then be accessible at http://localhost:32400/web for initial configuration.
During the first-run setup, Plex asks you to sign in with a Plex account and name your server. Add at least one media library by pointing Plex at a folder containing movies or TV shows – it will scan and match metadata automatically. The key setting to confirm before moving on is the server’s claim token, which ties your local instance to your Plex account. Without that connection, Tautulli cannot authenticate against the Plex API, which is the mechanism it relies on to receive playback events.
Installing and Configuring Tautulli
Tautulli can be installed directly on the same host as Plex or on a separate machine on the same network. The GitHub repository at github.com/Tautulli/Tautulli offers a Python-based install that works across Linux, Windows, and macOS. On a Linux host, clone the repository with git clone https://github.com/Tautulli/Tautulli.git, navigate into the directory, and start the application with python Tautulli.py. By default, the web interface appears on port 8181, accessible at http://localhost:8181.
For those running Docker, the lscr.io/linuxserver/tautulli image is the most maintained option. A basic Docker Compose block needs only a few environment variables – your PUID, PGID, and timezone – plus two volume mounts: one for Tautulli’s config files and one pointing at Plex’s logs directory. That logs directory path is important. Tautulli reads Plex log files directly as a secondary data source, so granting access to that folder gives the analytics engine more complete session data, particularly for sessions that end abruptly before Plex has a chance to send a webhook.

Once Tautulli is running, open its web interface and walk through the setup wizard. The first required step is connecting to your Plex server. Enter your Plex token – found by signing into plex.tv, opening any media item, clicking the three-dot menu, selecting “Get Info,” then “View XML,” and copying the token from the URL – and Tautulli will detect all servers tied to that account. Select the correct server and confirm the connection. A green status indicator in the Tautulli settings panel means the two applications are actively talking to each other.
The notification agent system is where Tautulli’s depth starts to show. Under Settings > Notification Agents, you can configure alerts for specific playback events: a new stream starts, a user pauses for more than a set number of minutes, a transcode session exceeds a CPU threshold, or a new media item gets added to a library. Tautulli ships with agents for email, Discord, Slack, Telegram, Pushover, and a handful of other services. Each agent supports custom message templates using Tautulli’s own variable system, so a Discord notification can include the user’s name, the title being played, the current bitrate, and whether the session is transcoding or playing directly.
Reading the Analytics Dashboard
The Tautulli home dashboard loads immediately with a live activity panel showing any current streams, including the user, media title, playback progress, stream type (direct play, direct stream, or transcode), and the device and player being used. Below that, the dashboard surfaces recent playback history and a set of graph widgets that update as data accumulates. After a week of normal server use, patterns start to appear – peak usage hours, which libraries get the most attention, which users are watching the most content, and which devices most frequently trigger a transcode instead of direct play.
The Statistics tab breaks the data down further into ranked lists: top movies, top TV shows, top users, top platforms, and top libraries by play count and play duration. These are not estimates – they are pulled from Tautulli’s local database, which records every session event Plex generates. For a household server with a few users, this is where you find out that one person accounts for most of the server’s uptime, or that a particular show has been rewatched more times than anyone admitted. For a larger friend-group server, the data becomes practically useful for capacity planning – understanding when to schedule maintenance, whether your CPU can handle peak concurrent transcodes, and which format your users’ devices actually support.
Hardening and Long-Term Maintenance
Tautulli stores all its data in a local SQLite database, which means backups are straightforward: copy the config directory, and everything moves with it. Setting up a scheduled backup of that folder – either to a separate drive or a remote location – takes less than five minutes using a simple cron job on Linux. The database grows slowly; a busy server with a dozen active users might accumulate a few hundred megabytes over a year. That is well within the range where SQLite performs without any tuning.

For access control, Tautulli supports both a built-in username/password login and HTTP basic authentication. If you are exposing the Tautulli interface outside your local network – through a reverse proxy like NGINX or Caddy – enabling authentication at both layers is the practical minimum. The Tautulli settings panel also includes an API key that external tools can use to pull data programmatically, which becomes useful if you want to pipe playback stats into a broader monitoring stack. If you are already running a self-hosted monitoring setup, that API key is the integration point worth knowing about.
One setting that catches people off-guard after initial setup is the history logging toggle. Tautulli will only begin recording playback history from the moment it first connects to Plex – there is no retroactive import of Plex’s existing activity data. That means the longer you wait to set this up, the more historical context you lose. The analytics get genuinely more useful after 30 days of continuous logging, and significantly more useful after 90 days, when seasonal patterns in viewing behavior start to surface in the graphs.
Frequently Asked Questions
Does Tautulli work with Plex Pass or only free accounts?
Tautulli works with both free and Plex Pass accounts. A Plex account is required for the API token, but a paid subscription is not.
Can Tautulli track multiple Plex servers?
Each Tautulli instance connects to one Plex server. To monitor multiple servers, you would run a separate Tautulli instance for each one.





