Fazer deploy de um app Nest


A App Platform oferece três runtimes para aplicações Nest: Node.js, Bun e Deno. Cada runtime tem seu próprio gerenciador de pacotes, comando de build, comando de inicialização e arquivo de configuração.

Build da aplicação
Copiar link

Node.js
Copiar link

A Hostman utiliza o seguinte ambiente ao fazer o build de um app Nest:

  • Node.js: 20, 22 ou 24
  • npm
  • yarn

A aplicação é compilada na raiz do repositório ou no diretório especificado no campo Project directory path.

Se o projeto tiver package.json e usar yarn, executamos:

apt remove -y cmdtest yarn
npm install --global yarn
cd /<DIRETÓRIO> && yarn install --check-files

Nos outros casos em que o package.json estiver presente:

cd /<DIRETÓRIO> && npm install

<DIRETÓRIO> é o caminho até o diretório com o package.json.

O comando de start padrão é:

npm run start:prod

Certifique-se de que o comando start:prod está definido na seção scripts do package.json. Por exemplo:

"scripts": {
  "start:prod": "node dist/main.js"
}

Deno
Copiar link

A App Platform executa o build no diretório raiz do repositório ou no diretório que você definir no campo Caminho do diretório do projeto. As seguintes versões do Deno estão disponíveis:

  • 2.7.14
  • 2.7.10
  • 2.6.0

Aplicações Deno não precisam de um passo de build separado. A App Platform executa a aplicação diretamente em um container com Deno, portanto o comando deno compile não é utilizado em um deploy padrão.

A App Platform utiliza o seguinte comando para iniciar a aplicação:

deno run --allow-net --allow-env --allow-read --allow-sys --allow-ffi main.ts

Outra opção é definir o comando de inicialização como uma tarefa:

deno task start

Ao executar deno task start, a App Platform aciona a tarefa start definida no arquivo deno.json. Defina-a da seguinte forma:

"tasks": {
  "start": "deno run --allow-net --allow-env --allow-read --allow-sys --allow-ffi main.ts"
}

Neste exemplo, o arquivo de entrada da aplicação é main.ts. Atualize o caminho conforme a estrutura do seu projeto.

Permissões

O Deno exige que você declare explicitamente quais permissões a aplicação precisa. Inclua as flags correspondentes ao executar a aplicação:

  • --allow-net — requisições de rede
  • --allow-read — leitura do sistema de arquivos
  • --allow-write — escrita no sistema de arquivos
  • --allow-env — acesso a variáveis de ambiente
  • --allow-run — execução de subprocessos
  • --allow-ffi — carregamento de bibliotecas nativas (FFI)
  • --allow-hrtime — timers de alta resolução
  • --allow-sys — leitura de informações do sistema (SO, CPU etc.)
  • --allow-all ou -A — concede todas as permissões de uma vez
  • --watch — reinicia a aplicação automaticamente ao detectar alterações nos arquivos

Por exemplo, se a aplicação realiza requisições de rede, lê variáveis de ambiente e acessa o sistema de arquivos:

deno run --allow-net --allow-env --allow-read src/index.ts

Bun
Copiar link

A App Platform executa o build no diretório raiz do repositório ou no diretório que você definir no campo Caminho do diretório do projeto. O Bun é utilizado tanto como gerenciador de pacotes quanto como runtime.

Para realizar o build, a App Platform executa:

bun build

Para iniciar a aplicação, a App Platform executa:

bun run start

Esse comando aciona o script start definido no arquivo package.json. Aponte-o para o arquivo de entrada da aplicação:

"scripts": {
  "start": "bun run src/main.ts"
}

Neste exemplo, o arquivo de entrada da aplicação é src/main.ts. Atualize o caminho conforme a estrutura do seu projeto.

Troubleshooting
Copiar link

Deploy falhou
Copiar link

Se houver problemas no deploy, primeiro confira o log de deploy. Ele ajuda a identificar em qual etapa ocorreu o erro.

Na maioria dos casos, os problemas estão relacionados ao comando de start. Certifique-se de que todos os módulos necessários estão listados no package.json.

Please add build instructions to your script section in package.json
Copiar link

O problema é que o comando npm run build acessa o arquivo package.json, e se o valor da diretiva build não estiver especificado, ocorre um erro.

Para corrigir isso, adicione as diretivas necessárias na seção scripts do package.json. Leia mais sobre o uso de scripts aqui.