NocoDB — an open-source Airtable alternative that turns any database into a smart spreadsheet with grid/kanban/gallery views, forms, and a REST API. Deployed all-in-one with its PostgreSQL database in a single host-networked Nomad job.
Save as values.hcl, edit, then run:
# The name of the Nomad job.
job_name = "nocodb"
# The Nomad namespace to deploy into.
namespace = "default"
# The datacenters to deploy to.
datacenters = ["*"]
# The NocoDB container image. Pin a tag in production.
image = "nocodb/nocodb:latest"
# Host port for the NocoDB web UI / API.
port = 8098
# Public URL NocoDB is served at (NC_PUBLIC_URL), used in emails/links. Empty = leave unset.
public_url = ""
# Secret used to sign auth tokens (NC_AUTH_JWT_SECRET). Set a random string and keep it stable. Empty = NocoDB generates one.
jwt_secret = ""
# Docker named volume for /usr/app/data (uploads/attachments). NocoDB runs as root, so a fresh volume is writable. Back it up.
data_volume = "nocodb_data"
# Resources for the NocoDB task.
nocodb_resources = {
cpu = 500
memory = 512
}
# PostgreSQL image backing NocoDB's metadata.
postgres_image = "postgres:16-alpine"
# Host port PostgreSQL listens on. NocoDB connects on 127.0.0.1.
db_port = 5432
# Password for NocoDB's Postgres user. CHANGE THIS. (DB name and user are both "nocodb".)
db_password = "nocodb"
# Docker named volume for the Postgres data dir (bases, views, users). Back it up.
db_data_volume = "nocodb_db_data"
# Resources for the PostgreSQL task.
postgres_resources = {
cpu = 500
memory = 512
}
# Placement constraints — pin the job to one node so the local volumes stay put. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true".
constraints = []
| Name | Type | Default | Description |
|---|---|---|---|
| job_name | string | "nocodb" | The name of the Nomad job. |
| namespace | string | "default" | The Nomad namespace to deploy into. |
| datacenters | list | ["*"] | The datacenters to deploy to. |
| image | string | "nocodb/nocodb:latest" | The NocoDB container image. Pin a tag in production. |
| port | number | 8098 | Host port for the NocoDB web UI / API. |
| public_url | string | "" | Public URL NocoDB is served at (NC_PUBLIC_URL), used in emails/links. Empty = leave unset. |
| jwt_secret key | string | "" | Secret used to sign auth tokens (NC_AUTH_JWT_SECRET). Set a random string and keep it stable. Empty = NocoDB generates one. |
| data_volume | string | "nocodb_data" | Docker named volume for /usr/app/data (uploads/attachments). NocoDB runs as root, so a fresh volume is writable. Back it up. |
| nocodb_resources | object | {
cpu = 500
memory = 512
} | Resources for the NocoDB task. |
| postgres_image | string | "postgres:16-alpine" | PostgreSQL image backing NocoDB's metadata. |
| db_port | number | 5432 | Host port PostgreSQL listens on. NocoDB connects on 127.0.0.1. |
| db_password key | string | "nocodb" | Password for NocoDB's Postgres user. CHANGE THIS. (DB name and user are both "nocodb".) |
| db_data_volume | string | "nocodb_db_data" | Docker named volume for the Postgres data dir (bases, views, users). Back it up. |
| postgres_resources | object | {
cpu = 500
memory = 512
} | Resources for the PostgreSQL task. |
| constraints | list | [] | Placement constraints — pin the job to one node so the local volumes stay put. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true". |
No variables match.
NocoDB — an open-source Airtable alternative that turns a database into a smart spreadsheet: grid/kanban/gallery views, forms, and an auto-generated REST API. All-in-one: NocoDB plus its PostgreSQL metadata database in a single host-networked Nomad job (Postgres as a prestart sidecar). NocoDB migrates on start.
nomad-pack registry add nomploy github.com/Nomploy/nomad-packs
nomad-pack run nocodb --registry nomploy
In nomploy: create a Compose service, type Nomad Pack, pack nocodb, custom registry
github.com/Nomploy/nomad-packs, then Deploy.
Open http://<node-ip>:8098 and create the super-admin account on first visit.
| Variable | Default | Notes |
|---|---|---|
image |
nocodb/nocodb:latest |
Pin a tag in production. |
port |
8098 |
Web UI / API. |
public_url |
"" |
Public URL (NC_PUBLIC_URL) for links/emails. |
jwt_secret |
"" |
Auth-token secret; set a stable value in production. |
db_password |
nocodb |
Postgres password. Change this. |
db_data_volume |
nocodb_db_data |
Metadata (bases/views/users). Back it up. |
data_volume |
nocodb_data |
Uploads/attachments. Back it up. |
db_port |
5432 |
Bundled Postgres host port. |
constraints |
[] |
Pin to a node so the volumes stay put. |
Per-task resources: nocodb_resources, postgres_resources.
count is fixed to 1 (local Postgres + uploads volumes). Pin with
constraints.public_url to the HTTPS address./usr/app/data
holds uploaded attachments.