Guia passo a passo para publicar um projeto Lovable conectado ao GitHub em uma conta cPanel da ApogeuHost.
https://meusite.com.br/ ou https://app.meusite.com.br/. Não recomendamos instalar o projeto em uma subpasta, como meusite.com.br/app, pois isso pode exigir alterações adicionais no Vite, no TanStack Router, no Nitro e nos caminhos das imagens.1. Requisitos
- Conta de hospedagem ApogeuHost com suporte a Node.js.
- Projeto criado no Lovable e sincronizado com o GitHub.
- Repositório público ou privado com autenticação configurada.
- Domínio ou subdomínio apontado para a conta de hospedagem.
package.json, normalmente aparecem dependências como @tanstack/react-start, vite e nitro.2. Clonar o projeto do GitHub
- No cPanel, acesse Git Version Control.
- Clique em Criar.
- Ative a opção para clonar um repositório existente.
- Informe a URL do repositório:
https://github.com/usuario/meusite.git - No caminho do repositório, use:
repositories/meusite - Informe um nome de identificação, como Meu Site, e conclua a criação.
3. Criar a aplicação Node.js
No cPanel, acesse Setup Node.js App e clique em Criar aplicativo.
| Campo | Valor recomendado |
|---|---|
| Versão Node.js | 22.x |
| Modo da aplicação | Development |
| Raiz da aplicação | repositories/meusite |
| URL da aplicação | Selecione meusite.com.br ou o subdomínio escolhido |
| Caminho após o domínio | Deixe vazio |
| Arquivo de inicialização | app.cjs |
| Log do Passenger | /home/USUARIO/logs/meusite-passenger.log |
| Variável de ambiente | NODE_ENV=development |
Clique em Criar.
4. Ativar o ambiente virtual
Após criar a aplicação, o cPanel mostrará um comando parecido com este:
source /home/USUARIO/nodevenv/repositories/meusite/22/bin/activate && cd /home/USUARIO/repositories/meusite
- Abra o Terminal no cPanel.
- Copie e execute exatamente o comando mostrado na tela da aplicação.
- Confirme a versão do Node.js:
node -v
O resultado esperado deve começar com:
v22
5. Instalar todas as dependências
Execute:
npm install --include=dev
devDependencies, como @lovable.dev/vite-tanstack-config, vite, typescript e nitro.6. Alterar a aplicação para produção
Antes de gerar o build, volte ao Setup Node.js App e faça estas alterações:
- Modo da aplicação:
Production - Variável:
NODE_ENV=production
Clique em Salvar.
Retorne ao Terminal, ative novamente o ambiente virtual e confirme:
echo $NODE_ENV
O resultado deve ser:
production
NODE_ENV=development. Isso pode provocar o erro jsxDEV is not a function durante a renderização SSR.7. Gerar o build para Node.js
Limpe builds e caches anteriores:
rm -rf .output
rm -rf node_modules/.vite
rm -rf node_modules/.nitro
Depois, gere o build:
NODE_ENV=production NITRO_PRESET=node_server npm run build
Ao final, confirme se o arquivo principal foi criado:
ls -lah .output/server/index.mjs
O caminho esperado é:
.output/server/index.mjs
8. Configurar o arquivo app.cjs
O cPanel pode criar automaticamente um arquivo app.cjs de teste com a mensagem It works!. Esse conteúdo deve ser substituído completamente.
No Gerenciador de Arquivos, abra:
/home/USUARIO/repositories/meusite/app.cjs
Apague todo o conteúdo e deixe somente:
import("./.output/server/index.mjs").catch((error) => {
console.error("Falha ao iniciar a aplicação:", error);
process.exit(1);
});
http.createServer() ou server.listen().Volte ao Setup Node.js App, confira se o arquivo inicial está como app.cjs e clique em Reiniciar.
Agora acesse:
https://meusite.com.br/
9. Corrigir imagens internas do Lovable
Algumas imagens podem continuar apontando para a infraestrutura interna do Lovable. Esses caminhos geralmente começam com:
/__l5e/assets-v1/
Exemplo:
<img src="/__l5e/assets-v1/UUID/logo.webp" alt="Logo">
Essas imagens não são copiadas automaticamente para a hospedagem externa.
Localizar as imagens
grep -RIn "/__l5e/assets-v1/" src public --exclude-dir=node_modules
Salvar as imagens localmente
Crie a pasta:
public/images
Baixe as imagens utilizadas pelo projeto e coloque-as nessa pasta.
Depois, substitua:
/__l5e/assets-v1/UUID/logo.webp
por:
/images/logo.webp
Gerar o build novamente
rm -rf .output
rm -rf node_modules/.vite
rm -rf node_modules/.nitro
NODE_ENV=production NITRO_PRESET=node_server npm run build
Depois, reinicie a aplicação no Setup Node.js App.
10. Como atualizar o site
Sempre que o projeto for alterado no Lovable e sincronizado com o GitHub:
- No cPanel, acesse Git Version Control.
- Clique em Pull or Deploy e clique em Update from Remote.
- Abra o Terminal e ative o ambiente virtual:
source /home/USUARIO/nodevenv/repositories/meusite/22/bin/activate && cd /home/USUARIO/repositories/meusite - Atualize as dependências:
npm install --include=dev - Limpe o build anterior:
rm -rf .output rm -rf node_modules/.vite rm -rf node_modules/.nitro - Gere o novo build:
NODE_ENV=production NITRO_PRESET=node_server npm run build - Volte ao Setup Node.js App e clique em Reiniciar.
11. Solução de problemas
Erro: Cannot find package '@lovable.dev/vite-tanstack-config'
Execute:
npm install --include=dev
Erro: jsxDEV is not a function
O build foi gerado em modo de desenvolvimento. Confirme:
echo $NODE_ENV
Deve retornar production. Depois refaça o build:
rm -rf .output
rm -rf node_modules/.vite
rm -rf node_modules/.nitro
NODE_ENV=production NITRO_PRESET=node_server npm run build
Erro 500 Internal Server Error
- Confirme se
.output/server/index.mjsexiste. - Confirme se o arquivo inicial está definido como
app.cjs. - Confirme se o conteúdo do
app.cjsestá correto. - Reinicie a aplicação.
- Consulte o log do Passenger:
tail -n 100 /home/USUARIO/logs/meusite-passenger.log
As imagens não aparecem
Procure referências internas do Lovable:
grep -RIn "/__l5e/assets-v1/" src public --exclude-dir=node_modules
Migre os arquivos para public/images, altere os caminhos e gere o build novamente.
O site abre em uma subpasta, mas o layout ou as rotas quebram
Este tutorial considera a aplicação instalada na raiz de um domínio ou subdomínio. Instalações em subpastas podem exigir alterações no Vite, TanStack Router, Nitro, imagens e links internos.
12. Resumo dos principais comandos
Ativar o ambiente
source /home/USUARIO/nodevenv/repositories/meusite/22/bin/activate && cd /home/USUARIO/repositories/meusite
Instalar dependências
npm install --include=dev
Limpar build e cache
rm -rf .output
rm -rf node_modules/.vite
rm -rf node_modules/.nitro
Gerar build de produção
NODE_ENV=production NITRO_PRESET=node_server npm run build
Verificar o arquivo gerado
ls -lah .output/server/index.mjs