Instalação via Docker

Pré-requisitos
  • Docker e Docker Compose instalados
  • Certifique-se de que o serviço Docker esteja em execução

1. Criar o docker-compose.yml

# Crie uma pasta chamada my-project (pode ser outro nome) para armazenar os arquivos de sistema gerados pelo NocoBase
mkdir my-project && cd my-project

# Crie um arquivo docker-compose.yml vazio
vi docker-compose.yml

2. Configurar o docker-compose.yml

Escolha a versão do NocoBase (Comparação de Versões) e o tipo de banco de dados, então copie a configuração correspondente para o docker-compose.yml.

Notas de Configuração
  • Escolha uma imagem: latest latest-full beta beta-full alpha alpha-full 1.7.14 1.7.14-full
    • Para ambientes de produção, recomenda-se fixar uma versão numérica específica para evitar atualizações automáticas indesejadas. Ver todas as versões
    • Imagem do Alibaba Cloud: registry.cn-shanghai.aliyuncs.com/nocobase/nocobase:latest-full
    • Imagem do Docker Hub: nocobase/nocobase:latest-full
    • A imagem full contém os clientes PostgreSQL 16/17, MySQL 8.0 e Oracle 19.25 necessários para os plugins de gerenciamento de backup e migração, bem como o LibreOffice necessário para a impressão de modelos (PDF)
    • Se você precisar criar sua própria imagem, pode consultar o Dockerfile (versão slim) e o Dockerfile-full (versão completa) oficiais
  • Modificar APP_KEY: Substitua your-secret-key por uma string aleatória, usada para criptografar informações sensíveis, como tokens de usuário
  • Usar um banco de dados existente: Se você já tiver um serviço de banco de dados, altere o DB_HOST para o endereço do servidor de banco de dados e exclua ou comente a configuração do serviço de banco de dados (como os serviços postgres, mysql, mariadb)
  • Mapeamento de portas: Por padrão, a porta 80 do contêiner é mapeada para a porta 13000 do host, podendo ser modificada conforme necessário
Versão Latest
Versão Beta
Versão Alpha
PostgreSQL
MySQL
MariaDB
networks:
  nocobase:
    driver: bridge

services:
  app:
    image: registry.cn-shanghai.aliyuncs.com/nocobase/nocobase:latest-full
    restart: always
    networks:
      - nocobase
    depends_on:
      - postgres
    environment:
      # Chave da aplicação, usada para gerar tokens de usuário, etc.
      # Se a APP_KEY for alterada, os tokens antigos também se tornarão inválidos
      # Pode ser qualquer string aleatória, certifique-se de não vazá-la
      - APP_KEY=your-secret-key
      # Tipo de banco de dados, suporta postgres, mysql, mariadb
      - DB_DIALECT=postgres
      # Host do banco de dados, pode ser substituído pelo IP de um servidor de banco de dados existente
      - DB_HOST=postgres
      # Porta do banco de dados
      - DB_PORT=5432
      # Nome do banco de dados
      - DB_DATABASE=nocobase
      # Usuário do banco de dados
      - DB_USER=nocobase
      # Senha do banco de dados
      - DB_PASSWORD=nocobase
      # Fuso horário
      - TZ=America/Sao_Paulo

    volumes:
      - ./storage:/app/nocobase/storage
    ports:
      - '13000:80'
    # init: true

  # Se você usar um serviço de banco de dados existente, não é necessário iniciar o postgres
  postgres:
    image: registry.cn-shanghai.aliyuncs.com/nocobase/postgres:16
    restart: always
    command: postgres -c wal_level=logical
    environment:
      POSTGRES_USER: nocobase
      POSTGRES_DB: nocobase
      POSTGRES_PASSWORD: nocobase
    volumes:
      - ./storage/db/postgres:/var/lib/postgresql/data
    networks:
      - nocobase

3. Instalar e iniciar o NocoBase

# Baixar as imagens mais recentes
docker compose pull

# Executar em segundo plano (a instalação será executada automaticamente na primeira execução)
docker compose up -d

# Ver os logs de instalação e execução
docker compose logs -f app

app-postgres-app-1  | nginx started
app-postgres-app-1  | yarn run v1.22.15
app-postgres-app-1  | $ cross-env DOTENV_CONFIG_PATH=.env node -r dotenv/config packages/app/server/lib/index.js install -s
app-postgres-app-1  | Done in 2.72s.
app-postgres-app-1  | yarn run v1.22.15
app-postgres-app-1  | $ pm2-runtime start --node-args="-r dotenv/config" packages/app/server/lib/index.js -- start
app-postgres-app-1  | 2022-04-28T15:45:38: PM2 log: Launching in no daemon mode
app-postgres-app-1  | 2022-04-28T15:45:38: PM2 log: App [index:0] starting in -fork mode-
app-postgres-app-1  | 2022-04-28T15:45:38: PM2 log: App [index:0] online
app-postgres-app-1  | 🚀 NocoBase server running at: http://localhost:13000/

