Guias por framework
Cada framework tem um jeito próprio de compilar, iniciar e escutar conexões. Esta seção reúne configurações de referência para os frameworks mais usados, com os valores exatos que você preenche no console da Zenifra.
Como escolher o caminho
A Zenifra publica aplicações de duas formas:
| Caminho | Quando usar | Linguagens |
|---|---|---|
| Repositório Git (GitHub ou Forgejo) | Você quer que a Zenifra instale dependências, faça a build e publique a cada mudança | Node.js, Python e Bun |
| Imagem OCI | Sua aplicação usa outra linguagem ou você já gera uma imagem Docker no CI | Qualquer linguagem que rode em container |
Regra prática
Se o projeto é Node.js, Python ou Bun, comece pelo Repositório Git: não há Dockerfile para manter. Para Go, Java, PHP, .NET, Ruby, Rust ou sites estáticos servidos por NGINX, use Imagem OCI com um dos Dockerfiles prontos do guia de Dockerfile.
Tabela de referência rápida
| Framework | Caminho | Porta sugerida | Build | Start |
|---|---|---|---|---|
| Next.js | Git · Node.js | 3000 | npm run build | npx next start -H 0.0.0.0 -p 3000 |
| Express / Fastify | Git · Node.js | 3000 | vazio ou npm run build | node index.js |
| NestJS | Git · Node.js | 3000 | npm run build | node dist/main.js |
| Vite, React, Vue, Astro estático | Git · Node.js ou OCI | 3000 / 80 | npm run build | npx serve -s dist -l tcp://0.0.0.0:3000 |
| FastAPI | Git · Python | 8000 | vazio | uvicorn main:app --host 0.0.0.0 --port 8000 |
| Flask | Git · Python | 8000 | vazio | gunicorn app:app --bind 0.0.0.0:8000 |
| Django | Git · Python | 8000 | python manage.py collectstatic --noinput | gunicorn config.wsgi --bind 0.0.0.0:8000 |
| Go | OCI | 8080 | no Dockerfile | binário da imagem |
| Spring Boot | OCI | 8080 | no Dockerfile | java -jar app.jar |
| Laravel | OCI | 8080 | no Dockerfile | servidor da imagem |
| ASP.NET Core | OCI | 8080 | no Dockerfile | dotnet App.dll |
A porta da tabela é uma sugestão. O que importa é que o campo Porta do projeto seja igual à porta em que a aplicação escuta.
As três regras que evitam a maioria dos problemas
1. Escute em 0.0.0.0
A aplicação precisa aceitar conexões de fora do container. Servidores que escutam só em localhost ou 127.0.0.1 sobem sem erro, mas nunca recebem tráfego.
2. Use a porta configurada no projeto
A Zenifra encaminha o tráfego para a porta informada no campo Porta. Se a aplicação escuta em 3000 e o projeto está configurado com 8080, a URL pública não responde. Fixar a porta no comando start deixa a configuração explícita e fácil de revisar.
3. Configure tudo por variáveis de ambiente
URLs de banco, chaves de API e segredos ficam em variáveis de ambiente, nunca no código. Em projetos Git, as variáveis do projeto também ficam disponíveis durante a instalação, o pre-build e a build.
O que acontece numa publicação Git
Instalação de dependências: npm ci (Node.js), bun install --frozen-lockfile (Bun) ou pip install -r requirements.txt (Python, quando o arquivo existe).
pre-build (opcional): preparações, como gerar clientes de ORM.
build (opcional): compilação, como npm run build ou collectstatic.
start (obrigatório): o processo que fica rodando e atende as requisições.
Detalhes de versões e comportamento de cada runtime estão em Runtimes.
Seu framework não está na lista?
- Node.js, Python ou Bun: siga o guia mais próximo. A estrutura é sempre a mesma: dependências, build opcional e um comando que escuta em
0.0.0.0na porta do projeto. - Outra linguagem: escreva um Dockerfile seguindo os requisitos do guia de Dockerfile e publique como Imagem OCI.
- Aplicação pronta (n8n, Metabase, WordPress): use um Template.
Próximos passos
Última atualização em
Início rápido — Com banco de dados
Publique uma aplicação Node.js conectada a um banco PostgreSQL gerenciado, com TLS validado e variável DATABASE_URL.
Publicar Next.js na Zenifra
Publique uma aplicação Next.js por um repositório Git (GitHub ou Forgejo) com build, start, variáveis NEXT_PUBLIC, health check, banco de dados e solução dos erros mais comuns.