Pular para o conteúdo principal

Configuração de Ambiente

Este guia detalha a configuração de variáveis de ambiente para diferentes ambientes do sistema.

Variáveis de Ambiente

Backend (.env)

Configurações do Django

# Ambiente
DEBUG=True
DJANGO_SETTINGS_MODULE=app.settings.dev
SECRET_KEY=sua-chave-secreta-unica-e-segura

# Hosts permitidos
ALLOWED_HOSTS=localhost,127.0.0.1,0.0.0.0

# URL do Frontend (para CORS e redirects)
FRONTEND_URL=http://localhost:5173

Banco de Dados PostgreSQL

# Conexão com PostgreSQL
DB_ENGINE=django.db.backends.postgresql
DB_NAME=portal_talentos_db
DB_USER=portal_talentos_user
DB_PASSWORD=sua_senha_segura
DB_HOST=db
DB_PORT=5432

# Pool de conexões
DB_CONN_MAX_AGE=60

Redis e Celery

# Redis
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=

# Celery
CELERY_BROKER_URL=redis://redis:6379/0
CELERY_RESULT_BACKEND=redis://redis:6379/0
CELERY_TASK_ALWAYS_EAGER=False

Email

# Configuração de Email
EMAIL_BACKEND=django.core.mail.backends.smtp.EmailBackend
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_USE_TLS=True
EMAIL_HOST_USER=seu-email@gmail.com
EMAIL_HOST_PASSWORD=sua-app-password
DEFAULT_FROM_EMAIL=noreply@portal-talentos.gov.br

Armazenamento MinIO

# MinIO (Armazenamento de Arquivos)
MINIO_ENDPOINT=minio:9000
MINIO_ACCESS_KEY=minioadmin
MINIO_SECRET_KEY=minioadmin
MINIO_USE_SSL=False
MINIO_BUCKET_NAME=portal-talentos

Inteligência Artificial

# OpenAI (para melhorias de texto)
OPENAI_API_KEY=sk-sua-chave-openai
OPENAI_MODEL=gpt-4

Segurança

# JWT
JWT_SECRET_KEY=sua-jwt-secret-key
JWT_ACCESS_TOKEN_LIFETIME=60
JWT_REFRESH_TOKEN_LIFETIME=1440

# CORS
CORS_ALLOWED_ORIGINS=http://localhost:5173,http://127.0.0.1:5173
CORS_ALLOW_CREDENTIALS=True

Frontend (.env.local)

# API Backend
VITE_API_URL=http://localhost:8080
VITE_API_BASE_URL=http://localhost:8080/api/v1
VITE_API_TIMEOUT=30000

# Aplicação
VITE_APP_NAME=Acesso ao Emprego
VITE_APP_ENV=development

# Features (feature flags)
VITE_ENABLE_MOODLE=true
VITE_ENABLE_AI_FEATURES=true

Configuração por Ambiente

Desenvolvimento

# Backend - .env.dev
DEBUG=True
DJANGO_SETTINGS_MODULE=app.settings.dev
SECRET_KEY=chave-dev-qualquer
ALLOWED_HOSTS=localhost,127.0.0.1
DB_HOST=db
REDIS_HOST=redis
EMAIL_BACKEND=django.core.mail.backends.console.EmailBackend
# Frontend - .env.local
VITE_API_URL=http://localhost:8080
VITE_APP_ENV=development

Staging

# Backend - .env.staging
DEBUG=False
DJANGO_SETTINGS_MODULE=app.settings.staging
SECRET_KEY=chave-staging-segura-64-chars
ALLOWED_HOSTS=staging.portal-talentos.gov.br
DB_HOST=staging-db.server.com
REDIS_HOST=staging-redis.server.com
# Frontend - .env.staging
VITE_API_URL=https://api-staging.portal-talentos.gov.br
VITE_APP_ENV=staging

Produção

# Backend - .env.prod
DEBUG=False
DJANGO_SETTINGS_MODULE=app.settings.production
SECRET_KEY=chave-producao-ultra-segura-minimo-64-chars
ALLOWED_HOSTS=portal-talentos.gov.br,www.portal-talentos.gov.br
DB_HOST=prod-db.server.com
DB_PASSWORD=senha-super-segura
REDIS_HOST=prod-redis.server.com

# Segurança adicional
SECURE_SSL_REDIRECT=True
SECURE_HSTS_SECONDS=31536000
SESSION_COOKIE_SECURE=True
CSRF_COOKIE_SECURE=True
# Frontend - .env.production
VITE_API_URL=https://api.portal-talentos.gov.br
VITE_APP_ENV=production

Verificação de Configuração

Verificar Variáveis no Backend

docker-compose -f docker-compose.dev.yml exec backend python -c "
from django.conf import settings
print('DEBUG:', settings.DEBUG)
print('ALLOWED_HOSTS:', settings.ALLOWED_HOSTS)
print('DATABASE:', settings.DATABASES['default']['HOST'])
"

Verificar Conexões

docker-compose -f docker-compose.dev.yml exec backend python -c "
from django.db import connection
connection.ensure_connection()
print('Database: OK')
"

docker-compose -f docker-compose.dev.yml exec backend python -c "
from django.core.cache import cache
cache.set('test', 'ok', 10)
print('Redis:', cache.get('test'))
"

Segurança das Variáveis

Boas Práticas

  1. Nunca commitar arquivos .env - Adicione ao .gitignore
  2. Use secrets managers em produção (AWS Secrets Manager, HashiCorp Vault)
  3. Rotacione secrets regularmente
  4. Use senhas fortes - Mínimo 32 caracteres para SECRET_KEY
  5. Limite permissões - Cada ambiente tem suas próprias credenciais

Geração de SECRET_KEY

import secrets
print(secrets.token_urlsafe(64))
openssl rand -base64 64 | tr -d '\n'

Validação de Configuração

docker-compose -f docker-compose.dev.yml exec backend python manage.py check --deploy

Atenção

Nunca exponha variáveis de ambiente sensíveis em logs, mensagens de erro ou repositórios de código. Em produção, sempre use um gerenciador de secrets.

Dica

Use arquivos .env.example com valores fictícios para documentar as variáveis necessárias sem expor dados sensíveis.