DEV Community

Elder Fernandes
Elder Fernandes

Posted on Originally published at selfhoststack-8z4.pages.dev

Ditching Airtable: Complete Guide to Self-Hosted No-Code Databases (NocoDB vs Baserow vs Grist)

Airtable's enterprise pricing ($20–$45/user/month) and strict 50k–100k record limits per base make scaling internal operations painfully expensive. Furthermore, storing sensitive customer lists, ERP records, and operational pipelines on proprietary SaaS clouds introduces significant data governance risks.

Open-source, self-hosted no-code databases have matured dramatically. In this guide, we evaluate and deploy the three dominant open-source alternatives to Airtable:

  1. NocoDB: Turns any existing PostgreSQL, MySQL, or SQL Server database into a smart spreadsheet UI.
  2. Baserow: Modular, API-first Airtable clone built with Django, PostgreSQL, and FastAPI.
  3. Grist: The ultimate spreadsheet-meets-relational-database hybrid with full Python formulas and granular column/row ACLs.

1. Feature Matrix & Performance Comparison

Criteria NocoDB Baserow Grist Core
Architecture Node.js / TypeScript Python (Django/FastAPI) + Nuxt Node.js + Python Sandboxing
Data Engine Connects to existing PG/MySQL Managed internal PostgreSQL SQLite engine with memory caching
Formula Engine Basic SQL & Spreadsheet math Formula builder & Rollups Full Python Standard Library
Row Scale Limit Millions (Backed by your PG index) ~100k–500k per table ~100k per document (RAM bound)
Granular Access Control Role-based (Viewer/Editor/Admin) Workspace & Role-based Cell/Row/Column-level ACLs
REST / GraphQL APIs Auto-generated REST + Swagger Auto-generated OpenAPI / REST REST API + Webhooks
n8n / Zapier Support Native n8n node + Webhooks Native n8n node + Webhooks Native webhooks + n8n node
Memory Footprint ~180 MB ~500 MB (Multi-process) ~150 MB

2. Deep Dive: Which Platform Fits Your Infrastructure?

NocoDB: The Database-First Choice

If you already have an existing PostgreSQL or MySQL database running your SaaS, CRM, or backend, NocoDB connects directly without mutating your underlying tables. It creates a metadata schema and gives non-technical teammates a clean Airtable view over production data.

Baserow: The Direct Airtable Drop-in

If you want an experience that matches Airtable’s exact UX, formula builder, gallery/kanban views, and form builder for external respondents, Baserow is the most polished clone.

Grist: The Analytical & Formula Powerhouse

If your workflows require complex Python calculations, multi-table references, automated invoice generators, and strict row-level security (e.g. Sales Rep A only sees their own leads), Grist is unmatched.


3. Production Deployment: NocoDB with PostgreSQL 16

Here is a hardened Docker Compose stack for NocoDB backed by PostgreSQL with persistent storage and automatic health checks.

version: '3.8'

services:
  nocodb_db:
    image: postgres:16-alpine
    container_name: nocodb_postgres
    restart: unless-stopped
    environment:
      POSTGRES_DB: nocodb_meta
      POSTGRES_USER: nocouser
      POSTGRES_PASSWORD: "${NOCO_DB_PASSWORD}"
    volumes:
      - ./pgdata:/var/lib/postgresql/data
    networks:
      - nocodb_net
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U nocouser -d nocodb_meta"]
      interval: 10s
      timeout: 5s
      retries: 5

  nocodb:
    image: nocodb/nocodb:latest
    container_name: nocodb_app
    restart: unless-stopped
    depends_on:
      nocodb_db:
        condition: service_healthy
    environment:
      NC_DB: "pg://nocodb_db:5432?u=nocouser&p=${NOCO_DB_PASSWORD}&d=nocodb_meta"
      NC_AUTH_JWT_SECRET: "${NC_JWT_SECRET}"
      NC_PUBLIC_URL: "https://db.example.com"
      NC_DISABLE_TELEMETRY: "true"
      NC_ATTACHMENT_DIR: "/usr/app/data/attachments"
    volumes:
      - ./nocodb_data:/usr/app/data
    ports:
      - "127.0.0.1:8080:8080"
    networks:
      - nocodb_net

networks:
  nocodb_net:
    driver: bridge
Enter fullscreen mode Exit fullscreen mode

4. Production Deployment: Baserow Multi-Service Stack

For high concurrency and team collaboration, Baserow provides an all-in-one container or split microservices:

version: '3.8'

services:
  baserow:
    image: baserow/baserow:1.28.0
    container_name: baserow_server
    restart: unless-stopped
    environment:
      BASEROW_PUBLIC_URL: "https://baserow.example.com"
      DATABASE_HOST: "baserow_db"
      DATABASE_NAME: "baserow"
      DATABASE_USER: "baserow"
      DATABASE_PASSWORD: "${BASEROW_DB_PASSWORD}"
      SECRET_KEY: "${BASEROW_SECRET_KEY}"
      DISABLE_TELEMETRY: "true"
    volumes:
      - ./baserow_data:/baserow/data
    ports:
      - "127.0.0.1:3000:80"
    networks:
      - baserow_net
    depends_on:
      - baserow_db

  baserow_db:
    image: postgres:15-alpine
    container_name: baserow_postgres
    restart: unless-stopped
    environment:
      POSTGRES_DB: baserow
      POSTGRES_USER: baserow
      POSTGRES_PASSWORD: "${BASEROW_DB_PASSWORD}"
    volumes:
      - ./db_data:/var/lib/postgresql/data
    networks:
      - baserow_net

networks:
  baserow_net:
    driver: bridge
Enter fullscreen mode Exit fullscreen mode

5. Automated Backup & Replication Strategy

No-code databases hold critical company operational data. Implement automated nightly dumps with WAL archival to S3:

#!/usr/bin/env bash
# Automated backup script: nocodb_backup.sh
set -eo pipefail

DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/backups/nocodb"
mkdir -p "$BACKUP_DIR"

# 1. Dump metadata database
docker exec -t nocodb_postgres pg_dump -U nocouser nocodb_meta | gzip > "$BACKUP_DIR/nocodb_meta_$DATE.sql.gz"

# 2. Sync to Offsite Encrypted Storage via Rclone
rclone copy "$BACKUP_DIR" s3-remote:company-db-backups/nocodb/ \
  --max-age 24h \
  --s3-upload-concurrency 4

# 3. Prune local archives older than 7 days
find "$BACKUP_DIR" -type f -name "*.sql.gz" -mtime +7 -delete

echo "[$(date)] Backup completed and verified."
Enter fullscreen mode Exit fullscreen mode

Conclusion & Architecture Recommendations

  • Connecting to existing systems: Pick NocoDB.
  • Airtable replacement for non-technical teams: Pick Baserow.
  • Advanced mathematical models & custom permissions: Pick Grist.

For more production-tested Docker Compose configurations and architecture guides, visit the SelfHostStack No-Code Database Hub.

Top comments (0)