Pular para o conteúdo principal

Variáveis de Ambiente

Documentação completa das variáveis de ambiente utilizadas no Módulo Empreendedorismo.

Backend (Django)

Configurações Gerais

VariávelDescriçãoPadrãoObrigatório
DEBUGModo debug do DjangoFalseNão
SECRET_KEYChave secreta para criptografia-Sim
ALLOWED_HOSTSHosts permitidos (separados por vírgula)localhostSim (prod)

Banco de Dados

VariávelDescriçãoPadrãoObrigatório
DATABASE_URLURL completa do PostgreSQL-Sim
DB_NAMENome do banco (alternativo)modulo_empreendedorismoNão
DB_USERUsuário do bancopostgresNão
DB_PASSWORDSenha do bancopostgresNão
DB_HOSTHost do bancolocalhostNão
DB_PORTPorta do banco5432Não

Formato DATABASE_URL:

postgres://usuario:senha@host:porta/nome_banco

Redis e Celery

VariávelDescriçãoPadrãoObrigatório
REDIS_URLURL do Redisredis://localhost:6379/0Não
CELERY_BROKER_URLURL do broker Celery$REDIS_URLNão
CELERY_RESULT_BACKENDBackend de resultados$REDIS_URLNão

MinIO / S3

VariávelDescriçãoPadrãoObrigatório
MINIO_ENDPOINTEndpoint do MinIOlocalhost:9000Não
MINIO_ACCESS_KEYAccess keyminioadminNão
MINIO_SECRET_KEYSecret keyminioadminNão
MINIO_BUCKET_NAMENome do bucketmediaNão
MINIO_USE_SSLUsar SSLFalseNão

Email (SMTP)

VariávelDescriçãoPadrãoObrigatório
EMAIL_BACKENDBackend de emaildjango.core.mail.backends.smtp.EmailBackendNão
EMAIL_HOSTServidor SMTPsmtp.gmail.comSim (prod)
EMAIL_PORTPorta SMTP587Não
EMAIL_HOST_USERUsuário SMTP-Sim (prod)
EMAIL_HOST_PASSWORDSenha SMTP-Sim (prod)
EMAIL_USE_TLSUsar TLSTrueNão
DEFAULT_FROM_EMAILEmail remetentenoreply@example.comSim (prod)

CORS

VariávelDescriçãoPadrãoObrigatório
CORS_ALLOWED_ORIGINSOrigens permitidashttp://localhost:9501Sim (prod)
CORS_ALLOW_CREDENTIALSPermitir credenciaisTrueNão

JWT

VariávelDescriçãoPadrãoObrigatório
JWT_ACCESS_TOKEN_LIFETIMETempo de vida do access token (minutos)60Não
JWT_REFRESH_TOKEN_LIFETIMETempo de vida do refresh token (dias)7Não

Frontend (React/Vite)

VariávelDescriçãoPadrãoObrigatório
VITE_API_URLURL base da APIhttp://localhost:8000/apiSim

Nota: Variáveis no Vite devem começar com VITE_.

Exemplo .env (Frontend)

frontend/.env
VITE_API_URL=http://localhost:8000/api

Exemplo .env.production (Frontend)

frontend/.env.production
VITE_API_URL=https://api.seudominio.com/api

Arquivos de Ambiente

Desenvolvimento

backend/.env
# Django
DEBUG=True
SECRET_KEY=sua-chave-secreta-desenvolvimento

# Database
DATABASE_URL=postgres://postgres:postgres@localhost:5432/modulo_empreendedorismo

# Redis
REDIS_URL=redis://localhost:6379/0

# MinIO
MINIO_ENDPOINT=localhost:9000
MINIO_ACCESS_KEY=minioadmin
MINIO_SECRET_KEY=minioadmin

# Email (desenvolvimento - console)
EMAIL_BACKEND=django.core.mail.backends.console.EmailBackend

# CORS
CORS_ALLOWED_ORIGINS=http://localhost:9501,http://127.0.0.1:9501

Produção

backend/.env.production
# Django
DEBUG=False
SECRET_KEY=<chave-secreta-muito-forte-e-aleatoria>
ALLOWED_HOSTS=api.seudominio.com

# Database
DATABASE_URL=postgres://user:senha_forte@db-host:5432/modulo_prod

# Redis
REDIS_URL=redis://redis-host:6379/0
CELERY_BROKER_URL=redis://redis-host:6379/0

# MinIO
MINIO_ENDPOINT=minio-host:9000
MINIO_ACCESS_KEY=<access_key_producao>
MINIO_SECRET_KEY=<secret_key_producao>
MINIO_USE_SSL=True

# Email
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_HOST_USER=seuemail@gmail.com
EMAIL_HOST_PASSWORD=<senha_de_aplicativo>
EMAIL_USE_TLS=True
DEFAULT_FROM_EMAIL=Módulo Empreendedorismo <noreply@seudominio.com>

# CORS
CORS_ALLOWED_ORIGINS=https://app.seudominio.com

Docker Compose

docker-compose.yml
services:
backend:
environment:
- DEBUG=${DEBUG:-False}
- SECRET_KEY=${SECRET_KEY}
- DATABASE_URL=${DATABASE_URL}
- REDIS_URL=${REDIS_URL}
- MINIO_ENDPOINT=${MINIO_ENDPOINT}
- MINIO_ACCESS_KEY=${MINIO_ACCESS_KEY}
- MINIO_SECRET_KEY=${MINIO_SECRET_KEY}
- CORS_ALLOWED_ORIGINS=${CORS_ALLOWED_ORIGINS}

Geração de SECRET_KEY

# Python
from django.core.management.utils import get_random_secret_key
print(get_random_secret_key())
# Bash
python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())"

Segurança

Boas Práticas

  1. Nunca commitar arquivos .env no repositório
  2. Use senhas fortes para produção
  3. Rotacione chaves periodicamente
  4. Use variáveis diferentes para cada ambiente
  5. Valide todas as variáveis obrigatórias na inicialização

Exemplo de Validação

core/settings.py
import os
from django.core.exceptions import ImproperlyConfigured

def get_env_variable(var_name, default=None, required=False):
value = os.environ.get(var_name, default)
if required and not value:
raise ImproperlyConfigured(f"Set the {var_name} environment variable")
return value

SECRET_KEY = get_env_variable('SECRET_KEY', required=True)
DEBUG = get_env_variable('DEBUG', 'False').lower() == 'true'

Checklist de Configuração

Desenvolvimento

  • .env criado com variáveis básicas
  • PostgreSQL rodando localmente ou via Docker
  • Redis rodando localmente ou via Docker
  • MinIO rodando localmente ou via Docker

Produção

  • SECRET_KEY forte e única
  • DEBUG=False
  • ALLOWED_HOSTS configurado
  • CORS_ALLOWED_ORIGINS configurado
  • Credenciais de banco seguras
  • SMTP configurado para emails
  • SSL/TLS habilitado no MinIO
  • Variáveis não expostas em logs