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.
Save as values.hcl, edit, then run:
# 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
}
| Name | Type | Default | Description |
|---|---|---|---|
| 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. |
No variables match.
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.
nomad-pack registry add nomploy https://github.com/Nomploy/nomad-packs
nomad-pack run matomo --registry=nomploy
| 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.