Deployment guide

NocoDB

Overview

NocoDB is an open-source no-code database platform and an Airtable alternative. It turns a SQL database into a smart spreadsheet with grid, gallery, kanban, form and calendar views, so a whole team can build applications on shared data without writing code. The SecureAnyCloud image runs NocoDB 2026.06.2 from the official container image and generates a unique admin account on the first boot of every VM.

What you get:

  • NocoDB 2026.06.2 (container nocodb/nocodb:2026.06.2, AGPL-3.0) with grid, gallery, kanban, form and calendar views, an auto-generated REST and GraphQL API, webhooks, roles and real-time collaboration
  • A local PostgreSQL 16 metadata store bound to loopback 127.0.0.1:5432, with its data directory on the dedicated data disk
  • nginx on :80 as a reverse proxy to the loopback NocoDB backend, with WebSocket upgrade headers for real-time updates, plus an unauthenticated /health endpoint
  • An nftables rule that drops any inbound connection to :8080 that does not arrive on loopback, so NocoDB is reachable only through nginx
  • A per-VM admin account (admin@sac.local) generated on first boot and recorded in a root-only file
  • A dedicated Azure data disk at /var/lib/nocodb for the PostgreSQL metadata (pgdata) and NocoDB attachments (data)
  • postgresql.service, nocodb.service and nginx.service as systemd units, enabled and active
  • 24/7 SecureAnyCloud support

Prerequisites

You need an active Azure subscription, an SSH key pair, and a VNet and subnet in the target region.

Standard_B4ms (4 vCPU, 16 GiB RAM) is the recommended size. The NocoDB and PostgreSQL stack runs comfortably there.

In the network security group, allow inbound 22/tcp from your management network and 80/tcp. NocoDB serves plain HTTP on port 80, so terminate TLS in front of it with your own domain. Use an Azure Application Gateway or Front Door, or a reverse proxy with certbot.

Step 1 - Deploy from the Azure Marketplace

Sign in to the Azure Portal, choose Create a resource, search the Marketplace for NocoDB by SecureAnyCloud, and select Create.

On the Basics tab, pick your subscription, resource group, region and size (Standard_B4ms recommended). Under Administrator account, choose SSH public key and paste your key. Under Inbound port rules, allow SSH (22) and HTTP (80).

Review the dedicated data disk on the Disks tab. Then select Review + create and Create.

Step 2 - Deploy from the Azure CLI

Accept the Marketplace terms once per subscription, then create the VM and open port 80:

# Accept the Marketplace terms once per subscription (required before the first CLI deploy)
az vm image terms accept --urn sac1647283583153:nocodb-ubuntu-24-04:default:latest
az vm create \
  --resource-group <your-rg> \
  --name nocodb \
  --image sac1647283583153:nocodb-ubuntu-24-04:default:latest \
  --size Standard_B4ms \
  --admin-username azureuser \
  --ssh-key-values ~/.ssh/id_ed25519.pub \
  --vnet-name <your-vnet> --subnet <your-subnet> \
  --public-ip-sku Standard
az vm open-port --resource-group <your-rg> --name nocodb --port 80 --priority 1010

Step 3 - Connect to your VM

Connect to the VM over SSH:

ssh azureuser@<vm-public-ip>

Step 4 - Confirm the services are running

Check that all three services are active:

systemctl is-active postgresql nocodb.service nginx.service

All three report active. On first boot, NocoDB creates a per-VM admin against a clean PostgreSQL metadata database.

Step 5 - Retrieve your admin password

First boot generates a unique admin password for your VM and writes it to a root-only file. Read the file:

sudo cat /root/nocodb-credentials.txt

The file contains NOCODB_ADMIN_EMAIL (admin@sac.local) and NOCODB_ADMIN_PASSWORD. Store the password somewhere safe.

Step 6 - Confirm the health endpoint

nginx serves an unauthenticated health file for load balancers and probes. Request it:

curl -s http://localhost/health; echo

The command returns ok.

Step 7 - Open the dashboard

Browse to http://<vm-public-ip>/ and sign in as admin@sac.local with the password from Step 5. Open signup is disabled (invite-only), so only accounts you invite can join.

After you sign in, you land on your workspace. A base is a container for tables, views and their shared data. Create one to start building.

Open a table to work in the grid view. The grid view is a spreadsheet-style editor where each row is a record and each column is a typed field. Switch a table to gallery, kanban, form or calendar view with a click.

The team and base settings cover members and roles, API tokens, webhooks and other configuration.

Step 8 - Verify authentication from the command line

NocoDB's sign-in endpoint rejects a wrong password and accepts the per-VM admin password. Read the password into a variable, then authenticate through nginx:

NC_PASS=$(sudo grep '^NOCODB_ADMIN_PASSWORD=' /root/nocodb-credentials.txt | cut -d= -f2-)
curl -s -X POST -H 'Content-Type: application/json' \
  -d "{\"email\":\"admin@sac.local\",\"password\":\"$NC_PASS\"}" \
  http://localhost/api/v1/auth/user/signin | head -c 120; echo

The response contains a "token" field. That JWT authenticates subsequent API calls, for example xc-auth on /api/v2/... endpoints.

Step 9 - Confirm the PostgreSQL backend on the dedicated disk

NocoDB stores its metadata (bases, tables, views, users) in a local PostgreSQL 16 instance. The data directory lives on the dedicated Azure data disk, so it survives container restarts, reboots and resizes. Check the mount and the metadata schema:

findmnt /var/lib/nocodb
sudo -u postgres psql -tAc "SELECT count(*) FROM information_schema.tables WHERE table_schema='public'" nocodb

The mount is backed by a separate Azure data disk that is captured into the image and re-provisioned on every VM. The table count is one or more, which is the NocoDB metadata schema. PostgreSQL listens on loopback 127.0.0.1:5432 only.

Building your app

NocoDB is a full no-code platform. Create a base, add tables and typed columns, and switch between grid, gallery, kanban, form and calendar views. Share forms to collect data, add filters, sorts and group-bys, wire up webhooks on row changes, and invite teammates with per-base roles.

Every table is instantly available through the auto-generated REST and GraphQL API. Point any HTTP client at http://<your-domain>/api/v2/ with a token created in the base settings. See the NocoDB documentation for the API reference, views, automations and SDKs.

Maintenance

  • Users and roles: Invite members and assign per-base roles from the base settings. Open signup is disabled by default.
  • Backups: Snapshot the /var/lib/nocodb data disk, or take a logical dump of the nocodb PostgreSQL database.
  • Data: The PostgreSQL metadata lives under /var/lib/nocodb/pgdata and NocoDB attachments live under /var/lib/nocodb/data.
  • TLS: NocoDB serves plain HTTP on port 80. Front it with TLS and your own domain, using an Azure Application Gateway or Front Door, or certbot.
  • Upgrades: NocoDB runs as a container pinned to nocodb/nocodb:2026.06.2. To upgrade, move to a newer tag and restart the service.
  • Security patches: unattended-upgrades remains enabled, so the OS continues to receive security updates automatically.

Support

SecureAnyCloud provides 24/7 expert support for this image. Contact sales@secureanycloud.com.

Deploy on Azure

Launch NocoDB on Ubuntu 24.04 LTS on Azure with 24/7 support from SecureAnyCloud.

View this image

Need Help?

Our support team is available 24/7.

sales@secureanycloud.com

Deploy on Azure