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

    $ 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.

    Perguntas frequentes