NocoDB 2026: The Open-Source Airtable Alternative Turning Any Database into a Smart Spreadsheet — Complete Setup Guide

Deploy NocoDB in 5 minutes with Docker. Turn MySQL, PostgreSQL, or SQLite into a collaborative spreadsheet with auto-generated REST APIs, Kanban boards, and role-based access control.

  • ⭐ 53000
  • AGPL-3.0
  • Updated 2026-05-19

{{< resource-info >}}

Introduction: When Spreadsheets Hit the Wall #

Every engineering team has that one “master spreadsheet.” It starts innocently — a Google Sheet tracking customer onboarding, a CSV of inventory SKUs, a shared Excel file for project budgets. Then comes the chaos: someone overwrites a formula, version history becomes unreadable, and the 65,000-row limit looms like a storm cloud.

Airtable solved this for millions of teams, but at a cost. The Pro plan runs $20 per user per month. A 20-person team pays $4,800/year for what is essentially a fancy spreadsheet. Worse, your data lives on Airtable’s servers, exports are capped, and the API has rate limits that throttle real workloads.

Enter NocoDB — an open-source platform that transforms any MySQL, PostgreSQL, SQL Server, SQLite, or MariaDB database into a smart, collaborative spreadsheet interface. With 53,000+ GitHub stars, a Docker deployment that takes under 5 minutes, and zero data migration required, NocoDB gives you Airtable’s usability with the power and ownership of a real SQL database.

This guide walks you through a complete production setup: local Docker deploy, connecting an existing PostgreSQL database, configuring role-based access, generating REST APIs, and hardening for production. Every command is copy-paste ready.

What Is NocoDB? #

NocoDB is an open-source no-code database platform that adds a spreadsheet-like interface on top of existing relational databases. Unlike Airtable, which stores your data in its proprietary backend, NocoDB connects to your MySQL, PostgreSQL, SQL Server, SQLite, or MariaDB database and provides grid, Kanban, gallery, form, and calendar views without moving a single row.

Think of it as a visual admin panel that your non-technical teammates can actually use. Marketing can update campaign data. Operations can edit inventory. HR can manage candidate pipelines. All through a familiar spreadsheet UI, while the data stays in your PostgreSQL database where engineers can query it with SQL, connect it to Metabase, or replicate it to a data warehouse.

How NocoDB Works: Architecture Overview #

NocoDB follows a database-first architecture. It does not store your business data itself. Instead, it introspects your existing database schema, reads table structures, indexes, and relationships, then renders them as interactive views.

Core components:

  • NocoDB Server — Node.js backend that connects to your database via standard drivers (pg, mysql2, sqlite3)
  • Web GUI — Vue.js frontend providing the spreadsheet interface
  • Meta Database — Lightweight SQLite database (default) or dedicated PostgreSQL/MySQL instance storing project metadata, view configurations, user permissions, and webhook settings
  • REST/GraphQL API Layer — Auto-generated endpoints for every table, with Swagger documentation

When a user edits a cell in the grid view, NocoDB translates that action into a parameterized SQL UPDATE statement executed directly against your database. When they create a Kanban view, NocoDB stores the view configuration in its meta database while the underlying data never moves.

This separation is key: your data stays in your database. NocoDB is just a smart lens.

Installation & Setup: From Zero to Running in 5 Minutes #

The fastest way to get NocoDB running locally:

# Create a directory for NocoDB data
mkdir -p ~/nocodb-data && cd ~/nocodb-data

# Run NocoDB with Docker (includes SQLite meta DB)
docker run -d \
  --name nocodb \
  -p 8080:8080 \
  -v "$(pwd)/nocodb:/usr/app/data" \
  nocodb/nocodb:latest

Visit http://localhost:8080 and sign up with an admin email and password. Done.

Option 2: Docker Compose with Existing PostgreSQL #

For production, connect NocoDB to an existing PostgreSQL database:

# docker-compose.yml
version: "3.8"

services:
  nocodb:
    image: nocodb/nocodb:0.260.7
    ports:
      - "8080:8080"
    environment:
      - NC_DB="pg://host.docker.internal:5432?u=postgres&p=yourpassword&d=nocodb_meta"
      - DATABASE_URL="postgres://postgres:yourpassword@host.docker.internal:5432/myapp_production"
      - NC_AUTH_JWT_SECRET="change-this-to-a-64-char-random-string"
      - NC_PUBLIC_URL=https://nocodb.yourcompany.com
    volumes:
      - ./nocodb-data:/usr/app/data
    restart: unless-stopped

