NocoDB self-hosted na VPS
NocoDB transforma qualquer banco PostgreSQL, MySQL ou SQLite em uma interface de planilha colaborativa — como Airtable, mas open-source e rodando nos seus próprios dados. Self-hosteado na VPS, você tem controle total sem limites de linhas ou colaboradores e conecta direto ao banco de dados da sua aplicação.
Instalar NocoDB com Docker Compose
Stack completa com NocoDB e PostgreSQL:
yaml
# docker-compose.yml
services:
nocodb:
image: nocodb/nocodb:latest
restart: always
ports:
- "127.0.0.1:8080:8080"
environment:
NC_DB: "pg://postgres:5432?u=nocodb&p=${POSTGRES_PASSWORD}&d=nocodb"
NC_PUBLIC_URL: "https://nocodb.seudominio.com.br"
NC_AUTH_JWT_SECRET: "jwt-secret-aleatorio-aqui"
NC_DISABLE_TELE: "true" # desabilitar telemetria
# NC_SMTP_HOST: smtp.gmail.com # configurar email (opcional)
# NC_SMTP_PORT: 465
volumes:
- nocodb_data:/usr/app/data
depends_on:
- postgres
postgres:
image: postgres:16-alpine
restart: always
environment:
POSTGRES_DB: nocodb
POSTGRES_USER: nocodb
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
nocodb_data:
postgres_data:Dica
NC_DISABLE_TELE: true desabilita o envio de dados de telemetria para os servidores do NocoDB. Recomendado para uso em produção com dados sensíveis.
Conectar ao PostgreSQL existente da aplicação
O NocoDB pode se conectar diretamente ao banco da sua aplicação para visualizar e editar os dados:
bash
# Na interface do NocoDB (após instalação):
# 1. Acessar https://nocodb.seudominio.com.br
# 2. Criar conta de admin
# 3. New Project → Connect to External DB
# Configurações para conectar ao banco da aplicação:
# Host: IP_DA_VPS ou host do container postgres
# Port: 5432
# Database: minha_app_db
# Username: nocodb_readonly (usuário somente leitura — mais seguro)
# Password: senha
# Criar usuário somente leitura no PostgreSQL para o NocoDB:
sudo -u postgres psql
CREATE ROLE nocodb_readonly WITH LOGIN PASSWORD 'senha_readonly';
GRANT CONNECT ON DATABASE minha_app_db TO nocodb_readonly;
GRANT USAGE ON SCHEMA public TO nocodb_readonly;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO nocodb_readonly;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO nocodb_readonly;
\q
# Para acesso read-write (com mais cuidado):
# GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO nocodb_rw;Configurar Nginx e SSL
Proxy reverso com SSL para o NocoDB:
nginx
# /etc/nginx/conf.d/nocodb.conf
server {
listen 80;
server_name nocodb.seudominio.com.br;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name nocodb.seudominio.com.br;
ssl_certificate /etc/letsencrypt/live/nocodb.seudominio.com.br/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/nocodb.seudominio.com.br/privkey.pem;
# Restringir acesso (apenas IPs da empresa)
allow 177.10.0.1;
deny all;
client_max_body_size 100M;
location / {
proxy_pass http://127.0.0.1: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-Proto $scheme;
}
}Casos de uso do NocoDB
Como o NocoDB resolve problemas reais de negócio:
bash
# Casos de uso comuns:
# 1. CRM simples sobre PostgreSQL existente
# - Tabela clientes como planilha colaborativa
# - Filtros, ordenação, visualização kanban
# - Sem código, sem migração de dados
# 2. Dashboard interno de dados
# - Visualizar pedidos, usuários, métricas
# - Filtros rápidos sem SQL
# - Compartilhar views somente leitura com stakeholders
# 3. Admin panel para dados de produção
# - Editar registros diretamente na UI
# - Sem precisar de ferramenta como Retool ou Metabase
# 4. Automações via API REST do NocoDB
curl -X GET \
https://nocodb.seudominio.com.br/api/v1/db/data/noco/PROJECT_ID/TABLE_ID \
-H "xc-auth: JWT_TOKEN" | python3 -m json.tool
# NocoDB expõe REST API automática para cada tabela:
# GET /api/v1/db/data/noco/{project}/{table} — listar
# POST /api/v1/db/data/noco/{project}/{table} — criar
# PATCH /api/v1/db/data/noco/{project}/{table}/{id} — atualizar
# DELETE /api/v1/db/data/noco/{project}/{table}/{id} — deletarAtualizar e fazer backup
Manter o NocoDB atualizado e seguro:
bash
# Atualizar NocoDB:
cd /opt/nocodb
docker compose pull nocodb
docker compose up -d nocodb
# Backup dos dados (volume + banco):
DATE=$(date +%Y%m%d_%H%M)
BACKUP_DIR="/var/backups/nocodb"
mkdir -p "$BACKUP_DIR"
# Backup do banco PostgreSQL do NocoDB
docker compose exec -T postgres \
pg_dump -U nocodb nocodb | gzip > "$BACKUP_DIR/nocodb_db_${DATE}.sql.gz"
# Backup do volume (metadados do NocoDB)
docker run --rm \
-v nocodb_data:/data \
-v "$BACKUP_DIR":/backup \
alpine tar czf "/backup/nocodb_volume_${DATE}.tar.gz" /data
echo "Backup concluído: $BACKUP_DIR"$ runstack deploy --plan starter
Não quer configurar manualmente?
Não quer configurar manualmente? Implante o NocoDB em menos de 3 minutos com a Runstack. Infraestrutura da OPEN DATACENTER, com servidores no Brasil.