Database UI
NocoDB
A spreadsheet-like no-code interface on top of databases, often used as an Airtable alternative.
Review notes
Good for lightweight operational data. Prefer PostgreSQL over SQLite in production.
Deployment guide
Use Docker Compose with a dedicated PostgreSQL database for small production deployments.
- Create a PostgreSQL database for NocoDB or use managed Postgres.
- Configure `NC_DB` with the database connection string.
- Run the NocoDB container behind HTTPS.
- Create the first workspace and connect source databases if needed.
- Set user permissions before inviting the team.
Backup:Back up the NocoDB database and any source databases connected to it.
Copy and run on your server
Use each block separately: save the compose file, or copy the bash script to create it and start the container.
docker-compose.ymlyaml
services:
nocodb:
image: nocodb/nocodb:latest
container_name: nocodb
environment:
NC_DB: "pg://postgres:5432?u=nocodb&p=nocodb_password&d=nocodb"
volumes:
- ./data:/usr/app/data
ports:
- "8080:8080"
depends_on:
- postgres
restart: unless-stopped
postgres:
image: postgres:16-alpine
container_name: nocodb_postgres
environment:
POSTGRES_USER: nocodb
POSTGRES_PASSWORD: nocodb_password
POSTGRES_DB: nocodb
volumes:
- ./postgres:/var/lib/postgresql/data
restart: unless-stoppedsetup.shbash
#!/usr/bin/env bash
set -euo pipefail
sudo mkdir -p /opt/nocodb
sudo chown "$USER":"$USER" /opt/nocodb
cd /opt/nocodb
cat > docker-compose.yml <<'COMPOSE'
services:
nocodb:
image: nocodb/nocodb:latest
container_name: nocodb
environment:
NC_DB: "pg://postgres:5432?u=nocodb&p=nocodb_password&d=nocodb"
volumes:
- ./data:/usr/app/data
ports:
- "8080:8080"
depends_on:
- postgres
restart: unless-stopped
postgres:
image: postgres:16-alpine
container_name: nocodb_postgres
environment:
POSTGRES_USER: nocodb
POSTGRES_PASSWORD: nocodb_password
POSTGRES_DB: nocodb
volumes:
- ./postgres:/var/lib/postgresql/data
restart: unless-stopped
COMPOSE
docker compose up -d
echo "NocoDB is running on http://SERVER_IP:8080"Stack
TypeScriptNode.jsPostgreSQLDocker