lumahost.json

Você não precisa dele na maioria dos projetos. Crie o arquivo só quando a detecção automática errar ou quando quiser fixar uma configuração.

Onde fica

Na raiz do projeto, ao lado do package.json (ou do requirements.txt). Todos os campos são opcionais, e o que você não escrever é detectado.

{
  "tipo": "web",
  "porta": 3000,
  "build": "npm run build",
  "start": "npm start",
  "ramMb": 512,
  "buildPack": "nixpacks"
}

Campos

CampoValoresO que faz
tipoweb, worker ou staticweb tem endereço público. worker é bot, agente ou fila, sem porta. static serve arquivos prontos.
portanúmeroPorta em que o seu app escuta. Só vale para web. Veja Variáveis e a porta.
buildtextoComando de build, por exemplo npm run build.
starttextoComando que inicia o app, por exemplo npm start.
ramMbnúmeroRAM do app em MB. Mínimo 256. Sai do pool do seu plano.
buildPacknixpacks, dockerfile ou staticComo construir. Sem este campo, a detecção é automática.

Quando usar Dockerfile

Se existe um Dockerfile na raiz, usamos ele. Para forçar o build automático mesmo assim, escreva "buildPack": "nixpacks". O Dockerfile precisa escutar na porta informada. Docker Compose não é suportado.

Mudou a RAM ou a porta? A mudança vale no próximo deploy ou reinício.