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:

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} — deletar

Atualizar 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"

Não quer configurar manualmente?

Implante o NocoDB em menos de 5 minutos com a Runstack. Infraestrutura da OPEN Datacenter, com servidores em São Paulo.

Perguntas frequentes

Airtable/Notion: produtos SaaS completos, fáceis de usar, mas dados ficam nos servidores deles e há limites de linhas/colaboradores nos planos gratuitos. NocoDB self-hosted: dados ficam no seu PostgreSQL, sem limites, open-source, mas você gerencia a infraestrutura. Use NocoDB quando você já tem dados em PostgreSQL e quer uma interface colaborativa sem migrar para SaaS.

NocoDB é relativamente leve, 512 MB a 1 GB de RAM são suficientes para uso com equipes pequenas. Para tabelas muito grandes (milhões de linhas) ou muitos usuários simultâneos: 2-4 GB. O banco PostgreSQL é o componente que mais consome recursos conforme os dados crescem.

Sim. NocoDB tem suporte a forms públicos, você cria um formulário a partir de uma tabela e compartilha o link público. Os dados enviados pelo formulário vão diretamente para o PostgreSQL. Útil para coleta de dados sem precisar de ferramentas externas como Typeform ou Google Forms.

Quando conectado a um banco externo (External DB): NocoDB apenas lê o schema existente, não altera tabelas ou cria colunas sem sua autorização. Você pode criar novas tabelas e colunas pelo NocoDB, mas as tabelas existentes são preservadas. Use um usuário somente leitura para garantir que o NocoDB não pode alterar nada.

NocoDB tem sistema de permissões por projeto e por tabela: Owner, Creator, Editor, Commenter, Viewer. Você pode convidar membros por email e definir o nível de acesso. Views compartilháveis permitem expor apenas uma view filtrada de uma tabela, sem acesso ao projeto completo.