Files
serverAppConfigs/serverAppConfigs-docs/Dankserver/Tautulli.md
T
Frank 93d1181fee docs: OKF v0.1 compliance pass + fact-check + 3 research briefs
- Migrate all 127 non-reserved docs to OKF v0.1 frontmatter (type/description/tags/timestamp); fix 13 YAML issues, 2 duplicate-FM blocks, strip reserved-page FM
- Restructure log.md to OKF (## YYYY-MM-DD, newest-first)
- Fact-check against scripts/AGENTS.md ground truth: fix 6 false 'Active' banners on retired runbooks, 96->114 GiB GTT, deployment.md vs deploy-plan.py/deploy-remote.sh, Deployment Flow frank-medium=Quadlet, Calibre 9.9.0->9.15.0 + CVE-2025-7404 conflation, Copyparty v1.20.24, RomM 5.3.0 breaking change
- Move *arr docs to new FrankBook-Pro/ section (git mv, link-safe)
- Write active runbook bodies from ground truth (frank-large, frank-small)
- Add 3 research briefs + HTML report: Local TTS and Voice Cloning, AI Job Search and Resume Tools, Most Popular Self-Hosted AI Apps (Jun-Sep 2026)
- Add upstream-version rows to ComfyUI/OpenWebUI/Hermes app docs
- All 336 tests pass; 136 pages, 0 unresolved wikilinks
2026-09-22 02:09:41 -07:00

63 lines
3.0 KiB
Markdown

---
type: reference
description: "Tautulli is the statistics, monitoring, and notification companion for"
tags:
- dankserver
- tautulli
timestamp: 2026-09-01
---
# Tautulli
Tautulli is the statistics, monitoring, and notification companion for
Plex Media Server. On Dankserver it runs as a **podman quadlet**
(`tautulli.service`) under the systemd **user** generator, generated from
`dankserver/tautulli/quadlet/tautulli.container` — migrated from the snap
(2026-09; the snap carried zero config, so the cutover was a fresh install).
**Host:** Dankserver — **Depends on:** [[Plex]] (it is pointless without
it; it talks to PMS over the appnet at `http://plex:32400`).
## Facts
| Item | Value |
|------|-------|
| Runtime | podman quadlet, `tautulli.service` (user manager) — migrated from snap `snap.tautulli.tautulli.service` |
| Image | `lscr.io/linuxserver/tautulli:v2.18.1-ls242` (pinned; verified == the ghcr `latest` manifest digest at pin time) |
| Data root | `/home/dank/Containers/tautulli` bind-mounted as `/config` (fresh at cutover — the snap's `/var/snap/tautulli/common` was empty) |
| Identity | fleet rootless model — container root maps to the `dank` user (1000:1000) |
| Port | `8181/tcp` published on `0.0.0.0` |
| Network | `dankserver_appnet`, alias `tautulli` |
| PMS URL | `http://plex:32400` — seeded into `config.ini` by the deployer on first start |
| Health | in-container `curl -fs http://localhost:8181/home` probe, 30 s interval / 3 retries |
| Deploy | `./scripts/deploy.sh dankserver --service tautulli` |
| Docs | https://github.com/Tautulli/Tautulli/wiki |
## What it buys this fleet
- Concurrent-stream dashboard and history: who is watching what, right now,
on which client — the only tool that answers "is the CPU busy transcoding
for someone?" without SSHing in.
- Notifications: library updates, download completions, player watch
sessions — wire them to whatever notifier the fleet standardizes on
(Discord/ntfy/Telegram are all one dropdown away).
- Health signal for the *arr stack downstream: completed downloads that
never become plays, or streams failing at a fixed bitrate, show up here
first.
## Gotchas
1. **Unauthenticated on the LAN.** `0.0.0.0:8181` with no auth wall —
anyone on the LAN can read the whole watch history. Fine while LAN-only;
if a public vhost is ever pointed at it, put the Authentik + Anubis
chain in front first ([[Authentik]], [[Anubis]]).
2. **First boot shows the setup wizard** — expected pre-token behavior; the
wizard also answers 200 on `/home`, so the health gate stays green before
any token exists. Enter the PMS claim token through the web UI after
cutover; it is stored inside the config bind, never in this repo.
3. **Snap-era paths are gone.** Logs and config live under the config bind
(`/home/dank/Containers/tautulli/...`), not `/var/snap/tautulli/common` —
Grafana/Loki log-shipping paths must account for it ([[Loki]], [[Alloy]]).
4. **Updates are commit-driven** — pin a new `-ls` tag in the unit file and
redeploy; never run `:latest`.