Pular para o conteúdo principal

Manual de Configuração

Este manual descreve as configurações disponíveis no sistema Módulo Empreendedorismo.

Variáveis de Ambiente

Backend (Django)

VariávelDescriçãoPadrãoObrigatório
SECRET_KEYChave secreta do Django-Sim
DEBUGModo debugFalseNão
ALLOWED_HOSTSHosts permitidoslocalhost,127.0.0.1Produção

Banco de Dados

VariávelDescriçãoPadrãoObrigatório
DB_HOSTHost do PostgreSQLdbSim
DB_PORTPorta do PostgreSQL5432Não
DB_NAMENome do bancoempreendedorismoSim
DB_USERUsuário do bancopostgresSim
DB_PASSWORDSenha do banco-Sim

Redis/Celery

VariávelDescriçãoPadrãoObrigatório
REDIS_HOSTHost do RedisredisSim
REDIS_PORTPorta do Redis6379Não
CELERY_BROKER_URLURL do broker Celeryredis://redis:6379/0Sim
CELERY_RESULT_BACKENDBackend de resultadosredis://redis:6379/0Sim

MinIO (Armazenamento)

VariávelDescriçãoPadrãoObrigatório
USE_MINIOUsar MinIOTrueNão
MINIO_ENDPOINTEndpoint internominio:9000Sim
MINIO_EXTERNAL_ENDPOINTEndpoint externolocalhost:9000Sim
MINIO_ACCESS_KEYAccess key-Sim
MINIO_SECRET_KEYSecret key-Sim
MINIO_BUCKET_NAMENome do bucketempreendedorismoNão
MINIO_SECUREUsar HTTPSFalseNão

Email (SMTP)

VariávelDescriçãoPadrãoObrigatório
SMTP_HOSTServidor SMTP-Sim
SMTP_PORTPorta SMTP587Não
SMTP_USERUsuário SMTP-Sim
SMTP_PASSWORDSenha SMTP-Sim
SMTP_USE_TLSUsar TLSTrueNão
DEFAULT_FROM_EMAILEmail remetente-Sim
EMAIL_LOGO_URLURL do logo nos emails-Não

Frontend (Vite/React)

VariávelDescriçãoPadrãoObrigatório
VITE_API_URLURL da API backendhttp://localhost:8000Sim
VITE_MINIO_URLURL do MinIOhttp://localhost:9000Sim

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:

  1. Ativar verificação em duas etapas
  2. 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'])
"