Variáveis de Ambiente
Documentação completa das variáveis de ambiente utilizadas no Módulo Empreendedorismo.
Backend (Django)
Configurações Gerais
| Variável | Descrição | Padrão | Obrigatório |
|---|---|---|---|
DEBUG | Modo debug do Django | False | Não |
SECRET_KEY | Chave secreta para criptografia | - | Sim |
ALLOWED_HOSTS | Hosts permitidos (separados por vírgula) | localhost | Sim (prod) |
Banco de Dados
| Variável | Descrição | Padrão | Obrigatório |
|---|---|---|---|
DATABASE_URL | URL completa do PostgreSQL | - | Sim |
DB_NAME | Nome do banco (alternativo) | modulo_empreendedorismo | Não |
DB_USER | Usuário do banco | postgres | Não |
DB_PASSWORD | Senha do banco | postgres | Não |
DB_HOST | Host do banco | localhost | Não |
DB_PORT | Porta do banco | 5432 | Não |
Formato DATABASE_URL:
postgres://usuario:senha@host:porta/nome_banco
Redis e Celery
| Variável | Descrição | Padrão | Obrigatório |
|---|---|---|---|
REDIS_URL | URL do Redis | redis://localhost:6379/0 | Não |
CELERY_BROKER_URL | URL do broker Celery | $REDIS_URL | Não |
CELERY_RESULT_BACKEND | Backend de resultados | $REDIS_URL | Não |
MinIO / S3
| Variável | Descrição | Padrão | Obrigatório |
|---|---|---|---|
MINIO_ENDPOINT | Endpoint do MinIO | localhost:9000 | Não |
MINIO_ACCESS_KEY | Access key | minioadmin | Não |
MINIO_SECRET_KEY | Secret key | minioadmin | Não |
MINIO_BUCKET_NAME | Nome do bucket | media | Não |
MINIO_USE_SSL | Usar SSL | False | Não |
Email (SMTP)
| Variável | Descrição | Padrão | Obrigatório |
|---|---|---|---|
EMAIL_BACKEND | Backend de email | django.core.mail.backends.smtp.EmailBackend | Não |
EMAIL_HOST | Servidor SMTP | smtp.gmail.com | Sim (prod) |
EMAIL_PORT | Porta SMTP | 587 | Não |
EMAIL_HOST_USER | Usuário SMTP | - | Sim (prod) |
EMAIL_HOST_PASSWORD | Senha SMTP | - | Sim (prod) |
EMAIL_USE_TLS | Usar TLS | True | Não |
DEFAULT_FROM_EMAIL | Email remetente | noreply@example.com | Sim (prod) |
CORS
| Variável | Descrição | Padrão | Obrigatório |
|---|---|---|---|
CORS_ALLOWED_ORIGINS | Origens permitidas | http://localhost:9501 | Sim (prod) |
CORS_ALLOW_CREDENTIALS | Permitir credenciais | True | Não |
JWT
| Variável | Descrição | Padrão | Obrigatório |
|---|---|---|---|
JWT_ACCESS_TOKEN_LIFETIME | Tempo de vida do access token (minutos) | 60 | Não |
JWT_REFRESH_TOKEN_LIFETIME | Tempo de vida do refresh token (dias) | 7 | Não |
Frontend (React/Vite)
| Variável | Descrição | Padrão | Obrigatório |
|---|---|---|---|
VITE_API_URL | URL base da API | http://localhost:8000/api | Sim |
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
- Nunca commitar arquivos
.envno repositório - Use senhas fortes para produção
- Rotacione chaves periodicamente
- Use variáveis diferentes para cada ambiente
- 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
-
.envcriado 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_KEYforte e única -
DEBUG=False -
ALLOWED_HOSTSconfigurado -
CORS_ALLOWED_ORIGINSconfigurado - Credenciais de banco seguras
- SMTP configurado para emails
- SSL/TLS habilitado no MinIO
- Variáveis não expostas em logs