Nomploy Nomad Packs

← All packs

immudb v0.1.0

Databases

immudb — a lightweight, high-speed immutable database with built-in cryptographic verification: data can be appended and read but not silently changed or deleted, so you get tamper-evident history for audit logs, transactions, and compliance. Speaks SQL and key-value. Deployed as a host-networked Nomad service with a persistent data volume.

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

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

1 task db 3322web 8085 1 volume image codenotary/immudb:latest tracks :latest image bumped today
Variables 10
values.hcl

Save as values.hcl, edit, then run:

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

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

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

# The immudb container image. Pin a tag in production.
image = "codenotary/immudb:latest"

# Host port for the immudb protocol (gRPC / MySQL & PostgreSQL wire), IMMUDB_PORT.
port = 3322

# Host port for the web console (IMMUDB_WEB_SERVER_PORT).
web_port = 8085

# Password for the default 'immudb' admin user (IMMUDB_ADMIN_PASSWORD). CHANGE THIS — must meet complexity rules (8+ chars, upper/lower/digit/symbol).
admin_password = "Change-me-1!"

# Named volume for immudb data (/var/lib/immudb): all databases and their verifiable history.
data_volume = "immudb_data"

# Placement constraints. Pin to the node holding the volume. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true".
constraints = []

# Resources for the immudb task.
resources = {
    cpu    = 500
    memory = 512
  }
NameTypeDefaultDescription
job_name string
"immudb"
The name of the Nomad job.
namespace string
"default"
The Nomad namespace to deploy into.
datacenters list
["*"]
The datacenters to deploy to.
image string
"codenotary/immudb:latest"
The immudb container image. Pin a tag in production.
port number
3322
Host port for the immudb protocol (gRPC / MySQL & PostgreSQL wire), IMMUDB_PORT.
web_port number
8085
Host port for the web console (IMMUDB_WEB_SERVER_PORT).
admin_password set me string
"Change-me-1!"
Password for the default 'immudb' admin user (IMMUDB_ADMIN_PASSWORD). CHANGE THIS — must meet complexity rules (8+ chars, upper/lower/digit/symbol).
data_volume string
"immudb_data"
Named volume for immudb data (/var/lib/immudb): all databases and their verifiable history.
constraints list
[]
Placement constraints. Pin to the node holding the volume. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true".
resources object
{
    cpu    = 500
    memory = 512
  }
Resources for the immudb task.
Back up this pack

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

rclone (sync to S3/R2)

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

immudb

immudb — a lightweight, high-speed immutable database. Data can be appended and read but not silently changed or deleted, and every entry is cryptographically verifiable — giving you a tamper-evident history that's ideal for audit logs, transactions, and compliance. Supports both SQL and key-value, with a web console and clients in many languages.

Single host-networked Nomad service with a persistent data volume.

Deploy

nomad-pack registry add nomploy https://github.com/Nomploy/nomad-packs
nomad-pack run immudb --registry=nomploy

Configure

Variable Default Description
port 3322 DB protocol port (IMMUDB_PORT) — gRPC and PostgreSQL/MySQL wire.
web_port 8085 Web console port (IMMUDB_WEB_SERVER_PORT).
admin_password Change-me-1! Admin password (IMMUDB_ADMIN_PASSWORD). Change it — needs upper/lower/digit/symbol, 8+ chars.
data_volume immudb_data /var/lib/immudb — all databases and their verifiable history.
image codenotary/immudb:latest Container image. Pin a tag in production.
resources { cpu = 500, memory = 512 } Task resources.

Connect with the immuclient CLI, the official SDKs (Go, Python, Java, Node, .NET), or via the PostgreSQL/MySQL wire protocol. Log in as immudb with your admin password and change it. Keep the DB port on an internal network. Pin the job to the node holding the volume with constraints.