Nomploy Nomad Packs

← All packs

tracktor v0.1.0

Productivity

Tracktor — a self-hosted vehicle maintenance, fuel and expense tracker with reminders and a clean dashboard. Deployed as a single host-networked Nomad service.

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

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

1 task http 3000 1 volume image ghcr.io/javedh-dev/tracktor:latest tracks :latest image bumped today
Variables 8
values.hcl

Save as values.hcl, edit, then run:

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

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

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

# The Tracktor container image. Pin a tag in production.
image = "ghcr.io/javedh-dev/tracktor:latest"

# Host port for the Tracktor web UI.
port = 3000

# Named volume mounted at /data.
data_volume = "tracktor_data"

# Placement constraints. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true".
constraints = []

# The task resources.
resources = {
    cpu    = 300
    memory = 256
  }
NameTypeDefaultDescription
job_name string
"tracktor"
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/javedh-dev/tracktor:latest"
The Tracktor container image. Pin a tag in production.
port number
3000
Host port for the Tracktor web UI.
data_volume string
"tracktor_data"
Named volume mounted at /data.
constraints list
[]
Placement constraints. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true".
resources object
{
    cpu    = 300
    memory = 256
  }
The task resources.
Back up this pack

This pack stores data in one Docker named volume: tracktor_data

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/tracktor_data/_data

rclone (sync to S3/R2)

rclone sync /var/lib/docker/volumes/tracktor_data/_data backup:<bucket>/tracktor_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

tracktor

Tracktor — a self-hosted vehicle maintenance and expense tracker. Log fuel fill-ups and watch mileage/economy, record services and repairs, track insurance and registration with expiry reminders, and see it all per vehicle on a clean dashboard.

Single host-networked Nomad service with a persistent SQLite volume.

Deploy

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

Configure

Variable Default Description
port 3000 Web UI port.
image ghcr.io/javedh-dev/tracktor:latest Container image. Pin a tag in production.
data_volume tracktor_data /data — the SQLite database.
resources { cpu = 300, memory = 256 } Task resources.

The first account you create becomes the admin. Put Tracktor behind an authenticating reverse proxy over TLS before exposing it, and pin the job to the node holding the volume with constraints.