RabbitMQ — a battle-tested message broker (AMQP 0-9-1, plus MQTT/STOMP) with the management UI enabled. Deployed as a host-networked Nomad service with a persistent Docker volume and a stable node name so its data survives reschedules.
Save as values.hcl, edit, then run:
# The name of the Nomad job.
job_name = "rabbitmq"
# The Nomad namespace to deploy into.
namespace = "default"
# The datacenters to deploy to.
datacenters = ["*"]
# The RabbitMQ container image — use a `-management` tag so the web UI is included.
image = "rabbitmq:4-management"
# Host port for AMQP (client connections).
amqp_port = 5672
# Host port for the management web UI / HTTP API.
management_port = 15672
# Admin user created on first boot. (The built-in `guest` user only works from localhost, so remote clients need this.)
default_user = "admin"
# Password for default_user. CHANGE THIS. Only applied on first boot (empty data volume).
default_password = "rabbitmq"
# Docker named volume for /var/lib/rabbitmq (Mnesia DB: queues, exchanges, users, messages). A fresh volume inherits the image's dir ownership (uid 999). Back it up.
data_volume = "rabbitmq_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 | "rabbitmq" | The name of the Nomad job. |
| namespace | string | "default" | The Nomad namespace to deploy into. |
| datacenters | list | ["*"] | The datacenters to deploy to. |
| image | string | "rabbitmq:4-management" | The RabbitMQ container image — use a `-management` tag so the web UI is included. |
| amqp_port | number | 5672 | Host port for AMQP (client connections). |
| management_port | number | 15672 | Host port for the management web UI / HTTP API. |
| default_user | string | "admin" | Admin user created on first boot. (The built-in `guest` user only works from localhost, so remote clients need this.) |
| default_password key | string | "rabbitmq" | Password for default_user. CHANGE THIS. Only applied on first boot (empty data volume). |
| data_volume | string | "rabbitmq_data" | Docker named volume for /var/lib/rabbitmq (Mnesia DB: queues, exchanges, users, messages). A fresh volume inherits the image's dir ownership (uid 999). Back it up. |
| 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.
RabbitMQ — a mature, widely-used message broker (AMQP 0-9-1, with MQTT/STOMP available), deployed with its management UI enabled. A common dependency for apps that need work queues, pub/sub, or task processing (Celery, Sidekiq, etc.).
Host-networked Nomad service with a persistent Docker volume. The node name is pinned to
rabbit@localhost so the Mnesia data directory stays stable across reschedules.
nomad-pack registry add nomploy github.com/Nomploy/nomad-packs
nomad-pack run rabbitmq --registry nomploy
In nomploy: create a Compose service, type Nomad Pack, pack rabbitmq, custom
registry github.com/Nomploy/nomad-packs, then Deploy.
amqp://admin:<password>@<node-ip>:5672/http://<node-ip>:15672 (login with the same credentials)| Variable | Default | Notes |
|---|---|---|
image |
rabbitmq:4-management |
Use a -management tag for the UI. Pin in production. |
amqp_port |
5672 |
Client connections. |
management_port |
15672 |
Web UI / HTTP API. |
default_user / default_password |
admin / rabbitmq |
Admin created on first boot. Change the password. |
data_volume |
rabbitmq_data |
Mnesia store. Back it up. |
constraints |
[] |
Pin to a node so the local volume stays put. |
resources |
cpu 500 / mem 512 |
Raise for heavy throughput. |
count is fixed to 1 with local storage. Pin it with constraints.
For a RabbitMQ cluster you need multiple coordinated nodes with a shared Erlang cookie —
out of scope for this pack.guest user only works from localhost; remote clients must use
default_user.rabbitmq.conf. The admin user is created only
on first boot with an empty data volume.data_volume, and export definitions from the management UI
(Overview → Export definitions) for a portable copy of vhosts/users/queues.