n8n — a fair-code workflow automation tool (400+ integrations, visual editor, webhooks, scheduling). Deployed as a host-networked Nomad service with a persistent Docker volume; uses the bundled SQLite database for a zero-dependency single-node setup.
Save as values.hcl, edit, then run:
# The name of the Nomad job.
job_name = "n8n"
# The Nomad namespace to deploy into.
namespace = "default"
# The datacenters to deploy to.
datacenters = ["*"]
# The n8n container image.
image = "n8nio/n8n:latest"
# Host port for the n8n editor / webhook listener.
port = 5678
# Public hostname n8n is served at (e.g. n8n.example.com), used in generated URLs. Empty = derive from the request.
host = ""
# Public base URL for webhooks (e.g. https://n8n.example.com/). Set this when fronting n8n with a domain, or externally-triggered webhooks won't route. Empty = use host:port.
webhook_url = ""
# Key used to encrypt stored credentials. Leave empty and n8n generates one and persists it in the data volume (fine for single-node). Set it explicitly if you need to restore credentials onto a fresh volume — and treat it as a secret.
encryption_key = ""
# Default timezone for schedules (e.g. Europe/Bratislava).
timezone = "UTC"
# Require the n8n session cookie to be HTTPS-only. Keep false to log in over plain http://<ip>:<port>; set true when serving n8n over HTTPS (e.g. behind a TLS proxy).
secure_cookie = false
# Docker named volume for /home/node/.n8n (SQLite DB, encryption key, config). A prestart task chowns it to uid 1000 (the `node` user) so n8n can write it.
data_volume = "n8n_data"
# Placement constraints — pin to one node so the local volume stays put. 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 | "n8n" | The name of the Nomad job. |
| namespace | string | "default" | The Nomad namespace to deploy into. |
| datacenters | list | ["*"] | The datacenters to deploy to. |
| image | string | "n8nio/n8n:latest" | The n8n container image. |
| port | number | 5678 | Host port for the n8n editor / webhook listener. |
| host | string | "" | Public hostname n8n is served at (e.g. n8n.example.com), used in generated URLs. Empty = derive from the request. |
| webhook_url | string | "" | Public base URL for webhooks (e.g. https://n8n.example.com/). Set this when fronting n8n with a domain, or externally-triggered webhooks won't route. Empty = use host:port. |
| encryption_key key | string | "" | Key used to encrypt stored credentials. Leave empty and n8n generates one and persists it in the data volume (fine for single-node). Set it explicitly if you need to restore credentials onto a fresh volume — and treat it as a secret. |
| timezone | string | "UTC" | Default timezone for schedules (e.g. Europe/Bratislava). |
| secure_cookie | bool | false | Require the n8n session cookie to be HTTPS-only. Keep false to log in over plain http://<ip>:<port>; set true when serving n8n over HTTPS (e.g. behind a TLS proxy). |
| data_volume | string | "n8n_data" | Docker named volume for /home/node/.n8n (SQLite DB, encryption key, config). A prestart task chowns it to uid 1000 (the `node` user) so n8n can write it. |
| constraints | list | [] | Placement constraints — pin to one node so the local volume stays put. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true". |
| resources | object | {
cpu = 500
memory = 512
} | The task resources. |
No variables match.
n8n — a fair-code workflow automation tool: a visual editor, 400+ integrations, webhooks, and scheduling to wire your services together. Deployed as a host-networked Nomad service with a persistent Docker volume, using the bundled SQLite database (no external dependency) — ideal for a single node.
nomad-pack registry add nomploy github.com/Nomploy/nomad-packs
nomad-pack run n8n --registry nomploy
In nomploy: create a Compose service, type Nomad Pack, pack n8n, custom registry
github.com/Nomploy/nomad-packs, then Deploy.
Open http://<node-ip>:5678 and create the owner account on first visit.
| Variable | Default | Notes |
|---|---|---|
image |
n8nio/n8n:latest |
Pin a tag in production. |
port |
5678 |
Editor + webhook listener. |
host / webhook_url |
"" |
Set when fronting with a domain so generated URLs / webhooks are correct. |
encryption_key |
"" |
Empty = auto-generated and persisted in the volume. Back it up — credentials can't be restored without it. |
secure_cookie |
false |
Keep false for http://<ip> login; set true behind HTTPS. |
timezone |
UTC |
e.g. Europe/Bratislava. |
data_volume |
n8n_data |
SQLite DB + encryption key. Back it up. |
constraints |
[] |
Pin to a node so the local volume stays put. |
count is fixed to 1 (SQLite on a local volume). A prestart task
chowns the volume to uid 1000 (the node user) so n8n can write it. Pin with
constraints.