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.
Needs nomad-pack on PATH. The script only adds the nomploy registry and runs this pack.
Source ↗ Project ↗ ★ 15k ⚑ Report an issue
Save as values.hcl, edit, then run:
# 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
}
| Name | Type | Default | Description |
|---|---|---|---|
| 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. |
No variables match.
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.
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.
nomad-pack registry add nomploy https://github.com/Nomploy/nomad-packs
nomad-pack run snipe-it --registry=nomploy
| 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(validbase64: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 withconstraintsand use a reverse proxy over TLS.