Variáveis de ambiente

Obrigatórias

VariávelDescrição
DATABASE_URLString de conexão do PostgreSQL
BETTER_AUTH_SECRETSegredo de auth (32 chars hex): openssl rand -hex 32
BETTER_AUTH_URLURL do seu app
ENCRYPTION_KEYChave de criptografia (32 chars hex): openssl rand -hex 32
INTERNAL_API_SECRETSegredo da API interna (32 chars hex): openssl rand -hex 32
NEXT_PUBLIC_APP_URLURL pública do app
NEXT_PUBLIC_SOCKET_URLOpcional. URL do WebSocket — o padrão é a origem da página; defina só se o realtime estiver em um host separado.

Provedores de IA

VariávelProvedor
OPENAI_API_KEYOpenAI
ANTHROPIC_API_KEY_1Anthropic Claude
GEMINI_API_KEY_1Google Gemini
MISTRAL_API_KEYMistral
OLLAMA_URLOllama (padrão: http://localhost:11434)

Para balanceamento de carga, adicione várias chaves com sufixos _1, _2, _3 (ex.: OPENAI_API_KEY_1, OPENAI_API_KEY_2). Funciona com OpenAI, Anthropic e Gemini.

No Docker, use OLLAMA_URL=http://host.docker.internal:11434 para Ollama na máquina host.

Azure OpenAI

VariávelDescrição
AZURE_OPENAI_API_KEYChave de API do Azure OpenAI
AZURE_OPENAI_ENDPOINTURL do endpoint do Azure OpenAI
AZURE_OPENAI_API_VERSIONVersão da API (ex.: 2024-02-15-preview)

vLLM (self-hosted)

VariávelDescrição
VLLM_BASE_URLURL do servidor vLLM (ex.: http://localhost:8000/v1)
VLLM_API_KEYBearer token opcional para o vLLM

Provedores OAuth

VariávelDescrição
GOOGLE_CLIENT_IDClient ID OAuth do Google
GOOGLE_CLIENT_SECRETClient secret OAuth do Google
GITHUB_CLIENT_IDClient ID OAuth do GitHub
GITHUB_CLIENT_SECRETClient secret OAuth do GitHub

Opcionais

VariávelDescrição
API_ENCRYPTION_KEYCriptografa chaves de API armazenadas (32 chars hex): openssl rand -hex 32
COPILOT_API_KEYChave de API para recursos do copilot
ADMIN_API_KEYChave de API admin para operações GitOps
ALLOWED_LOGIN_DOMAINSRestringe cadastros a domínios (separados por vírgula)
ALLOWED_LOGIN_EMAILSRestringe cadastros a e-mails específicos (separados por vírgula)
DISABLE_REGISTRATIONDefina como true para desativar novos cadastros

Armazenamento de arquivos

Por padrão o Zoen grava uploads no disco local. Em produção, aponte para AWS S3, Azure Blob ou Google Cloud Storage. Veja Object Storage para o setup completo, layout de buckets e política IAM.

VariávelDescrição
AWS_REGIONRegião AWS — defina com S3_BUCKET_NAME para ativar o S3
AWS_ACCESS_KEY_IDAccess key da AWS. Omita para usar a cadeia de credenciais da instância/IRSA
AWS_SECRET_ACCESS_KEYSecret key da AWS. Omita para usar a cadeia de credenciais da instância/IRSA
S3_BUCKET_NAMEBucket geral de arquivos do workspace — defina com AWS_REGION para ativar o S3
AZURE_STORAGE_CONTAINER_NAMEContainer geral de arquivos — defina com credenciais Azure para ativar Blob (tem precedência sobre S3)
AZURE_CONNECTION_STRINGConnection string do Azure, ou use AZURE_ACCOUNT_NAME + AZURE_ACCOUNT_KEY
GCS_BUCKET_NAMEBucket geral de arquivos do workspace — ativa o GCS quando nem Azure Blob nem S3 estão configurados
GCS_PROJECT_IDID do projeto GCP. Omita para inferir das credenciais/ADC
GCS_CREDENTIALS_JSONJSON inline da service account. Omita para usar Application Default Credentials (Workload Identity, GOOGLE_APPLICATION_CREDENTIALS)

Provedores de e-mail

Configure um provedor — o mailer detecta automaticamente na ordem de prioridade: Resend → AWS SES → SMTP → Azure Communication Services → Gmail. Se nenhum estiver configurado, os e-mails são registrados no console.

VariávelDescrição
FROM_EMAIL_ADDRESSEndereço do remetente (ex.: Zoen <noreply@example.com>). Fallback para noreply@EMAIL_DOMAIN.
EMAIL_DOMAINDomínio padrão quando FROM_EMAIL_ADDRESS não está definido
EMAIL_VERIFICATION_ENABLEDDefina como true para exigir verificação de e-mail no cadastro

Resend

VariávelDescrição
RESEND_API_KEYChave de API de resend.com

AWS SES

VariávelDescrição
AWS_SES_REGIONRegião AWS para o SES (ex.: us-east-1). As credenciais são resolvidas pela cadeia padrão do AWS SDK (env vars, IRSA, role de instância ECS/EC2, SSO).

SMTP (funciona com MailHog, Postfix, SendGrid SMTP, etc.)

VariávelDescrição
SMTP_HOSTHostname do servidor SMTP
SMTP_PORT465 para TLS implícito, 587 para STARTTLS, 25 para plain
SMTP_USEROpcional — omita para relays sem autenticação
SMTP_PASSOpcional — omita para relays sem autenticação
SMTP_SECUREDefina como true para forçar TLS na conexão; auto-true na porta 465

Azure Communication Services

VariávelDescrição
AZURE_ACS_CONNECTION_STRINGConnection string do Azure Communication Services

Gmail (nativo do Google — o GCP não tem serviço próprio de e-mail transacional, então o caminho nativo é a Gmail API com um remetente do Google Workspace)

VariávelDescrição
GMAIL_CREDENTIALS_JSONJSON inline da service account. A service account precisa de domain-wide delegation concedida para o escopo https://www.googleapis.com/auth/gmail.send no console de admin do Workspace
GMAIL_SENDERO usuário do Workspace que a service account personifica ao enviar (ex.: noreply@yourdomain.com). FROM_EMAIL_ADDRESS deve corresponder a esse usuário ou a um dos aliases registrados — o Gmail reescreve endereços From não reconhecidos

Como alternativa, o Google Workspace SMTP relay funciona pelo provedor SMTP genérico (SMTP_HOST=smtp-relay.gmail.com, porta 587) sem precisar de service account.

Limites

Deployments self-hosted (billing desativado) rodam sem limites de plano: sem rate limits, sem timeouts de execução, sem caps de tabelas ou armazenamento, e sem exclusão de dados por retenção. Cada limite pode ser reativado individualmente definindo explicitamente a variável correspondente.

VariávelOpta porValor sugerido
RATE_LIMIT_FREE_SYNCExecuções sync por minuto50
RATE_LIMIT_FREE_ASYNCExecuções async por minuto200
RATE_LIMIT_FREE_API_ENDPOINTRequisições ao endpoint da API v1 por minuto30
EXECUTION_TIMEOUT_FREETimeout de execução sync (segundos)300
EXECUTION_TIMEOUT_ASYNC_FREETimeout de execução async (segundos)5400
FREE_TABLES_LIMITMáximo de tabelas de usuário por workspace5
FREE_TABLE_ROWS_LIMITMáximo de linhas por tabela de usuário50000
FREE_STORAGE_LIMIT_GBCota de armazenamento de arquivos (GB)5

Sem billing, toda conta resolve para o tier free, então só as variáveis do tier free se aplicam. Definir uma variável aplica só aquele limite — o restante continua ilimitado.

Deployments instalados com o chart Helm já vêm com essas variáveis pré-definidas em app.envDefaults, então instalações via chart mantêm a aplicação dos limites a menos que essas chaves sejam removidas ou sobrescritas.

Exemplo de .env

DATABASE_URL=postgresql://postgres:postgres@db:5432/simstudio
BETTER_AUTH_SECRET=<openssl rand -hex 32>
BETTER_AUTH_URL=https://sim.yourdomain.com
ENCRYPTION_KEY=<openssl rand -hex 32>
INTERNAL_API_SECRET=<openssl rand -hex 32>
NEXT_PUBLIC_APP_URL=https://sim.yourdomain.com
OPENAI_API_KEY=sk-...

Veja apps/sim/.env.example para todas as opções.

On this page