Back to Blog
Tutorial9 min read2026-07-03

How to Deploy NocoDB (Airtable Alternative)

NocoDB turns any database into a smart spreadsheet UI — an open-source Airtable alternative. This guide deploys NocoDB with managed PostgreSQL for durable, multi-user data.

Ajay Kumar
Ajay Kumar
Founder & DevOps, PandaStack

NocoDB is an open-source Airtable alternative that puts a spreadsheet-and-form UI on top of a real relational database. Unlike Airtable, your data lives in your own PostgreSQL or MySQL, so you can query it with SQL, connect BI tools, and never hit row limits or per-seat pricing surprises.

This guide deploys NocoDB backed by a managed PostgreSQL database for production use.

Why the database choice matters

NocoDB can run with an embedded SQLite file, which is tempting for a quick test — but don't use SQLite in production on a container platform. Containers are ephemeral; a SQLite file on the container disk vanishes on redeploy. Use an external managed PostgreSQL (or MySQL) so your data is durable and backed up.

BackendUse case
SQLite (embedded)Local trial only
Managed PostgreSQLProduction — durable, backed up, queryable
Managed MySQLProduction alternative

Step 1: Provision managed PostgreSQL

On [PandaStack](https://dashboard.pandastack.io), create a managed PostgreSQL (14.x or 16.x). When you link it to your app, DATABASE_URL is injected automatically. NocoDB reads its connection from the NC_DB variable, so we'll point that at the managed instance.

NocoDB's NC_DB connection string format:

pg://<host>:5432?u=<user>&p=<password>&d=<database>

If you have the standard DATABASE_URL (postgresql://user:pass@host:5432/db), translate it into NocoDB's format above, or set the discrete connection variables.

Step 2: Deploy the NocoDB container

Use the official image:

FROM nocodb/nocodb:latest
# Serves on port 8080

For production, pin a specific version tag rather than latest.

Environment variables:

NC_DB=pg://<host>:5432?u=<user>&p=<password>&d=<database>
NC_AUTH_JWT_SECRET=<long-random-string>
NC_PUBLIC_URL=https://nocodb.example.com
NC_DISABLE_TELE=true
  • NC_AUTH_JWT_SECRET signs auth tokens — generate a long random string and keep it stable (changing it logs everyone out).
  • NC_PUBLIC_URL ensures share links and emails use the right domain.

Step 3: Deploy

  1. 1Push the repo (or reference nocodb/nocodb) to GitHub.
  2. 2Create a container app on PandaStack.
  3. 3Set the env vars above (NC_DB and the JWT secret as secrets).
  4. 4Expose port 8080.
  5. 5Add a custom domain — SSL is automatic, and it must match NC_PUBLIC_URL.
  6. 6Optionally attach a small persistent volume at /usr/app/data for any local attachments (or, better, configure object storage for attachments).

Step 4: Configure attachment storage

By default NocoDB stores uploaded attachments on local disk — which is ephemeral. For production, configure an S3-compatible object storage backend in NocoDB's settings (or via env) so attachments survive redeploys. This is the most common production gotcha.

Step 5: First-run setup

Visit your domain and:

  1. 1Create the super-admin account (the first signup becomes admin).
  2. 2Create a base — you can start fresh or connect to an existing database as an "external data source" and NocoDB will generate a UI over your existing tables.
  3. 3Invite team members with roles (owner/creator/editor/viewer).

The "connect existing database" feature is NocoDB's superpower: point it at a production read-replica and you get an instant admin UI over real data.

Step 6: Lock it down

  • Disable open signup once your team is invited, so randoms can't create accounts.
  • Use a strong, stable NC_AUTH_JWT_SECRET.
  • Restrict access with platform firewall rules if it's internal-only.
  • Keep the image updated for security fixes.

NocoDB vs. Airtable, briefly

Airtable is polished and zero-ops, with a mature automation/extension ecosystem — it's genuinely excellent for non-technical teams. NocoDB's wins are data ownership (your own SQL database), no per-row/per-seat ceilings, and the ability to layer a UI over existing databases. The tradeoff is you operate it, and the automation ecosystem is younger.

Operating tips

  • Back up the PostgreSQL — it holds all your bases. Scheduled backups cover this.
  • Use object storage for attachments, not container disk.
  • Pin image versions and test upgrades; major versions can include migrations.
  • Monitor connections — many concurrent users plus webhooks can use up connections; size your DB tier accordingly.

References

  • [NocoDB documentation](https://docs.nocodb.com/)
  • [NocoDB environment variables](https://docs.nocodb.com/getting-started/self-hosted/environment-variables/)
  • [NocoDB Docker image](https://hub.docker.com/r/nocodb/nocodb)
  • [NocoDB self-hosting guide](https://docs.nocodb.com/getting-started/self-hosted/installation/)

---

NocoDB shines when backed by a real, durable database — and that's exactly what PandaStack's managed PostgreSQL provides, with scheduled backups and an injected connection string. Spin up a self-owned Airtable alternative on the free tier at [dashboard.pandastack.io](https://dashboard.pandastack.io).

Ready to deploy?

Start free on PandaStack.

Start free on PandaStack

More in Tutorial

Browse all Tutorial articles →

See also