Variáveis de ambiente
Variáveis de ambiente guardam configuração e segredos fora do código: URLs de banco, chaves de APIs externas, flags de comportamento e qualquer valor que mude entre ambientes. A aplicação lê esses valores em tempo de execução, por exemplo com process.env.DATABASE_URL no Node.js ou os.environ["DATABASE_URL"] no Python.
Onde configurar
| Canal | Como | Permissão |
|---|---|---|
| Console | Na criação do projeto (passo Variáveis de ambiente) ou em Editar projeto | project.env.update no projeto |
| CLI | zenifra project env add, update e remove na CLI da Zenifra | API key com project.env.update |
| API | GET e PATCH /project/:id/envs, descritos em Variáveis de ambiente — API | project.env.read / project.env.update |
Para apenas visualizar valores, use project.env.read. Valores podem ser sensíveis: conceda leitura somente a quem realmente precisa.
Limites
| Item | Limite |
|---|---|
| Variáveis por projeto | 50 |
| Tamanho do nome | até 120 caracteres |
| Tamanho do valor | até 32.760 caracteres |
Arquivos grandes, certificados extensos ou listas volumosas não devem ser guardados em variáveis. Prefira gerar esses dados no build, guardá-los no armazenamento persistente ou buscá-los de um serviço próprio.
O que acontece ao alterar
- Salvar alterações em variáveis reinicia as instâncias do projeto para que os novos valores sejam carregados.
- Em projetos com mais de uma instância, planeje a alteração para um horário de menor uso e acompanhe os logs logo após salvar.
- Ambientes de preview herdam as variáveis do projeto principal a cada criação ou atualização do preview. Revise variáveis que apontam para bancos ou serviços compartilhados; veja Ambientes de Preview.
Variáveis definidas pela plataforma
A Zenifra injeta automaticamente:
| Variável | Conteúdo |
|---|---|
ZENIFRA_INSTANCE_VERSION | Versão publicada que está atendendo a instância |
Use essa variável para identificar a versão em logs, respostas de diagnóstico ou ferramentas de monitoramento. Não defina ZENIFRA_INSTANCE_VERSION manualmente: o valor é sempre substituído pela plataforma.
Conexão com bancos e serviços gerenciados
A DATABASE_URL não é injetada automaticamente em projetos HTTP. Copie os dados de conexão do banco ou do serviço gerenciado no console e cadastre a variável no projeto da aplicação:
DATABASE_URL=postgres://app:SENHA@HOST:PORTA/app
VALKEY_URL=valkeys://default:SENHA@HOST:PORTA/0Ao rotacionar a senha de um banco, atualize as variáveis de todas as aplicações que o utilizam.
Boas práticas
- Nunca versione segredos no repositório nem os inclua em imagens OCI.
- Use nomes descritivos e em maiúsculas, como
STRIPE_WEBHOOK_SECRETouFEATURE_NEW_CHECKOUT. - Separe valores de desenvolvimento local (arquivo
.envfora do Git) dos valores de produção cadastrados no console. - Revise quem tem
project.env.read: essa permissão permite ler segredos em texto claro. - Ao suspeitar de vazamento, gere uma nova credencial no serviço de origem, atualize a variável e revogue a antiga.
Próximos passos
FAQ
Preciso fazer um novo deploy depois de alterar uma variável?
Não. Ao salvar, as instâncias são reiniciadas e passam a ler os novos valores.
Posso definir a porta por variável?
A porta da aplicação é configurada no próprio projeto. Se o seu código lê PORT, cadastre a variável com o mesmo valor configurado na porta do projeto.
As variáveis aparecem nos logs?
Não, a menos que a sua aplicação as imprima. Evite registrar valores de segredos.
Configuração do projeto
Entenda como configurar projetos na Zenifra com GitHub ou imagem OCI, variáveis, domínios, rede, instâncias e armazenamento.
Armazenamento persistente
Saiba quando usar armazenamento persistente em projetos HTTP da Zenifra, como escolher capacidade e diretório, e o que pode mudar depois da criação.