Nomploy Nomad Packs

← All packs

matomo v0.1.0

Analytics

Matomo — a powerful, privacy-focused web analytics platform and a self-hosted alternative to Google Analytics: full data ownership, heatmaps, funnels, and reports. Deployed as an all-in-one host-networked Nomad job: a MariaDB sidecar plus the Matomo app with an app volume.

nomad-pack run matomo --registry nomploy
3 tasks http 80db 3306 2 volumes image matomo:latest
Variables 13
values.hcl

Save as values.hcl, edit, then run:

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

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

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

# The Matomo container image. Pin a tag in production.
image = "matomo:latest"

# The MariaDB image for the bundled database.
mariadb_image = "mariadb:11"

# Host port for the Matomo web UI. The app's Apache listens on 80; keep this at 80 or front with a reverse proxy.
port = 80

# Password for the Matomo database user.
db_password = "matomo"

# UID the app runs as (www-data). The app volume is chown'd to this at startup.
uid = 33

# Named volume for the Matomo application files and config (/var/www/html).
data_volume = "matomo_data"

# Named volume for MariaDB data (/var/lib/mysql). Holds all your analytics data.
db_data_volume = "matomo_db_data"

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

# Resources for the Matomo app task.
resources = {
    cpu    = 500
    memory = 512
  }

# Resources for the MariaDB task.
mariadb_resources = {
    cpu    = 300
    memory = 512
  }
NameTypeDefaultDescription
job_name string
"matomo"
The name of the Nomad job.
namespace string
"default"
The Nomad namespace to deploy into.
datacenters list
["*"]
The datacenters to deploy to.
image string
"matomo:latest"
The Matomo container image. Pin a tag in production.
mariadb_image string
"mariadb:11"
The MariaDB image for the bundled database.
port number
80
Host port for the Matomo web UI. The app's Apache listens on 80; keep this at 80 or front with a reverse proxy.
db_password key string
"matomo"
Password for the Matomo database user.
uid number
33
UID the app runs as (www-data). The app volume is chown'd to this at startup.
data_volume string
"matomo_data"
Named volume for the Matomo application files and config (/var/www/html).
db_data_volume string
"matomo_db_data"
Named volume for MariaDB data (/var/lib/mysql). Holds all your analytics data.
constraints list
[]
Placement constraints. Pin to the node holding the volumes. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true".
resources object
{
    cpu    = 500
    memory = 512
  }
Resources for the Matomo app task.
mariadb_resources object
{
    cpu    = 300
    memory = 512
  }
Resources for the MariaDB task.
Readme

matomo

Matomo — a powerful, privacy-focused web analytics platform and a self-hosted alternative to Google Analytics: full data ownership, heatmaps, funnels, and reports.

All-in-one host-networked Nomad job: a busybox chown init, a MariaDB prestart sidecar (on 3306), and the Matomo app.

Deploy

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

Configure

Variable Default Description
port 80 Web UI port (Apache; see note).
db_password matomo Database password.
uid 33 User the app runs as (www-data); app volume chown'd to it.
data_volume matomo_data /var/www/html — app files + config.
db_data_volume matomo_db_data MariaDB data — analytics.
resources / mariadb_resources see defaults Per-task resources.

Finish the web installer on first visit (DB fields are pre-filled). See also the privacy-analytics plausible and umami packs (lighter). Matomo's Apache binds 80 and the bundled MariaDB uses 3306 — front with a reverse proxy for another port/domain, and note both overlap other packs' defaults. Pin the job to the node holding the volumes with constraints.