NestJS
Guia prático para hospedar aplicações NestJS na Discloud.
🧭 Introdução
Este guia passo a passo mostra como preparar, configurar e fazer o deploy de uma aplicação NestJS na Discloud.
O processo envolve compilar seu código TypeScript para a pasta dist e executar o JavaScript compilado na porta 8080. Aplicações NestJS são simples de fazer deploy porque o framework gerencia rotas, injeção de dependências e organização de módulos automaticamente.
📋 Requisitos
Plano Platinum ou superior é necessário para hospedar websites ou APIs.
Um subdomínio deve ser criado antes do deploy.
Porta 8080 é obrigatória – As aplicações devem escutar nesta porta.
🧱 Pré-requisitos locais
Antes de continuar, você vai precisar:
Node.js instalado na sua máquina.
Um projeto NestJS criado (ex.:
nest new meu-app).Uma conta na Discloud com subdomínio configurado.
Opcionalmente: Git, VSCode e/ou CLI da Discloud para facilitar o fluxo.
Se ainda não tiver familiaridade com o ambiente, confira:
NodeJS🧹 Preparando os arquivos do projeto
Antes de compactar seu projeto em .zip, crie um arquivo .discloudignore na raiz do projeto para excluir arquivos e pastas desnecessárias do upload:
node_modules/
dist/
.env
.env.local
.git
.vscode/
package-lock.json🔧 Configuração TypeScript – tsconfig.build.json
tsconfig.build.jsonGaranta que seu tsconfig.build.json (ou tsconfig.json) esteja configurado para compilar para a pasta dist. Aqui está uma configuração típica:
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "./dist",
"rootDir": "./src",
"composite": false,
"incremental": false
},
"exclude": ["node_modules", "dist"]
}É importante que compilerOptions.outDir esteja definido como "dist", pois a Discloud procurará pela sua aplicação compilada lá.
🚀 Ponto de entrada principal – src/main.ts
src/main.tsGaranta que seu src/main.ts escute na porta 8080 e aceite a porta de variáveis de ambiente. Aqui está uma configuração típica:
import { NestFactory } from "@nestjs/core";
import { AppModule } from "./app.module";
async function bootstrap() {
const app = await NestFactory.create(AppModule);
const port = process.env.PORT ? Number(process.env.PORT) : 8080;
await app.listen(port, "0.0.0.0");
console.log(`Servidor rodando em http://0.0.0.0:${port}`);
}
bootstrap();Importante
Porta 8080 é obrigatória. Mesmo que você defina
PORTno seu arquivo.env, ele deve ser8080.Vincule a
0.0.0.0(nãolocalhost) para que o tráfego externo possa chegar ao seu app.
📦 package.json – scripts recomendados
package.json – scripts recomendadosDentro do seu package.json, garanta que os scripts de build e start estejam corretamente definidos:
{
"scripts": {
"start": "node dist/main",
"start:dev": "nest start --watch",
"build": "nest build"
}
}⚙️ discloud.config – exemplo
discloud.config – exemploAqui está uma configuração típica para uma aplicação NestJS:
TYPE=site
BUILD=npm run build
START=npm run start
RAM=512
VERSION=latest
ID=meu-nestjs-appPara informações detalhadas sobre cada parâmetro de configuração e todas as opções disponíveis, consulte o guia completo:
discloud.configCertifique-se de ajustar o campo ID para corresponder ao seu subdomínio registrado no painel da Discloud.
🧪 Testando localmente (build para produção)
Antes de enviar para a Discloud, verifique se seu app compila e executa corretamente:
Compile o projeto localmente:
npm run buildIsto gera a pasta dist com o JavaScript compilado.
Teste o build para produção:
npm run startVerifique se o servidor inicia e responde às requisições (ex.: via curl http://localhost:8080).
Pare o servidor e proceda com o deploy.
🔐 Variáveis de ambiente
No NestJS, variáveis de ambiente são tipicamente acessadas via process.env:
Padrões comuns incluem
DATABASE_URL,API_KEY,REDIS_URL, etc.
Exemplo em um serviço:
import { Injectable } from "@nestjs/common";
@Injectable()
export class ConfigService {
getDatabaseUrl() {
return process.env.DATABASE_URL || "sqlite:memory";
}
}🗂️ Estrutura final recomendada do projeto
Uma estrutura típica de projeto NestJS para a Discloud pode ser:
meu-nest-app/
├─ discloud.config
├─ .discloudignore
├─ package.json
├─ tsconfig.json
├─ tsconfig.build.json
├─ src/
│ ├─ main.ts
│ ├─ app.module.ts
│ ├─ app.controller.ts
│ └─ app.service.ts
└─ dist/ (gerado após o build)🚀 Fazendo o deploy na Discloud
Você pode fazer deploy do seu app NestJS usando qualquer um dos métodos suportados.
Painel de ControleBot do DiscordVisual Studio CodeCLI🛠️ Troubleshooting (erros comuns)
Aplicação não abre / porta errada
Verifique se o NestJS está escutando na porta 8080 (process.env.PORT || 8080 em main.ts).
Pasta dist não encontrada
Verifique se tsconfig.build.json possui "outDir": "./dist" e execute npm run build localmente para confirmar.
Erro de plano / permissão
Confirme se sua conta possui o plano correto para websites/APIs.
Subdomínio não configurado
Certifique-se de ter seguido o guia de subdomínio antes do deploy.
Erros de build
Execute localmente:
npm run builde corrija qualquer erro antes de enviar.Confira se todas as dependências estão listadas no
package.json.
Erros ao iniciar (START)
Verifique se o script
startestá correto.Acompanhe os logs da Discloud para ver a mensagem de erro exata.
Last updated