Nomploy Nomad Packs

← All packs

portainer v0.1.0

Device management

Portainer — a lightweight management UI for Docker (and Kubernetes/Swarm): browse and control containers, images, volumes, networks and stacks from your browser. Deployed as a single host-networked Nomad service.

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

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

1 task https 9443http 9000 1 volume image portainer/portainer-ce:latest tracks :latest image bumped today
Variables 10
values.hcl

Save as values.hcl, edit, then run:

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

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

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

# The Portainer CE container image. Pin a tag in production.
image = "portainer/portainer-ce:latest"

# Host port for the Portainer web UI (HTTPS).
port = 9443

# Host port for the Portainer web UI (HTTP).
http_port = 9000

# Named volume for Portainer data (/data).
data_volume = "portainer_data"

# Host path to the Docker socket that Portainer manages.
docker_sock = "/var/run/docker.sock"

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

# The task resources.
resources = {
    cpu    = 300
    memory = 256
  }
NameTypeDefaultDescription
job_name string
"portainer"
The name of the Nomad job.
namespace string
"default"
The Nomad namespace to deploy into.
datacenters list
["*"]
The datacenters to deploy to.
image string
"portainer/portainer-ce:latest"
The Portainer CE container image. Pin a tag in production.
port number
9443
Host port for the Portainer web UI (HTTPS).
http_port number
9000
Host port for the Portainer web UI (HTTP).
data_volume string
"portainer_data"
Named volume for Portainer data (/data).
docker_sock string
"/var/run/docker.sock"
Host path to the Docker socket that Portainer manages.
constraints list
[]
Placement constraints. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true". Pin to the node whose Docker you want to manage.
resources object
{
    cpu    = 300
    memory = 256
  }
The task resources.
Back up this pack

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

rclone (sync to S3/R2)

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

portainer

Portainer is a lightweight, popular management UI for container platforms. Its Community Edition gives you a clean web interface to browse and control containers, images, volumes, networks, stacks and environments on Docker (and Kubernetes/Swarm) — start/stop/inspect, view logs, open a console, deploy stacks and manage users/teams.

This pack runs Portainer CE as a single host-networked Nomad service that manages the Docker engine on its node.

Deploy

nomad-pack run portainer --registry=nomploy

Open https://<node-ip>:9443 and create the admin account (do this promptly — Portainer disables initial setup after a timeout).

Configuration

Variable Default Description
image portainer/portainer-ce:latest Container image (pin a tag in production).
port 9443 Host port for the HTTPS web UI.
http_port 9000 Host port for the HTTP web UI.
data_volume portainer_data Volume for Portainer data (/data).
docker_sock /var/run/docker.sock Docker socket to manage.
resources 300 MHz / 256 MB CPU and memory for the task.

Portainer manages the Docker socket of the node it runs on — pin it there with constraints. Settings, users and environments persist in data_volume.