Nomploy Nomad Packs

← All packs

snipe-it v0.1.0

Productivity

Snipe-IT — a free, open-source IT asset management system: track hardware, licenses, accessories and consumables, with checkouts, audits and reporting. Batteries-included with a bundled MariaDB. Deployed as a single host-networked Nomad service.

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

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

3 tasks http 8000db 3306 2 volumes image snipe/snipe-it:latest tracks :latest image bumped today
Variables 15
values.hcl

Save as values.hcl, edit, then run:

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

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

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

# The Snipe-IT container image. Pin a tag in production.
image = "snipe/snipe-it:latest"

# Host port for the Snipe-IT web UI.
port = 8000

# Laravel APP_KEY. MUST be 'base64:' + a base64-encoded 32-byte value, and CHANGE THIS (it encrypts data). Generate: echo "base64:$(openssl rand -base64 32)".
app_key = "base64:0000000000000000000000000000000000000000000="

# Public URL Snipe-IT is reached at (APP_URL). Empty = http://localhost:<port>. Set to your real host/domain.
base_url = ""

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

# Host port for the bundled MariaDB (loopback only).
db_port = 3306

# Password for the Snipe-IT database user. CHANGE THIS.
db_password = "change-me-snipeit-db"

# Named volume mounted at /var/lib/snipeit (uploads and app data).
data_volume = "snipe_it_data"

# Named volume for the MariaDB data directory.
db_data_volume = "snipe_it_db"

# Resources for the MariaDB task.
db_resources = {
    cpu    = 400
    memory = 512
  }

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

# The task resources.
resources = {
    cpu    = 500
    memory = 512
  }
NameTypeDefaultDescription
job_name string
"snipe-it"
The name of the Nomad job.
namespace string
"default"
The Nomad namespace to deploy into.
datacenters list
["*"]
The datacenters to deploy to.
image string
"snipe/snipe-it:latest"
The Snipe-IT container image. Pin a tag in production.
port number
8000
Host port for the Snipe-IT web UI.
app_key key string
"base64:0000000000000000000000000000000000000000000="
Laravel APP_KEY. MUST be 'base64:' + a base64-encoded 32-byte value, and CHANGE THIS (it encrypts data). Generate: echo "base64:$(openssl rand -base64 32)".
base_url string
""
Public URL Snipe-IT is reached at (APP_URL). Empty = http://localhost:<port>. Set to your real host/domain.
mariadb_image string
"mariadb:11"
The MariaDB image for the bundled database.
db_port number
3306
Host port for the bundled MariaDB (loopback only).
db_password set me string
"change-me-snipeit-db"
Password for the Snipe-IT database user. CHANGE THIS.
data_volume string
"snipe_it_data"
Named volume mounted at /var/lib/snipeit (uploads and app data).
db_data_volume string
"snipe_it_db"
Named volume for the MariaDB data directory.
db_resources object
{
    cpu    = 400
    memory = 512
  }
Resources for the MariaDB task.
constraints list
[]
Placement constraints. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true".
resources object
{
    cpu    = 500
    memory = 512
  }
The task resources.
Back up this pack

This pack stores data in 2 Docker named volumes: snipe_it_datasnipe_it_db

⚠ 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/snipe_it_data/_data \
  /var/lib/docker/volumes/snipe_it_db/_data

rclone (sync to S3/R2)

rclone sync /var/lib/docker/volumes/snipe_it_data/_data backup:<bucket>/snipe_it_data
rclone sync /var/lib/docker/volumes/snipe_it_db/_data backup:<bucket>/snipe_it_db

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

snipe-it

Snipe-IT — a free, open-source IT asset management system. Track hardware, licenses, accessories and consumables; check items in and out to users; run audits, reports and alerts. This pack is batteries-included: the app plus a bundled MariaDB in one host-networked group.

Deploy

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

Configure

Variable Default Description
port 8000 Web UI port.
app_key base64:0000… Change this. base64: + a 32-byte base64 value — encrypts data. echo "base64:$(openssl rand -base64 32)".
base_url "" Public URL (APP_URL). Empty = http://localhost:<port>.
db_password change-me-… Change this. Database password.
image snipe/snipe-it:latest App image. Pin a tag in production.
mariadb_image mariadb:11 Bundled database image.
data_volume / db_data_volume … App uploads (/var/lib/snipeit) and MariaDB data.
db_port 3306 Loopback MariaDB port.
resources / db_resources … Per-task resources.

Set app_key (valid base64: key) before first boot — it encrypts stored data, so keep it stable. The app runs database migrations automatically on start; the first run also walks you through creating the admin user. All tasks share the host network, so pin the job to the node holding the volumes with constraints and use a reverse proxy over TLS.