Nomploy Nomad Packs

← All packs

ackee v0.1.0

Analytics

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).

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

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

2 tasks http 3000mongo 27017 1 volume image electerious/ackee:latest tracks :latest image bumped today
Variables 13
values.hcl

Save as values.hcl, edit, then run:

nomad-pack run ackee -f values.hcl --registry nomploy
# 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
  }
NameTypeDefaultDescription
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.
Back up this pack

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.

Readme

ackee

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.

Deploy

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.

Configuration

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.