Como instalar o NocoDB em uma VPS Ubuntu

O NocoDB é uma plataforma open-source que transforma qualquer banco de dados PostgreSQL, MySQL ou SQLite em uma interface de planilha colaborativa, uma alternativa self-hosted ao Airtable. Este guia instala o NocoDB com Docker usando PostgreSQL para persistência de metadados.

cerca de 15 minjunho/2026 · Ubuntu 24.04 LTS

Antes de começar

VPS mínima
1 vCPU · 2 GB RAM · 20 GB SSD (Runstack Micro ou superior)
Sistema
Ubuntu 24.04 LTS
Também
  • Docker e Docker Compose instalados (veja /tutorial/como-instalar-docker)
  • Subdomínio DNS apontado para o IP da VPS
  • Portas 80 e 443 abertas no firewall

Instalação passo a passo

  1. 1

    Atualizar o sistema e instalar Docker

    Garanta que Docker e Docker Compose estão instalados.

    bash
    apt update && apt upgrade -y
    curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh
    docker --version && docker compose version
  2. 2

    Criar o diretório do projeto

    Crie a pasta de trabalho para o NocoDB.

    bash
    mkdir -p /opt/nocodb
    cd /opt/nocodb
  3. 3

    Gerar segredos

    Gere a chave JWT e a senha do PostgreSQL.

    bash
    # Gerar JWT secret
    openssl rand -hex 32
    
    # Gerar senha do PostgreSQL
    openssl rand -hex 24
  4. 4

    Criar o arquivo .env

    Configure as variáveis essenciais do NocoDB.

    .env
    # /opt/nocodb/.env
    NC_DB=pg://nocodb-postgres:5432?u=nocodb&p=SUA_SENHA_POSTGRES&d=nocodb
    NC_AUTH_JWT_SECRET=SEU_JWT_SECRET_AQUI
    POSTGRES_PASSWORD=SUA_SENHA_POSTGRES
  5. 5

    Criar o docker-compose.yml

    Stack com NocoDB e PostgreSQL dedicado para metadados.

    docker-compose.yml
    # /opt/nocodb/docker-compose.yml
    services:
      nocodb:
        image: nocodb/nocodb:latest
        restart: always
        ports:
          - "127.0.0.1:8080:8080"
        env_file: .env
        volumes:
          - nocodb_data:/usr/app/data
        depends_on:
          - nocodb-postgres
    
      nocodb-postgres:
        image: postgres:16
        restart: always
        environment:
          POSTGRES_USER: nocodb
          POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
          POSTGRES_DB: nocodb
        volumes:
          - postgres_data:/var/lib/postgresql/data
        healthcheck:
          test: ["CMD-SHELL", "pg_isready -U nocodb"]
          interval: 5s
          timeout: 5s
          retries: 10
    
    volumes:
      nocodb_data:
      postgres_data:
  6. 6

    Subir os containers

    Inicie o NocoDB e acompanhe a inicialização.

    bash
    cd /opt/nocodb
    docker compose up -d
    
    # Aguardar inicialização (~30s)
    docker compose ps
    docker compose logs nocodb --follow
  7. 7

    Configurar Nginx e SSL

    Configure o reverse proxy e emita o certificado SSL.

    bash
    apt install -y nginx certbot python3-certbot-nginx
    
    cat > /etc/nginx/sites-available/nocodb << 'NGINXEOF'
    server {
        listen 80;
        server_name nocodb.seudominio.com.br;
        return 301 https://$host$request_uri;
    }
    
    server {
        listen 443 ssl;
        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;
    
        client_max_body_size 50M;
    
        location / {
            proxy_pass http://127.0.0.1:8080;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }
    }
    NGINXEOF
    
    ln -s /etc/nginx/sites-available/nocodb /etc/nginx/sites-enabled/nocodb
    nginx -t
    
    certbot --nginx \
      -d nocodb.seudominio.com.br \
      --non-interactive \
      --agree-tos \
      --email seu@email.com
    
    systemctl reload nginx
  8. 8

    Configurar firewall e criar conta admin

    Libere as portas e registre a conta de administrador.

    bash
    ufw allow 22/tcp && ufw allow 80/tcp && ufw allow 443/tcp
    ufw --force enable
    
    # Testar acesso
    curl -I https://nocodb.seudominio.com.br

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.

Se der problema

Verifique a sintaxe da variável NC_DB no .env. O formato correto para PostgreSQL é `pg://host:porta?u=usuario&p=senha&d=banco`.

bash
docker compose logs nocodb --tail=50

O volume `nocodb_data` deve estar mapeado para `/usr/app/data`. Confirme no docker-compose e recrie se necessário.

bash
docker volume ls | grep nocodb

Aumente o `client_max_body_size` no Nginx.

bash
# No bloco server do Nginx, altere para:
# client_max_body_size 100M;
nginx -t && systemctl reload nginx

Verifique se o NC_AUTH_JWT_SECRET está definido. Sem ele, a autenticação falha silenciosamente.

bash
docker compose exec nocodb env | grep NC_AUTH

No painel do NocoDB, após o login, clique em "+ New Project" → "Connect External DB" e informe as credenciais do banco externo. Não é necessário alterar NC_DB para isso.

Perguntas frequentes

Sim. O NocoDB oferece visualizações de planilha, galeria, Kanban, calendário e formulários em cima de qualquer banco de dados SQL. É uma alternativa self-hosted ao Airtable e ao Notion Databases, sem limites de linhas ou custo por usuário.

Sim. No painel, crie um novo projeto com "Connect External DB" e informe as credenciais do seu PostgreSQL. O NocoDB adiciona tabelas de metadados próprias mas não modifica suas tabelas existentes.

Sim. O NocoDB tem sistema de workspaces, bases e permissões por usuário (Viewer, Editor, Commenter, Creator, Owner). Convide usuários pelo e-mail diretamente no painel.

Faça backup do volume Docker `nocodb_data` e do PostgreSQL: `docker compose exec nocodb-postgres pg_dump -U nocodb nocodb > backup.sql`.

Execute `docker compose pull && docker compose up -d` no diretório /opt/nocodb. O NocoDB aplica migrações de banco automaticamente.