Nomploy Nomad Packs

← All packs

huginn v0.1.0

Automation

Huginn — build agents that monitor and act on your behalf: watch websites, scrape data, run workflows and send notifications (a self-hosted IFTTT/Zapier alternative). Deployed as an all-in-one host-networked Nomad service (bundled MySQL).

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

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/huginn/huginn:latest tracks :latest image bumped today
Variables 12
values.hcl

Save as values.hcl, edit, then run:

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

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

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

# The Huginn all-in-one container image. Pin a tag in production.
image = "ghcr.io/huginn/huginn:latest"

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

# Admin username seeded on first start.
admin_user = "admin"

# Admin password seeded on first start. CHANGE THIS.
admin_password = "huginn_change_me"

# Secret token used to sign cookies (128-char hex, openssl rand -hex 64). CHANGE THIS.
app_secret_token = "change_me_to_a_128_char_random_hex_secret_00000000000000000000000000000000000000000000000000000000000000000000000000000000"

# Domain/host:port used in generated links (e.g. huginn.example.com).
domain = "localhost:3000"

# Named volume for the bundled MySQL data (/var/lib/mysql).
data_volume = "huginn_data"

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

# The task resources.
resources = {
    cpu    = 1000
    memory = 1536
  }
NameTypeDefaultDescription
job_name string
"huginn"
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/huginn/huginn:latest"
The Huginn all-in-one container image. Pin a tag in production.
port number
3000
Host port for the Huginn web UI.
admin_user string
"admin"
Admin username seeded on first start.
admin_password set me string
"huginn_change_me"
Admin password seeded on first start. CHANGE THIS.
app_secret_token set me string
"change_me_to_a_128_char_random_hex_secret_00000000000000000000000000000000000000000000000000000000000000000000000000000000"
Secret token used to sign cookies (128-char hex, openssl rand -hex 64). CHANGE THIS.
domain string
"localhost:3000"
Domain/host:port used in generated links (e.g. huginn.example.com).
data_volume string
"huginn_data"
Named volume for the bundled MySQL data (/var/lib/mysql).
constraints list
[]
Placement constraints. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true".
resources object
{
    cpu    = 1000
    memory = 1536
  }
The task resources.
Back up this pack

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

rclone (sync to S3/R2)

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

huginn

Huginn is a system for building agents that perform automated tasks online — a self-hosted alternative to IFTTT or Zapier. Agents can watch websites for changes, scrape and transform data, poll APIs and RSS feeds, run schedules, and chain together to send emails, push notifications or trigger webhooks. Everything runs on your own server, keeping your data private.

This pack runs the Huginn all-in-one image (application plus a bundled MySQL and background workers) as a single host-networked Nomad service.

Deploy

nomad-pack run huginn --registry=nomploy \
  --var admin_password=$(openssl rand -hex 12) \
  --var app_secret_token=$(openssl rand -hex 64) \
  --var domain=huginn.example.com

Open http://<node-ip>:3000 and log in.

Configuration

Variable Default Description
image ghcr.io/huginn/huginn:latest All-in-one image (pin a tag in production).
port 3000 Host port for the web UI.
admin_user admin Seeded admin username.
admin_password huginn_change_me Seeded admin password — change this.
app_secret_token placeholder (128 hex) Cookie-signing secret — change this.
domain localhost:3000 Domain used in generated links.
data_volume huginn_data Volume for the bundled MySQL (/var/lib/mysql).
resources 1000 MHz / 1536 MB CPU and memory for the task.

The bundled MySQL data persists in data_volume. For larger deployments, use the huginn/huginn-single-process image with an external database instead.