Seu projeto do Lovable no ar, com domínio e banco.
O caminho
Do zip exportado ao link público, em cinco passos.
01
Exporte o projeto
No Lovable, conecte o GitHub ou baixe o código. No Bolt, use o download do projeto. No v0, use a opção de baixar ou enviar para um repositório. Apague node_modules e .git se for mandar o zip.02
Crie o app e envie
No painel, Novo app e Enviar .zip (até 100 MB), ou informe owner/repo e a branch. O nome vira nome.lumahost.app. A RAM mínima é 256 MB, e um front-end estático costuma ficar nisso.03
Defina as variáveis antes do deploy
Chaves do Supabase, URL do banco e qualquer VITE_ ou NEXT_PUBLIC_. Variável de build lida depois do deploy não vale: mudou, faça um novo deploy.04
Confira a porta
Se há servidor, ele escuta em process.env.PORT e em 0.0.0.0. Front-end puro sobe como static e não tem porta para cuidar.05
Aponte o domínio
Crie um CNAME ou um registro A com o valor que o painel mostra. O certificado HTTPS sai sozinho.
Por que não basta clicar em publicar
O que o gerador não resolve por você.
Lovable, Bolt e v0 geram bem a primeira versão, e a publicação deles é prática para mostrar para alguém. O problema aparece depois: o domínio é do gerador, o banco é de um serviço que você não escolheu e, quando algo quebra, não existe um log para ler. Ter o código exportado é justamente a saída para isso.
Esses projetos costumam sair em um de dois formatos. O mais comum é um front-end Vite com React, que sobe como site estático, usa quase nenhuma RAM e conversa direto com o Supabase. O outro é um app Next.js, que precisa de um processo rodando, ouvindo na porta que a plataforma entrega. A Cloud detecta qual é qual e faz o build sozinha; se errar, um lumahost.json na raiz corrige o tipo, a porta e os comandos.
Variáveis e banco
Supabase ou Postgres: os dois funcionam.
Se o app já usa Supabase, deixe como está: coloque a URL do projeto e a chave anônima nas variáveis. Em projetos Vite, os nomes começam com VITE_, e o valor é gravado no código durante o build. Por isso a ordem importa: variáveis primeiro, deploy depois.
Se quiser o banco no mesmo lugar do app, crie um Postgres gerenciado (mínimo 512 MB de RAM) e copie a URL interna para uma variável DATABASE_URL. Ele tem backup diário com 7 dias de retenção, que você baixa e restaura pelo painel. A conexão de fora, da sua máquina, ainda não está disponível.
VITE_SUPABASE_URL=https://xxxx.supabase.co VITE_SUPABASE_ANON_KEY=eyJ... DATABASE_URL=postgres://... # URL interna do banco
Armadilha conhecida
Next.js 16 e o erro do dynamic.
Projetos novos do Next 16 vêm com Cache Components ligado. Nesse modo, a configuração dynamic deixa de ser aceita, e o build falha com Route segment config "dynamic" is not compatible. Vários códigos gerados ainda trazem essa linha por hábito.
O conserto: remova o export const dynamic, envolva a parte que lê o banco em um Suspense e chame await connection() antes da consulta. Isso diz ao Next que aquele trecho depende da requisição. A lista completa de erros está em erros comuns.
import { Suspense } from 'react'
import { connection } from 'next/server'
async function Lista() {
await connection() // depende da requisição
const itens = await db.item.findMany()
return <ul>{itens.map(i => <li key={i.id}>{i.nome}</li>)}</ul>
}
export default function Page() {
return <Suspense><Lista /></Suspense>
}Quanto custa
Quatro planos, preço fixo em reais.
Hobby
R$ 14,90/mês
1 GB de RAM, até 1 vCPU, 10 GB de disco
Dev
R$ 24,90/mês
2 GB de RAM, até 2 vCPU, 20 GB de disco
Pro
R$ 44,90/mês
4 GB de RAM, até 3 vCPU, 40 GB de disco
Studio
R$ 79,90/mês
8 GB de RAM, até 4 vCPU, 80 GB de disco
Apps ilimitados dentro da RAM do plano. Bancos gerenciados saem do mesmo pool (mínimo 512 MB cada) e têm backup diário de 7 dias, menos o Redis. No anual, dois meses saem de graça.
- HTTPS automático em nome.lumahost.app e no seu domínio
- Logs de build e de execução no painel
- Deploy também pelo MCP, direto do Claude Code ou do Cursor
- Upgrade de plano vale na hora
Dúvidas
Perguntas frequentes
Posso hospedar um projeto do Lovable sem GitHub?
Pode. Exporte o projeto, compacte a pasta e envie o .zip pelo painel (até 100 MB, sem node_modules). Se preferir, conecte o GitHub e cada push vira um deploy.
O app do Lovable usa Supabase. Preciso migrar o banco?
Não. Se o app já fala com um projeto Supabase, ele continua falando: basta colocar a URL e a chave nas variáveis de ambiente, antes do deploy. Migrar para um Postgres da Cloud só faz sentido se você quiser tudo num lugar só, e aí o trabalho é do esquema e dos dados, não da hospedagem.
Por que meu build do Next.js 16 falha com "dynamic is not compatible"?
Projetos novos do Next 16 vêm com Cache Components ligado, e aí export const dynamic = 'force-dynamic' quebra o build. Tire a linha e leia o banco dentro de um Suspense, depois de await connection(), de next/server.
O site abre em branco depois do deploy. O que é?
Quase sempre é variável VITE_ faltando no momento do build: o Vite embute o valor no código, então ele precisa existir antes do deploy. Defina e faça um novo deploy, não só um reinício.
Posso testar antes de me comprometer?
Pode. Existe garantia de 30 dias: se não for o que você esperava, devolvemos o primeiro pagamento via Pix, com as regras descritas na página da Cloud.
Continue lendo
Guias e documentação.
Outros guias
- Hospedagem Node.js, Python, Go e PHP
Build automático ou Dockerfile, com bancos gerenciados.
- Hospedar bot e agente de IA 24/7
Worker sem porta, a partir de 256 MB de RAM.
- Alternativa à Vercel, Railway e Render
Comparação honesta para quem está no Brasil.
Tire o projeto do protótipo.
Escolha um plano, suba o zip e, se não for o que esperava, devolvemos o dinheiro em até 30 dias.
30 dias de garantia, reembolso via Pix. Sem fidelidade.