Start with:

docker-compose up -d

Option 3: Deploy on DigitalOcean (Production) #

For a production VPS deployment, spin up a $6/month Droplet on DigitalOcean and run:

# Update system
sudo apt update && sudo apt upgrade -y

# Install Docker
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
newgrp docker

# Run NocoDB with persistent storage
docker run -d \
  --name nocodb \
  -p 8080:8080 \
  -e NC_DB="pg://your-db-host:5432?u=nocodb&p=SECURE_PASS&d=nocodb_meta" \
  -e NC_AUTH_JWT_SECRET="$(openssl rand -hex 32)" \
  -v /opt/nocodb:/usr/app/data \
  --restart unless-stopped \
  nocodb/nocodb:0.260.7

Adding Your First Data Source #

After logging into the NocoDB UI:

  1. Click “Add New Base”“Connect to Data Source”
  2. Select PostgreSQL (or MySQL/SQLite)
  3. Enter connection details:
# Example connection for a PostgreSQL database
Host: db.yourcompany.com
Port: 5432
Username: app_readwrite
Password: **********
Database: production_app
SSL: Require

NocoDB introspects the schema in ~10 seconds and presents all tables as interactive spreadsheet views.

Integrations: Connect NocoDB to Your Existing Stack #

REST API Auto-Generation #

Every table automatically gets a full REST API. Click “API” on any table to see the Swagger docs:

# List all records in the "customers" table
curl -X GET "https://nocodb.yourcompany.com/api/v2/tables/customers/records" \
  -H "xc-token: YOUR_API_TOKEN" \
  -H "Content-Type: application/json"

# Create a new record
curl -X POST "https://nocodb.yourcompany.com/api/v2/tables/customers/records" \
  -H "xc-token: YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "Email": "alice@example.com",
    "Status": "Active",
    "Plan": "Enterprise"
  }'

# Update with filters
curl -X PATCH "https://nocodb.yourcompany.com/api/v2/tables/customers/records" \
  -H "xc-token: YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "id": 42,
    "Status": "Churned"
  }'

Webhook Automations #

Trigger external workflows on data changes:

  1. Go to BaseAutomationWebhooks
  2. Click “Add Webhook”
  3. Configure the trigger:
{
  "title": "Notify Slack on New Order",
  "event": "after.insert",
  "table": "orders",
  "hook": {
    "method": "POST",
    "url": "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXX",
    "headers": {
      "Content-Type": "application/json"
    },
    "body": {
      "text": "New order #{{Id}} from {{CustomerEmail}} — Amount: ${{Total}}"
    }
  }
}

n8n Integration #

NocoDB works seamlessly with n8n workflow automation:

# n8n NocoDB node credentials
Host: https://nocodb.yourcompany.com
API Token: noco_xxxxxxxxxxxx
Base ID: your-base-id

Metabase / BI Integration #

Since your data stays in PostgreSQL, connect Metabase directly to the same database for analytics while NocoDB handles the operational editing layer:

# Metabase connects to the same PostgreSQL database
# NocoDB handles data entry, Metabase handles dashboards
# Both read from the same source of truth

Sync to Airtable (Migration Path) #

Moving from Airtable? Export as CSV, import into NocoDB:

  1. AirtableDownload CSV for each table
  2. NocoDBAdd New TableImport CSV
  3. Re-create linked record fields as Links in NocoDB
  4. Re-create views (Grid, Kanban, Gallery) with NocoDB’s view builder

Benchmarks & Real-World Use Cases #

Performance: NocoDB vs. Airtable #

MetricNocoDB (Self-Hosted)Airtable Pro
Records per baseUnlimited50,000
File attachmentsLimited by disk20 GB
API rate limitNone (your server)10 req/sec
Concurrent usersTested: 200+50 (Pro plan)
Row update latency~15ms (local PG)~200-500ms
Cost for 20 users$6/mo (VPS)$400/mo

Real-World Deployment Numbers #

Based on community reports and load testing:

  • Startup CRM: 150,000 customer records, 15 team members, 3 views per table. PostgreSQL 14 on a 4-vCPU VPS. Average query time: 23ms.
  • Inventory Management: 50,000 SKUs across 8 warehouses. REST API consumed by 3 client applications. Zero downtime over 6 months with watchtower auto-updates.
  • HR Candidate Tracker: 12 recruiters, 8,000 candidates, Kanban view by hiring stage. Switched from Airtable saving $2,880/year.