4. Fazer login no NocoBase

Use o navegador para abrir http://localhost:13000. A conta e a senha iniciais são admin@nocobase.com e admin123.

Aviso de Segurança da Conta

Após o primeiro login, altere a senha padrão imediatamente para garantir a segurança do sistema.

5. Implantação em produção

Se você usa a imagem com Nginx embutido, normalmente é melhor não expor 13000 diretamente à internet pública. O mais comum é manter a porta do contêiner disponível apenas no host e deixar o Nginx do host cuidar do domínio, HTTPS e proxy reverso.

Fazer proxy da raiz com Nginx

A configuração abaixo faz proxy das requisições do domínio para http://127.0.0.1:13000/:

server {
    listen 80;
    server_name your_domain.com;  # Substitua your_domain.com pelo seu domínio

    location / {
        proxy_pass http://127.0.0.1:13000/;
        proxy_http_version 1.1;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $upstream_x_forwarded_proto;
        proxy_set_header Host $final_host;
        proxy_set_header Referer $http_referer;
        proxy_set_header User-Agent $http_user_agent;

        add_header Cache-Control "no-cache, no-store" always;
        proxy_cache_bypass $http_upgrade;

        proxy_connect_timeout 600;
        proxy_send_timeout 600;
        proxy_read_timeout 600;
        send_timeout 600;
        proxy_buffering off;
    }
}

Se você também quiser habilitar HTTPS, configure 443 e o certificado no Nginx do host. O contêiner do NocoBase não precisa lidar com certificados separadamente.

O bloco location / desta configuração na raiz também encaminha /api/, /ws e /files/. Se você separar os recursos estáticos das rotas da aplicação, garanta que /files/ continue sendo encaminhado ao NocoBase e não seja tratado como um diretório estático.

Implantação em subcaminho

Se você quiser implantar a aplicação em um subcaminho, por exemplo https://your_domain.com/nocobase/, configure primeiro a variável de ambiente APP_PUBLIC_PATH:

services:
  app:
    image: nocobase/nocobase:latest
    environment:
+     - APP_PUBLIC_PATH=/nocobase/

Mantenha o / no início e no fim do caminho. Depois da configuração, a URL da aplicação passa a ser http://127.0.0.1:13000/nocobase/.

Em seguida, configure o Nginx do host com o mesmo proxy de subcaminho:

server {
    listen 80;
    server_name your_domain.com;  # Substitua your_domain.com pelo seu domínio

    location /nocobase/ {
        proxy_pass http://127.0.0.1:13000/nocobase/;
        proxy_http_version 1.1;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $upstream_x_forwarded_proto;
        proxy_set_header Host $final_host;
        proxy_set_header Referer $http_referer;
        proxy_set_header User-Agent $http_user_agent;

        add_header Cache-Control "no-cache, no-store" always;
        proxy_cache_bypass $http_upgrade;

        proxy_connect_timeout 600;
        proxy_send_timeout 600;
        proxy_read_timeout 600;
        send_timeout 600;
        proxy_buffering off;
    }

    # Mantenha a compatibilidade com URLs de acesso a arquivos na raiz.
    location ^~ /files/ {
        proxy_pass http://127.0.0.1:13000;
        proxy_http_version 1.1;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $upstream_x_forwarded_proto;
        proxy_set_header Host $final_host;
        proxy_set_header Referer $http_referer;
        proxy_set_header User-Agent $http_user_agent;

        add_header Cache-Control "no-cache, no-store" always;

        proxy_connect_timeout 600;
        proxy_send_timeout 600;
        proxy_read_timeout 600;
        send_timeout 600;
    }
}

Observe estes pontos:

  • APP_PUBLIC_PATH e o caminho em proxy_pass precisam permanecer iguais. Se /nocobase/ faltar em um dos lados, os arquivos estáticos e o roteamento geralmente não funcionarão corretamente
  • /nocobase/files/ é encaminhado por location /nocobase/; a rota compatível /files/ na raiz precisa ser encaminhada separadamente ao NocoBase

Outras opções

Se você não quiser usar o Nginx embutido, também pode consultar estas duas configurações com proxy separado: