Ackee — a self-hosted, privacy-friendly analytics tool that tracks website visits without collecting personal data, with a clean dashboard and GraphQL API. Deployed as an all-in-one host-networked Nomad job (MongoDB + app).
Needs nomad-pack on PATH. The script only adds the nomploy registry and runs this pack.
Source ↗ Project ↗ ★ 4.7k ⚑ Report an issue
Save as values.hcl, edit, then run:
# The name of the Nomad job.
job_name = "ackee"
# The Nomad namespace to deploy into.
namespace = "default"
# The datacenters to deploy to.
datacenters = ["*"]
# The Ackee container image. Pin a tag in production.
image = "electerious/ackee:latest"
# The MongoDB image for the bundled database (5.0+ needs a CPU with AVX).
mongo_image = "mongo:7.0"
# Host port for the Ackee web UI / API.
port = 3000
# Host port for the bundled MongoDB.
mongo_port = 27017
# Ackee admin username.
admin_username = "admin"
# Ackee admin password. CHANGE THIS.
admin_password = "ackee_change_me"
# Named volume for MongoDB data.
mongo_data_volume = "ackee_mongo_data"
# Placement constraints. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true".
constraints = []
# Resources for the Ackee app task.
resources = {
cpu = 300
memory = 256
}
# Resources for the bundled MongoDB task.
mongo_resources = {
cpu = 500
memory = 512
}
| Name | Type | Default | Description |
|---|---|---|---|
| job_name | string | "ackee" | The name of the Nomad job. |
| namespace | string | "default" | The Nomad namespace to deploy into. |
| datacenters | list | ["*"] | The datacenters to deploy to. |
| image | string | "electerious/ackee:latest" | The Ackee container image. Pin a tag in production. |
| mongo_image | string | "mongo:7.0" | The MongoDB image for the bundled database (5.0+ needs a CPU with AVX). |
| port | number | 3000 | Host port for the Ackee web UI / API. |
| mongo_port | number | 27017 | Host port for the bundled MongoDB. |
| admin_username | string | "admin" | Ackee admin username. |
| admin_password set me | string | "ackee_change_me" | Ackee admin password. CHANGE THIS. |
| mongo_data_volume | string | "ackee_mongo_data" | Named volume for MongoDB data. |
| constraints | list | [] | Placement constraints. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true". |
| resources | object | {
cpu = 300
memory = 256
} | Resources for the Ackee app task. |
| mongo_resources | object | {
cpu = 500
memory = 512
} | Resources for the bundled MongoDB task. |
No variables match.
This pack stores data in one Docker named volume:
ackee_mongo_data
⚠ This pack bundles a database. A cold copy of the volume can be inconsistent — for a reliable backup, dump the DB (pg_dump / mysqldump) or stop the job while backing up.
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/ackee_mongo_data/_data
rclone (sync to S3/R2)
rclone sync /var/lib/docker/volumes/ackee_mongo_data/_data backup:<bucket>/ackee_mongo_data
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.
Ackee is a self-hosted, privacy-friendly analytics tool for tracking website visitors. It's cookie-free and collects no personal data (GDPR-friendly by design), while still giving you a clean dashboard of views, referrers, devices, browsers and durations — plus a GraphQL API for custom reporting.
This pack deploys Ackee all-in-one as a single host-networked Nomad job: MongoDB (bundled as a prestart sidecar) plus the Ackee app.
nomad-pack run ackee --registry=nomploy \
--var admin_password=$(openssl rand -hex 12)
Open http://<node-ip>:3000, log in, add your domain, and embed the tracking
snippet on your site.
| Variable | Default | Description |
|---|---|---|
image |
electerious/ackee:latest |
App image (pin a tag in production). |
mongo_image |
mongo:7.0 |
Bundled MongoDB (needs AVX for 5.0+). |
port |
3000 |
Host port for the web UI / API. |
mongo_port |
27017 |
Host port for MongoDB. |
admin_username |
admin |
Ackee admin username. |
admin_password |
ackee_change_me |
Ackee admin password — change this. |
resources |
300 MHz / 256 MB | App task resources. |
Analytics data persists in the MongoDB volume.