Nomploy Nomad Packs

← All packs

netalertx v0.1.0

Networking

NetAlertX — a network scanner and intrusion detector that alerts you when unknown devices join your network, with device history and presence tracking. Deployed as a single host-networked Nomad service.

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

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

2 tasks http 20211graphql 20214 1 volume image ghcr.io/netalertx/netalertx:latest tracks :latest image bumped today
Variables 9
values.hcl

Save as values.hcl, edit, then run:

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

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

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

# The NetAlertX container image. Pin a tag in production.
image = "ghcr.io/netalertx/netalertx:latest"

# Host port for the NetAlertX web UI.
port = 20211

# Host port for the internal GraphQL API.
graphql_port = 20214

# Named volume for NetAlertX config and database (contains config/ and db/).
data_volume = "netalertx_data"

# Placement constraints. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true". Pin to the node whose LAN you want scanned.
constraints = []

# The task resources.
resources = {
    cpu    = 500
    memory = 512
  }
NameTypeDefaultDescription
job_name string
"netalertx"
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/netalertx/netalertx:latest"
The NetAlertX container image. Pin a tag in production.
port number
20211
Host port for the NetAlertX web UI.
graphql_port number
20214
Host port for the internal GraphQL API.
data_volume string
"netalertx_data"
Named volume for NetAlertX config and database (contains config/ and db/).
constraints list
[]
Placement constraints. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true". Pin to the node whose LAN you want scanned.
resources object
{
    cpu    = 500
    memory = 512
  }
The task resources.
Back up this pack

This pack stores data in one Docker named volume: netalertx_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/netalertx_data/_data

rclone (sync to S3/R2)

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

netalertx

NetAlertX (formerly PiAlert) scans your local network and keeps a live inventory of every device that connects. It alerts you the moment an unknown device joins, tracks presence (who's home), records device history and sessions, and can notify via dozens of channels. A great companion to a home lab or any network you want to keep an eye on.

This pack runs NetAlertX as a single host-networked Nomad service with the raw-socket capabilities it needs to scan the LAN.

Deploy

nomad-pack run netalertx --registry=nomploy

Open http://<node-ip>:20211. NetAlertX scans the network of the node it runs on — pin it to the right node with constraints.

Configuration

Variable Default Description
image ghcr.io/netalertx/netalertx:latest Container image (pin a tag in production).
port 20211 Host port for the web UI.
graphql_port 20214 Host port for the internal GraphQL API.
data_volume netalertx_data Volume for config and database (/data).
constraints none Pin to the node whose LAN you want scanned.
resources 500 MHz / 512 MB CPU and memory for the task.

Config and the device database persist in data_volume under /data/config and /data/db. A prestart init task creates those folders and fixes permissions.