Nomploy Nomad Packs

← All packs

umami v0.1.0

Analytics

Umami — simple, privacy-friendly, open-source web analytics (a cookie-free Google Analytics alternative). Deployed all-in-one with its PostgreSQL database in a single host-networked Nomad job; runs schema migrations on start.

nomad-pack run umami --registry nomploy
2 tasks http 3005db 5432 1 volume image ghcr.io/umami-software/umami:postgresql-latest
Variables 13
values.hcl

Save as values.hcl, edit, then run:

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

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

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

# The Umami container image (PostgreSQL build). Pin a tag in production.
image = "ghcr.io/umami-software/umami:postgresql-latest"

# Host port for the Umami web UI / tracking endpoint. Default 3005 to avoid the panel (:3000), grafana (:3001), gitea (:3002), metabase (:3003).
port = 3005

# Secret used to sign auth tokens. Set a random string in production (keep it stable). Empty = Umami derives one.
app_secret = ""

# PostgreSQL image backing Umami.
postgres_image = "postgres:16-alpine"

# Host port PostgreSQL listens on. Umami connects on 127.0.0.1.
db_port = 5432

# Password for the Umami database user. CHANGE THIS. (DB name and user are both "umami".)
db_password = "umami"

# Docker named volume for the Postgres data dir — all analytics data. Back it up. A fresh volume inherits the image's data-dir ownership.
db_data_volume = "umami_db_data"

# Placement constraints — pin the job to one node so the Postgres local volume stays put. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true".
constraints = []

# Resources for the Umami task.
umami_resources = {
    cpu    = 500
    memory = 512
  }

# Resources for the PostgreSQL task.
postgres_resources = {
    cpu    = 500
    memory = 512
  }
NameTypeDefaultDescription
job_name string
"umami"
The name of the Nomad job.
namespace string
"default"
The Nomad namespace to deploy into.
datacenters list
["*"]
The datacenters to deploy to.
image string
"ghcr.io/umami-software/umami:postgresql-latest"
The Umami container image (PostgreSQL build). Pin a tag in production.
port number
3005
Host port for the Umami web UI / tracking endpoint. Default 3005 to avoid the panel (:3000), grafana (:3001), gitea (:3002), metabase (:3003).
app_secret key string
""
Secret used to sign auth tokens. Set a random string in production (keep it stable). Empty = Umami derives one.
postgres_image string
"postgres:16-alpine"
PostgreSQL image backing Umami.
db_port number
5432
Host port PostgreSQL listens on. Umami connects on 127.0.0.1.
db_password key string
"umami"
Password for the Umami database user. CHANGE THIS. (DB name and user are both "umami".)
db_data_volume string
"umami_db_data"
Docker named volume for the Postgres data dir — all analytics data. Back it up. A fresh volume inherits the image's data-dir ownership.
constraints list
[]
Placement constraints — pin the job to one node so the Postgres local volume stays put. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true".
umami_resources object
{
    cpu    = 500
    memory = 512
  }
Resources for the Umami task.
postgres_resources object
{
    cpu    = 500
    memory = 512
  }
Resources for the PostgreSQL task.
Readme

umami

Umami — simple, privacy-friendly, open-source web analytics: a cookie-free, GDPR-friendly alternative to Google Analytics. All-in-one: Umami plus its PostgreSQL database in a single host-networked Nomad job (Postgres as a prestart sidecar). Umami runs its schema migrations on start.

Usage

nomad-pack registry add nomploy github.com/Nomploy/nomad-packs
nomad-pack run umami --registry nomploy

In nomploy: create a Compose service, type Nomad Pack, pack umami, custom registry github.com/Nomploy/nomad-packs, then Deploy.

Open http://<node-ip>:3005 and log in with admin / umami — change the password immediately. Add your website to get the tracking <script>.

Key variables

Variable Default Notes
image ghcr.io/umami-software/umami:postgresql-latest Pin a tag in production.
port 3005 Web UI / tracking endpoint (off 3000–3003 to dodge other packs).
app_secret "" Random string to sign tokens; keep it stable.
db_password umami App Postgres password. Change this.
db_data_volume umami_db_data Analytics data. Back it up.
db_port 5432 Bundled Postgres host port.
constraints [] Pin to a node so the DB volume stays put.

Per-task resources: umami_resources, postgres_resources.

Notes