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
