Manual de Configuração
Este manual descreve as configurações disponíveis no sistema Módulo Empreendedorismo.
Variáveis de Ambiente
Backend (Django)
| Variável | Descrição | Padrão | Obrigatório |
|---|---|---|---|
SECRET_KEY | Chave secreta do Django | - | Sim |
DEBUG | Modo debug | False | Não |
ALLOWED_HOSTS | Hosts permitidos | localhost,127.0.0.1 | Produção |
Banco de Dados
| Variável | Descrição | Padrão | Obrigatório |
|---|---|---|---|
DB_HOST | Host do PostgreSQL | db | Sim |
DB_PORT | Porta do PostgreSQL | 5432 | Não |
DB_NAME | Nome do banco | empreendedorismo | Sim |
DB_USER | Usuário do banco | postgres | Sim |
DB_PASSWORD | Senha do banco | - | Sim |
Redis/Celery
| Variável | Descrição | Padrão | Obrigatório |
|---|---|---|---|
REDIS_HOST | Host do Redis | redis | Sim |
REDIS_PORT | Porta do Redis | 6379 | Não |
CELERY_BROKER_URL | URL do broker Celery | redis://redis:6379/0 | Sim |
CELERY_RESULT_BACKEND | Backend de resultados | redis://redis:6379/0 | Sim |
MinIO (Armazenamento)
| Variável | Descrição | Padrão | Obrigatório |
|---|---|---|---|
USE_MINIO | Usar MinIO | True | Não |
MINIO_ENDPOINT | Endpoint interno | minio:9000 | Sim |
MINIO_EXTERNAL_ENDPOINT | Endpoint externo | localhost:9000 | Sim |
MINIO_ACCESS_KEY | Access key | - | Sim |
MINIO_SECRET_KEY | Secret key | - | Sim |
MINIO_BUCKET_NAME | Nome do bucket | empreendedorismo | Não |
MINIO_SECURE | Usar HTTPS | False | Não |
Email (SMTP)
| Variável | Descrição | Padrão | Obrigatório |
|---|---|---|---|
SMTP_HOST | Servidor SMTP | - | Sim |
SMTP_PORT | Porta SMTP | 587 | Não |
SMTP_USER | Usuário SMTP | - | Sim |
SMTP_PASSWORD | Senha SMTP | - | Sim |
SMTP_USE_TLS | Usar TLS | True | Não |
DEFAULT_FROM_EMAIL | Email remetente | - | Sim |
EMAIL_LOGO_URL | URL do logo nos emails | - | Não |
Frontend (Vite/React)
| Variável | Descrição | Padrão | Obrigatório |
|---|---|---|---|
VITE_API_URL | URL da API backend | http://localhost:8000 | Sim |
VITE_MINIO_URL | URL do MinIO | http://localhost:9000 | Sim |
Configuração do Docker Compose
Exemplo Completo
version: '3.8'
services:
db:
image: postgres:16
environment:
POSTGRES_DB: empreendedorismo
POSTGRES_USER: postgres
POSTGRES_PASSWORD: ${DB_PASSWORD}
volumes:
- postgres_data:/var/lib/postgresql/data
ports:
- "5432:5432"
redis:
image: redis:7-alpine
ports:
- "6379:6379"
minio:
image: minio/minio
command: server /data --console-address ":9001"
environment:
MINIO_ROOT_USER: ${MINIO_ACCESS_KEY}
MINIO_ROOT_PASSWORD: ${MINIO_SECRET_KEY}
volumes:
- minio_data:/data
ports:
- "9000:9000"
- "9001:9001"
backend:
build: ./backend
environment:
- SECRET_KEY=${SECRET_KEY}
- DEBUG=False
- DB_HOST=db
- DB_NAME=empreendedorismo
- DB_USER=postgres
- DB_PASSWORD=${DB_PASSWORD}
- REDIS_HOST=redis
- MINIO_ENDPOINT=minio:9000
- MINIO_EXTERNAL_ENDPOINT=${MINIO_EXTERNAL_ENDPOINT}
- MINIO_ACCESS_KEY=${MINIO_ACCESS_KEY}
- MINIO_SECRET_KEY=${MINIO_SECRET_KEY}
- SMTP_HOST=${SMTP_HOST}
- SMTP_USER=${SMTP_USER}
- SMTP_PASSWORD=${SMTP_PASSWORD}
depends_on:
- db
- redis
- minio
ports:
- "8000:8000"
celery-worker:
build: ./backend
command: celery -A core worker -l info -Q default
environment:
# Mesmas variáveis do backend
depends_on:
- backend
- redis
celery-worker-emails:
build: ./backend
command: celery -A core worker -l info -Q emails
environment:
# Mesmas variáveis do backend
depends_on:
- backend
- redis
frontend:
build: ./frontend
environment:
- VITE_API_URL=http://localhost:8000
- VITE_MINIO_URL=http://localhost:9000
ports:
- "9501:80"
volumes:
postgres_data:
minio_data:
Configuração de Email
Gmail
environment:
- SMTP_HOST=smtp.gmail.com
- SMTP_PORT=587
- SMTP_USE_TLS=True
- SMTP_USER=seu-email@gmail.com
- SMTP_PASSWORD=sua-app-password # Usar App Password, não a senha normal
Para usar Gmail, é necessário:
- Ativar verificação em duas etapas
- Gerar uma "Senha de App" em https://myaccount.google.com/apppasswords
Office 365
environment:
- SMTP_HOST=smtp.office365.com
- SMTP_PORT=587
- SMTP_USE_TLS=True
- SMTP_USER=seu-email@empresa.com
- SMTP_PASSWORD=sua-senha
Amazon SES
environment:
- SMTP_HOST=email-smtp.us-east-1.amazonaws.com
- SMTP_PORT=587
- SMTP_USE_TLS=True
- SMTP_USER=AKIAXXXXXXXXXXXXXXXX
- SMTP_PASSWORD=sua-secret-key
Configuração do MinIO
Acesso Público a Arquivos
Para permitir acesso público aos arquivos do bucket:
# Acessar console MinIO
http://localhost:9001
# Ou via CLI
docker-compose exec minio mc anonymous set download local/empreendedorismo
Política de Bucket Personalizada
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {"AWS": "*"},
"Action": ["s3:GetObject"],
"Resource": ["arn:aws:s3:::empreendedorismo/public/*"]
}
]
}
Configuração de CORS
Backend (Django)
# settings.py
CORS_ALLOWED_ORIGINS = [
"http://localhost:9501",
"http://localhost:3000",
"https://seu-dominio.com",
]
CORS_ALLOW_CREDENTIALS = True
MinIO
docker-compose exec minio mc admin config set local cors --origin "*" --methods "GET,PUT,POST,DELETE"
Configuração de Logs
Django (settings.py)
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '{levelname} {asctime} {module} {process:d} {thread:d} {message}',
'style': '{',
},
},
'handlers': {
'console': {
'class': 'logging.StreamHandler',
'formatter': 'verbose',
},
'file': {
'class': 'logging.handlers.RotatingFileHandler',
'filename': '/var/log/django/app.log',
'maxBytes': 10485760, # 10MB
'backupCount': 5,
'formatter': 'verbose',
},
},
'root': {
'handlers': ['console', 'file'],
'level': 'INFO',
},
}
Configuração de Cache
Redis Cache
# settings.py
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.redis.RedisCache',
'LOCATION': 'redis://redis:6379/1',
'OPTIONS': {
'CLIENT_CLASS': 'django_redis.client.DefaultClient',
}
}
}
# Cache de sessão
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
SESSION_CACHE_ALIAS = 'default'
Configuração de Segurança (Produção)
# settings.py (produção)
SECURE_BROWSER_XSS_FILTER = True
SECURE_CONTENT_TYPE_NOSNIFF = True
X_FRAME_OPTIONS = 'DENY'
SECURE_HSTS_SECONDS = 31536000
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
SECURE_HSTS_PRELOAD = True
SECURE_SSL_REDIRECT = True
CSRF_COOKIE_SECURE = True
SESSION_COOKIE_SECURE = True
Troubleshooting de Configuração
Verificar Variáveis de Ambiente
# Ver todas as variáveis de um container
docker-compose exec backend env | sort
# Verificar variável específica
docker-compose exec backend printenv SECRET_KEY
Testar Conexão com Banco
docker-compose exec backend python -c "
import django
django.setup()
from django.db import connection
cursor = connection.cursor()
print('Conexão OK')
"
Testar Conexão com Redis
docker-compose exec backend python -c "
import redis
r = redis.Redis(host='redis', port=6379)
print(r.ping())
"
Testar Envio de Email
docker-compose exec backend python manage.py shell -c "
from django.core.mail import send_mail
send_mail('Teste', 'Mensagem de teste', 'from@example.com', ['to@example.com'])
"