NocoDB
NocoDB puts a spreadsheet-like interface and a REST API over a database: tables, views, forms. One container with its own SQLite store by default.
Last run on a host 8 Nov 2026
Pinned at 2026.10.1 (released 29 Oct 2026) · the newest upstream release
To try it: Docker, nothing else. See Try it locally.
To deploy it behind the proxy: Traefik running and a domain.
Try it locally
Section titled “Try it locally”On your own machine, with no proxy, domain or certificate. From apps/nocodb/:
cp .env.local.example .env.local
# The secrets ship empty; generate the ones this stack needsecho "NC_AUTH_JWT_SECRET=$(openssl rand -hex 64)" >> .env.local
mkdir -p volumes/local/datasudo chown 0:0 volumes/local/data
docker compose -f docker-compose.local.yml --env-file .env.local up -dThen open http://localhost:8080. Stop it again with the same command and down.
Installation
Section titled “Installation”From apps/nocodb/:
-
Copy the environment file and set
APP_TRAEFIK_HOST,TZandNC_ADMIN_EMAIL, then give the super-admin a password. NocoDB refuses to start whileNC_ADMIN_EMAILis set and the password is empty, and wants at least 8 characters with an uppercase letter, a number and a special character:Terminal window cp .env.example .envNC_PW='Nc1!'"$(openssl rand -hex 12)"; echo "$NC_PW" # store it nowsed -i "s|^NC_ADMIN_PASSWORD=.*|NC_ADMIN_PASSWORD=${NC_PW}|" .envunset NC_PW -
Generate the secret that signs every API token NocoDB issues:
Terminal window mkdir -p .secretsopenssl rand -hex 64 > .secrets/nc_jwt_secret.txtCopy it off the host now.
-
Create the data directory and hand it to root. NocoDB runs as root without capabilities, so it cannot write into a directory another user owns:
Terminal window mkdir -p volumes/datasudo chown 0:0 volumes/data -
Start it and wait for the first-boot initialisation, around thirty seconds:
Terminal window docker compose up -ddocker compose logs nocodb-app --followWait for the dashboard line.
-
Over the VPN, open
https://<APP_TRAEFIK_HOST>and log in withNC_ADMIN_EMAILand the password from step 1 — the super-admin is created on the first start. Signup by anyone else is closed, becauseNC_INVITE_ONLY_SIGNUPistruein the shipped configuration.
Verify
Section titled “Verify”docker compose ps # one service, healthyThen create a table, add a row, and create an API token under Details → API Tokens. Calling the API with that token is what confirms the signing secret is in place.
Going further
Section titled “Going further”Pairing it with n8n
Section titled “Pairing it with n8n”A table plus an API token is a data source for automation. In n8n, point an HTTP request at the internal Docker hostname if the two share a network, or at the Traefik hostname otherwise.
Using an external database
Section titled “Using an external database”NocoDB can sit on top of a database you already run rather than its own SQLite
store. If you point it there, that database holds the data and volumes/data
becomes configuration only — which changes what the backup has to cover.
Backup
Section titled “Backup”| Database | SQLite inside volumes/data by default — no server, no dump hook |
| State | volumes/data — bases, views, uploaded attachments |
| Also needed | .secrets/nc_jwt_secret.txt |
| Quiescing | Required. Stop the container or snapshot the filesystem rather than copying a live SQLite file. |
For borgmatic the default configuration is
source_directories only, with quiescing.
The signing secret is what makes issued tokens valid. Restoring without it signs everyone out — recoverable, but it looks like a failed restore.
If this instance points at an external database, back that database up with
the matching hook. volumes/data then holds configuration rather than the data.
Updates
Section titled “Updates”-
Read the release notes. The version scheme moved from
0.xto calendar versions, so the numbers no longer compare the way they used to. -
Back up
volumes/datawith the container stopped, and the secret with it. -
Raise
APP_TAGin.env, then:Terminal window docker compose pull && docker compose up -ddocker compose logs nocodb-app --follow -
Open a base and call the API with an existing token. A migration that touched the token tables shows up on the second, not the first.
Troubleshooting
Section titled “Troubleshooting”Everyone is signed out after a restore. The signing secret does not match. Put the original back.
Someone else is super-admin. The first signup claimed it before you did.
API tokens stop working after an update. Check the release notes for the versions crossed — the token format has changed across major steps.
Repository files
Section titled “Repository files”apps/nocodb/README.md— setup, the n8n pattern, known issuesapps/nocodb/UPSTREAM.md— source and upgrade checklist
Official sources
Section titled “Official sources”© 2026 SecDockBlueCode Apache-2.0Site content CC BY-NC 4.0