← All articles
A computer screen displays lines of code.

NocoDB: A Self-Hosted Airtable Alternative Built on Your Own Database

Productivity 2026-02-28 · 7 min read nocodb airtable database spreadsheet self-hosted productivity
By Selfhosted Guides Editorial TeamSelf-hosting practitioners covering open source software, home lab infrastructure, and data sovereignty.

Airtable is genuinely good software. The problem is the pricing. A team of five people doing basic database work will pay $100 a month or more once you need anything beyond the free tier's row limits. And then there is the fundamental issue every SaaS database tool shares: your data lives on someone else's server, in a format you cannot easily export in full fidelity, locked behind a subscription you cannot cancel without losing access.

Photo by Rob Wingate on Unsplash

NocoDB takes a different approach. Rather than being a database in disguise, it is a spreadsheet-style frontend that connects to an actual database you already own — PostgreSQL, MySQL, SQLite, or SQL Server. You get the familiar grid interface, form views, gallery views, and Kanban boards, but all the data stays in your database in plain tables you can query directly. No black-box proprietary format. No row limits. No per-user pricing.

NocoDB logo

NocoDB vs. the Competition

Before committing to NocoDB, it helps to see how it stacks up against the tools people typically compare it to.

Feature NocoDB Airtable Baserow Grist
Self-hostable Yes No Yes Yes
License AGPL-3.0 Proprietary MIT Apache 2.0
Connects to existing DB Yes (Postgres, MySQL, etc.) No No No
Formula engine Basic Advanced Basic Python-based
API access REST + Swagger REST REST REST + Python
Kanban view Yes Yes Yes No
Calendar view Yes Yes No No
Gallery view Yes Yes Yes No
Form view Yes Yes Yes No
Real-time collaboration Yes Yes Yes Partial
Pricing (cloud) Free tier / $15/mo $10-20/user/mo Free tier / $5/user/mo $10/user/mo

The key differentiator for NocoDB is the "connects to existing DB" row. Baserow and Grist are self-hostable, but they manage their own internal database. NocoDB is a UI layer — your PostgreSQL tables stay as PostgreSQL tables. A query you write in psql returns the same data NocoDB shows in its grid.

What NocoDB Actually Is

NocoDB is best understood as a visual database client with collaboration features bolted on top. You point it at a database, and it renders your tables as editable spreadsheet-style views. Every change you make in the NocoDB interface executes real SQL queries against your database. There is no intermediate storage layer.

This architecture has real consequences:

The downside of this approach is that NocoDB cannot do everything Airtable can. Its formula engine is limited, linked record relations are less fluid, and some features that Airtable makes trivial (complex rollups, automation) require workarounds.

Installing NocoDB with Docker Compose

NocoDB is straightforward to deploy. For production use, connect it to PostgreSQL rather than the default SQLite metadata store.

services:
  nocodb:
    image: nocodb/nocodb:latest
    container_name: nocodb
    ports:
      - "8080:8080"
    environment:
      NC_DB: "pg://nocodb-db:5432?u=nocodb&p=${NOCODB_DB_PASSWORD}&d=nocodb"
      NC_AUTH_JWT_SECRET: "${NC_JWT_SECRET}"
      NC_PUBLIC_URL: "https://nocodb.example.com"
    volumes:
      - nocodb_data:/usr/app/data
    depends_on:
      nocodb-db:
        condition: service_healthy
    restart: unless-stopped

  nocodb-db:
    image: postgres:16-alpine
    container_name: nocodb-postgres
    environment:
      POSTGRES_DB: nocodb
      POSTGRES_USER: nocodb
      POSTGRES_PASSWORD: "${NOCODB_DB_PASSWORD}"
    volumes:
      - nocodb_pg_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U nocodb"]
      interval: 10s
      timeout: 5s
      retries: 5
    restart: unless-stopped

volumes:
  nocodb_data:
  nocodb_pg_data:

Create a .env file with strong values for NOCODB_DB_PASSWORD and NC_JWT_SECRET, then:

docker compose up -d

The UI will be available at http://your-server:8080. The first user to register becomes the admin.

Like what you're reading? Subscribe to Self-Hosted Weekly — free weekly guides in your inbox.

Connecting an Existing Database

This is where NocoDB earns its place. Navigate to Team & Settings > Integrations > Add New Base and choose "Connect to existing external database." NocoDB supports:

Enter your connection credentials. NocoDB will scan the schema and present all tables as workable sheets. It does not modify the database — it reads the schema and creates its own metadata (stored in the NocoDB application database, not your target database).