GitHub Stats (May 2026) #

  • 53,000+ stars on GitHub
  • 1,200+ contributors
  • Latest release: v0.260.7 (April 2026)
  • Docker pulls: 5M+
  • Active Discord: 4,800+ members

Advanced Usage: Production Hardening #

1. HTTPS with Nginx Reverse Proxy #

# /etc/nginx/sites-available/nocodb
server {
    listen 443 ssl http2;
    server_name nocodb.yourcompany.com;

    ssl_certificate /etc/letsencrypt/live/yourcompany.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/yourcompany.com/privkey.pem;

    location / {
        proxy_pass http://localhost:8080;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Enable and restart:

sudo ln -s /etc/nginx/sites-available/nocodb /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl restart nginx

2. Environment Variable Security #

# Create a secrets file
sudo mkdir -p /opt/nocodb
sudo tee /opt/nocodb/.env > /dev/null << 'EOF'
NC_DB=pg://db:5432?u=nocodb&p=CHANGE_ME&d=nocodb_meta
NC_AUTH_JWT_SECRET=CHANGE_TO_64_CHAR_RANDOM_STRING
NC_REDIS_URL=redis://redis:6379
NC_SENTRY_DSN=https://xxx@sentry.io/yyy
NC_PUBLIC_URL=https://nocodb.yourcompany.com
EOF

sudo chmod 600 /opt/nocodb/.env

3. Role-Based Access Control #

Configure granular permissions per base:

  1. Project SettingsData SourcesUsers
  2. Assign roles:
    • Owner — Full control, can delete base
    • Creator — Create tables, views, automations
    • Editor — Edit records, cannot modify schema
    • Commenter — Add comments only
    • Viewer — Read-only access

Set column-level permissions to hide sensitive fields (e.g., salary, SSN) from non-HR users.

4. Database Backup Strategy #

#!/bin/bash
# /opt/backup/nocodb-backup.sh

# Backup PostgreSQL data (your actual business data)
pg_dump -h db.yourcompany.com -U postgres myapp_db > \
  /backups/postgres-$(date +%Y%m%d).sql

# Backup NocoDB meta database
docker exec nocodb-db-1 pg_dump -U nocodb nocodb_meta > \
  /backups/nocodb-meta-$(date +%Y%m%d).sql

# Sync to S3 (optional)
aws s3 sync /backups/ s3://yourcompany-backups/nocodb/

# Keep only 7 days
find /backups -name "*.sql" -mtime +7 -delete

Add to crontab:

0 2 * * * /opt/backup/nocodb-backup.sh >> /var/log/nocodb-backup.log 2>&1

5. Monitoring with Prometheus #

# docker-compose.monitoring.yml
services:
  prometheus:
    image: prom/prometheus:v2.51.0
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
    ports:
      - "9090:9090"

  grafana:
    image: grafana/grafana:10.4.0
    ports:
      - "3000:3000"
    volumes:
      - grafana-data:/var/lib/grafana

volumes:
  grafana-data:

Comparison with Alternatives #

FeatureNocoDBAirtableBaserowTeable
LicenseAGPL-3.0ProprietaryMITAGPL-3.0
Self-hostedYesNoYesYes
Connects to existing DBYes (PG, MySQL, SQLite)NoNoYes
REST APIAuto-generatedLimited rateAuto-generatedAuto-generated
Kanban viewYesYesYesYes
Form viewYesYesYesYes
File attachmentsYes20 GB (Pro)YesYes
Role-based accessYesYesYesYes
Webhook automationsYesPaid plansYesLimited
Price (20 users)$6/mo VPS$400/mo$100/mo$0 (self-host)
Record limitsUnlimited50,000 (Pro)UnlimitedUnlimited
GitHub stars53,000N/A8,20014,500

When to choose NocoDB over each:

  • vs. Airtable: You want data ownership, lower costs, no record limits, and the ability to connect to an existing database.
  • vs. Baserow: You need to connect to an existing PostgreSQL/MySQL database rather than creating a new one. Baserow has a more polished UI but forces you into its data model.
  • vs. Teable: You want broader database driver support (NocoDB supports SQL Server and MariaDB; Teable focuses on PostgreSQL). Teable has stronger AI integrations; NocoDB has deeper spreadsheet features.

Limitations: Honest Assessment #

NocoDB is not perfect. Before committing, consider these constraints:

  1. UI polish gap: Airtable’s interface is smoother. NocoDB’s grid can feel sluggish with 100,000+ rows in the browser — though the underlying database handles it fine.

  2. No native mobile app: You get a responsive web UI, but there’s no dedicated iOS/Android app like Airtable offers.

  3. Limited formula support: Formulas use SQL expressions, not Excel syntax. Non-technical users need a short learning curve.

  4. Self-hosting burden: You handle backups, updates, and security. The Cloud option exists but starts at $8/user/month, eating into the cost advantage.

  5. License considerations: NocoDB’s AGPL-3.0 license requires releasing modifications if you distribute the software. For internal company use, this is a non-issue. For SaaS products built on NocoDB, consult legal.

  6. Single Sign-On (SSO): Built-in SSO (SAML, OIDC) requires the Enterprise tier. Self-hosted users can work around this with a reverse proxy auth layer.

Frequently Asked Questions #

Does NocoDB support connecting to multiple databases simultaneously? #

Yes. A single NocoDB instance can connect to multiple data sources. You can have one base connected to PostgreSQL, another to MySQL, and a third using the built-in SQLite — all accessible from the same dashboard. Each base is independent with its own permissions and views.

How does NocoDB handle schema changes in the underlying database? #

NocoDB syncs schema changes automatically. If you add a column via ALTER TABLE in PostgreSQL, click “Sync Now” in the base settings, and the new column appears in NocoDB within seconds. Existing views are preserved; you simply add the new field to whichever views need it.

Can I use NocoDB as a backend for a customer-facing application? #

Yes, via the REST API. However, NocoDB is designed as an internal tool, not a public API server. For customer-facing apps, use NocoDB as the admin panel for your team, and build a separate API layer that validates business logic before writing to the same database.

What happens when NocoDB goes down? Is my data safe? #

Your data lives in your PostgreSQL/MySQL database, completely separate from NocoDB. If the NocoDB container stops, your data is untouched. Other applications reading the same database continue working normally. NocoDB only stores view configurations, user accounts, and webhook definitions in its meta database.

How do I migrate from Airtable to NocoDB? #

Export each Airtable table as CSV. In NocoDB, create tables and use “Import CSV” to populate them. Re-create Airtable’s “Linked Records” as NocoDB “Links” (foreign key relationships). Re-build views (Grid, Kanban, Gallery) manually. The NocoDB community has an Airtable-to-NocoDB migration script available on GitHub that handles bulk conversion.

Does NocoDB support real-time collaboration like Airtable? #

Yes, but with caveats. Multiple users can edit the same base simultaneously, and changes appear in real-time via WebSocket. However, conflict resolution is last-write-wins, not operational transforms. For most use cases (different users editing different rows), this is fine. Heavy concurrent editing of the same row can cause overwrites.

Is there a way to run NocoDB without Docker? #

Yes. NocoDB provides standalone executables for Linux, macOS, and Windows. Download the latest binary from the GitHub releases page, make it executable, and run ./nocodb. However, Docker remains the recommended deployment method for production due to easier updates and dependency management.

Conclusion: Your Data, Your Rules #

NocoDB fills a specific gap: giving non-technical teams the usability of Airtable while keeping data in databases that engineers control. The 53,000 GitHub stars, active release cycle, and growing plugin ecosystem make it a viable choice for 2026 and beyond.

If you are paying Airtable $200+/month and have a PostgreSQL or MySQL database already running, NocoDB pays for itself in the first month. The Docker setup takes 5 minutes. The migration from Airtable is a weekend project. The freedom of owning your data is permanent.

Start now: Deploy NocoDB on DigitalOcean with a $6 Droplet, or run docker run nocodb/nocodb:latest locally to explore before committing.

Join the community: NocoDB Discord | GitHub Discussions

Related tools: n8n Workflow Automation | Metabase BI Setup Guide


Before you deploy any of the tools above into production, you’ll need solid infrastructure. Two options dibi8 actually uses and recommends:

  • DigitalOcean — $200 free credit for 60 days across 14+ global regions. The default option for indie devs running open-source AI tools.
  • HTStack — Hong Kong VPS with low-latency access from mainland China. This is the same IDC that hosts dibi8.com — battle-tested in production.

Affiliate links — they don’t cost you extra and they help keep dibi8.com running.

Sources & Further Reading #


This article may contain affiliate links. If you sign up for DigitalOcean through our referral link, we receive a commission at no extra cost to you. We only recommend services we use ourselves.

💬 Discussion