Como Implantar NestJS em Hospedagem Compartilhada da Namecheap

Implantar o NestJS em uma hospedagem compartilhada da Namecheap não é como implantar um site estático ou um app PHP. Você não pode simplesmente fazer o upload dos arquivos e esperar que funcione.

Você deve compilar TypeScript para JavaScript, instalar as dependências de produção e usar o cPanel para gerenciar o processo via Passenger.

Eu enfrentei pastas vazias, arquivos de build ausentes e conexões Redis quebradas antes de encontrar o caminho certo. Aqui está o fluxo de trabalho comprovado.

A Lógica de Configuração A requisição segue este caminho: • Navegador ou cliente de API • Domínio e HTTPS • Apache / Passenger na Namecheap • app.js (a ponte) • dist/main.js (o código compilado) • Aplicação NestJS

Requisitos Principais • Uma conta de hospedagem Namecheap com suporte a Node.js • Acesso ao cPanel e SSH/Terminal • Um projeto NestJS funcional • Credenciais de produção para seu banco de dados ou Redis

Passo 1: Prepare seu código Não use uma porta fixa (hard-coded). No seu src/main.ts, use process.env.PORT:

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(process.env.PORT || 4000);
}

Passo 2: Organize as dependências Mova os pacotes de tempo de execução (runtime), como @nestjs/common e @nestjs/core, para a seção dependencies no package.json. Se eles permanecerem em devDependencies, seu app irá falhar em produção.

Passo 3: Build e Criação da Ponte A Namecheap executa JavaScript, não TypeScript. • Execute npm run build localmente. • Verifique se dist/main.js existe. • Crie um arquivo app.js na raiz do seu projeto com esta linha: require('./dist/main');

Este app.js atua como o ponto de entrada para o Passenger.

Passo 4: Estratégia de Implantação A maneira mais segura é fazer o build localmente e fazer o upload dos artefatos: • Faça o upload do app.js • Faça o upload da pasta dist/ • Faça o upload do package.json e package-lock.json • Na Namecheap, execute: npm ci --omit=dev

Nunca faça o upload da sua pasta node_modules local. Módulos nativos compilados no seu computador não funcionarão em um servidor Linux.

Passo 5: Configure o cPanel Vá em "Setup Node.js App" no cPanel: • Selecione a versão correta do Node.js. • Defina o modo como "Production". • Defina o "Application root" para a sua pasta. • Defina o "Application startup file" para app.js.

Passo 6: Variáveis de Ambiente Adicione seus segredos (como DATABASE_URL ou chaves de API) diretamente na interface Node.js do cPanel. Você também pode usar um arquivo .env na raiz, mas certifique-se de que ele não esteja dentro da pasta dist. Reinicie o app após fazer as alterações.

Solução de Problemas Comuns • EADDRINUSE: Provavelmente você tem um processo manual em execução. Deixe o Passenger gerenciar o app. • Cannot find module: Seu build está ausente ou o caminho no app.js está incorreto. • Redis connection failed: Verifique se a Namecheap permite conexões de saída na sua porta do Redis. Você pode precisar solicitar ao suporte da Namecheap que a abra.

Fonte: https://dev.to/adesoji/how-to-deploy-and-run-a-nestjs-app-on-namecheap-shared-hosting-5c45