Nomploy Nomad Packs

← All packs

tautulli v0.1.0

Media

Tautulli — a monitoring and analytics dashboard for your Plex Media Server: see what's being watched and by whom, stream history, per-user stats, and rich notifications. Deployed as a host-networked Nomad service with a persistent config volume.

nomad-pack run tautulli --registry nomploy
…or one line (add registry + run)
curl -fsSL https://packs.nomploy.com/install.sh | sh -s -- tautulli

Needs nomad-pack on PATH. The script only adds the nomploy registry and runs this pack.

1 task http 8181 1 volume image lscr.io/linuxserver/tautulli:latest tracks :latest image bumped today
Variables 11
values.hcl

Save as values.hcl, edit, then run:

nomad-pack run tautulli -f values.hcl --registry nomploy
# The name of the Nomad job.
job_name = "tautulli"

# The Nomad namespace to deploy into.
namespace = "default"

# The datacenters to deploy to.
datacenters = ["*"]

# The Tautulli container image. Pin a tag in production.
image = "lscr.io/linuxserver/tautulli:latest"

# Host port for the Tautulli web UI.
port = 8181

# User ID the app runs as (PUID).
puid = 1000

# Group ID the app runs as (PGID).
pgid = 1000

# Container timezone (TZ), e.g. Europe/Bratislava.
tz = "UTC"

# Named volume for Tautulli config (/config): the database and settings.
config_volume = "tautulli_config"

# Placement constraints. Pin to the node holding the volume. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true".
constraints = []

# Resources for the Tautulli task.
resources = {
    cpu    = 300
    memory = 256
  }
NameTypeDefaultDescription
job_name string
"tautulli"
The name of the Nomad job.
namespace string
"default"
The Nomad namespace to deploy into.
datacenters list
["*"]
The datacenters to deploy to.
image string
"lscr.io/linuxserver/tautulli:latest"
The Tautulli container image. Pin a tag in production.
port number
8181
Host port for the Tautulli web UI.
puid number
1000
User ID the app runs as (PUID).
pgid number
1000
Group ID the app runs as (PGID).
tz string
"UTC"
Container timezone (TZ), e.g. Europe/Bratislava.
config_volume string
"tautulli_config"
Named volume for Tautulli config (/config): the database and settings.
constraints list
[]
Placement constraints. Pin to the node holding the volume. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true".
resources object
{
    cpu    = 300
    memory = 256
  }
Resources for the Tautulli task.
Back up this pack

This pack stores data in one Docker named volume: tautulli_config

restic

# Run on the node hosting this pack. Point restic at your repo first:
#   export RESTIC_REPOSITORY="s3:https://<account>.r2.cloudflarestorage.com/<bucket>"
#   export RESTIC_PASSWORD="<repo-password>"
#   export AWS_ACCESS_KEY_ID=<key>  AWS_SECRET_ACCESS_KEY=<secret>
restic backup \
  /var/lib/docker/volumes/tautulli_config/_data

rclone (sync to S3/R2)

rclone sync /var/lib/docker/volumes/tautulli_config/_data backup:<bucket>/tautulli_config

Paths assume the default Docker volume location (/var/lib/docker/volumes). Restore by stopping the job, restoring files into the same volume, and re-running the pack.

Readme

tautulli

Tautulli — a monitoring and analytics dashboard for your Plex Media Server. See what's being watched and by whom, full stream history, per-user and per-library stats, and get rich notifications for activity and new content.

Single host-networked Nomad service with a persistent config volume.

Deploy

nomad-pack registry add nomploy https://github.com/Nomploy/nomad-packs
nomad-pack run tautulli --registry=nomploy

Configure

Variable Default Description
port 8181 Web UI port.
config_volume tautulli_config /config — SQLite database and settings.
puid / pgid 1000 / 1000 User/group (PUID/PGID).
tz UTC Container timezone (TZ).
image lscr.io/linuxserver/tautulli:latest Container image. Pin a tag in production.
resources { cpu = 300, memory = 256 } Task resources.

On first run, connect Tautulli to your Plex server (server URL + token). It then records watch history and builds stats. Requires a Plex Media Server to monitor. Serves plain HTTP — front it with a reverse proxy for TLS. Pin the job to the node holding the volume with constraints.