A few practical notes:

Views: Five Ways to Look at the Same Data

NocoDB's view system is one of its strongest features. Any table can have multiple views, each with its own filters, field visibility settings, and sort order. Views are non-destructive — they are just saved configurations, not copies of the data.

Grid view is the default. An editable spreadsheet showing all rows and columns. You can resize columns, pin fields, hide fields, sort by any column, and filter with multi-condition logic. Feels familiar if you have used Airtable.

Gallery view renders each row as a card with a primary image field. Good for visual databases like product catalogs, portfolios, or media libraries.

Form view generates a data entry form from your table fields. Share the link with external contributors who need to submit records without seeing the full table. Useful for bug reports, intake forms, survey responses.

Calendar view requires a date field. Renders rows as calendar events across a month or week grid. Straightforward for scheduling, content calendars, and deadline tracking.

Kanban view requires a single-select field with predefined options. Each option becomes a column, and rows become draggable cards. Reasonable for basic workflow management.

API Access

Every NocoDB table gets a REST API automatically. Navigate to Toolbar > Swagger on any table to see the auto-generated API docs. You get standard CRUD endpoints:

GET    /api/v1/db/data/noco/{projectId}/{tableId}
POST   /api/v1/db/data/noco/{projectId}/{tableId}
PATCH  /api/v1/db/data/noco/{projectId}/{tableId}/{rowId}
DELETE /api/v1/db/data/noco/{projectId}/{tableId}/{rowId}

Authentication uses API tokens, which you create under user settings. This makes it practical to use NocoDB as a lightweight backend for small internal tools — you get a proper REST API without writing any server code, and the data lives in your database.

Use Cases That Work Well

Internal tools for non-technical teams. A marketing team that needs to manage a content calendar, a customer success team tracking accounts, or an ops team logging vendor contacts — these are exactly the workflows NocoDB handles well. The grid view is intuitive for anyone who has used a spreadsheet, and you avoid the expensive "build a custom CRUD app" path.

Replacing shared spreadsheets. If your team is collaborating through a Google Sheet connected to nothing, NocoDB is a substantial upgrade. Data lives in a real database with real relationships. Multiple people can edit simultaneously without stepping on each other.

Giving a UI to an existing database. If you have a PostgreSQL database that an application writes to, connecting NocoDB gives you an admin panel for free. Read through app data, make manual corrections, add records for testing — without writing a separate admin interface.

Small team databases. For teams that do not need Airtable's advanced automation or formula engine, NocoDB covers the majority of use cases without the cost.

Trade-offs to Be Honest About

NocoDB is not a drop-in Airtable replacement for every workflow.

Formula support is limited. Airtable's formula engine is powerful. NocoDB has basic formulas for computed fields, but complex rollups, lookups, and conditionals that are trivial in Airtable may require moving logic into database views or materialized columns instead.

Some features require a cloud account. NocoDB's community edition is fully functional for most use cases, but certain collaboration features and their cloud sync functionality require signing into a NocoDB cloud account. This is not a hard blocker but it is worth knowing upfront.

Relations are less polished. Airtable's linked records and lookups across tables are genuinely excellent. NocoDB's linked records work, but the UI for setting up and navigating relations is clunkier. If your primary use case is a relational database with complex cross-table references, Grist may actually handle this better.

Automation is limited. Airtable's automations (trigger on record change, send email, call webhook) are reasonably capable. NocoDB has basic automations, but anything beyond simple webhooks needs to be handled externally, such as through n8n or Zapier.

Should You Use NocoDB?

NocoDB is the right choice if you already have a PostgreSQL or MySQL database and want a collaborative UI over it without building an admin panel. It is also a strong choice for small teams that need Airtable-like functionality without the per-seat pricing, and do not need advanced formulas or automation.

If you are starting from scratch with no existing database, Baserow is worth comparing — it is also self-hostable and has a smoother onboarding experience for teams that want a blank slate rather than a database connection. If your workflow heavily depends on complex formulas and computed fields, Grist's Python-based formula engine is more capable.

But if the pitch of "a spreadsheet UI that sits on top of a real database you own" resonates with your use case, NocoDB is mature enough to depend on. The project is actively developed, the Docker deployment is reliable, and the API access opens up genuinely useful automation paths. It fills a real gap between "everyone edits a shared spreadsheet" and "we need to build a custom internal tool."

Get free weekly tips in your inbox. Subscribe to Self-Hosted Weekly