Variáveis de ambiente e a porta
Duas coisas que quebram mais deploy do que qualquer outra: uma variável faltando e a porta errada.
Definindo variáveis
No painel, abra o app e vá em Variáveis. Também dá para definir pelo MCP. As chaves usam letras maiúsculas, números e underline, e não podem começar com número (DATABASE_URL, API_KEY).
Marque a opção de reiniciar ao salvar, ou reinicie depois. O app só enxerga a variável nova depois de reiniciar.
VITE_* e NEXT_PUBLIC_*) precisam existir antes do deploy. Se você mudar uma delas, faça um novo deploy, e não só um reinício.A porta
Em apps web, a plataforma entrega a porta na variável PORT. O seu app precisa escutar nela, em 0.0.0.0.
// Node
app.listen(process.env.PORT || 3000, '0.0.0.0')
# Python
uvicorn main:app --host 0.0.0.0 --port $PORTPORT é reservada: você não pode defini-la como variável. Se o seu app fixa uma porta própria, informe-a em porta no lumahost.json.
Workers não têm porta
Bots, agentes e filas rodam como worker. Eles não recebem tráfego, então não escutam em porta nenhuma e não ganham endereço público.