✨ Características: - 45 ejercicios universitarios (Basic → Advanced) - Renderizado LaTeX profesional - IA generativa (Z.ai/DashScope) - Docker 9 servicios - Tests 123/123 pasando - Seguridad enterprise (JWT, XSS, Rate limiting) 🐳 Infraestructura: - Next.js 14 + Node.js 20 - PostgreSQL 15 + Redis 7 - Docker Compose completo - Nginx + SSL ready 📚 Documentación: - 5 informes técnicos completos - README profesional - Scripts de deployment automatizados Estado: Producción lista ✅
107 lines
3.5 KiB
Bash
Executable File
107 lines
3.5 KiB
Bash
Executable File
#!/bin/bash
|
|
# ==================================================
|
|
# SECRETS SETUP SCRIPT
|
|
# Script para configurar secrets localmente de forma segura
|
|
# ==================================================
|
|
|
|
set -e
|
|
|
|
echo "=================================================="
|
|
echo " Configuración de Secrets - Math Platform"
|
|
echo "=================================================="
|
|
echo ""
|
|
|
|
# Colores para output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Crear directorio de secrets
|
|
SECRETS_DIR="./secrets"
|
|
mkdir -p "$SECRETS_DIR"
|
|
|
|
echo -e "${YELLOW}Este script creará archivos de secrets en $SECRETS_DIR/${NC}"
|
|
echo -e "${YELLOW}Estos archivos están en .gitignore y NO deben commitearse${NC}"
|
|
echo ""
|
|
|
|
# Función para solicitar secret
|
|
request_secret() {
|
|
local name=$1
|
|
local description=$2
|
|
local file="$SECRETS_DIR/$name.txt"
|
|
|
|
echo "--------------------------------------------------"
|
|
echo -e "${GREEN}$description${NC}"
|
|
|
|
if [ -f "$file" ]; then
|
|
echo -e "${YELLOW}⚠️ Ya existe: $file${NC}"
|
|
read -p "¿Desea sobrescribir? (s/N): " overwrite
|
|
if [[ ! "$overwrite" =~ ^[Ss]$ ]]; then
|
|
echo " → Saltando..."
|
|
return
|
|
fi
|
|
fi
|
|
|
|
read -s -p "Ingrese el valor (presione Enter para omitir): " value
|
|
echo ""
|
|
|
|
if [ -n "$value" ]; then
|
|
echo "$value" > "$file"
|
|
chmod 600 "$file"
|
|
echo -e "${GREEN} ✓ Creado: $file${NC}"
|
|
else
|
|
echo -e "${YELLOW} → Omitido${NC}"
|
|
fi
|
|
}
|
|
|
|
# Solicitar cada secret
|
|
request_secret "db_password" "1. Contraseña de la Base de Datos PostgreSQL"
|
|
request_secret "redis_password" "2. Contraseña de Redis"
|
|
request_secret "jwt_secret" "3. JWT Secret (mínimo 32 caracteres recomendado)"
|
|
request_secret "session_secret" "4. Session Secret"
|
|
request_secret "ai_api_key" "5. AI API Key (DashScope/Aliyun)"
|
|
request_secret "telegram_token" "6. Telegram Bot Token"
|
|
request_secret "telegram_chat_id" "7. Telegram Admin Chat ID"
|
|
request_secret "monitor_db_password" "8. Contraseña del usuario de monitoreo"
|
|
|
|
echo ""
|
|
echo "=================================================="
|
|
echo -e "${GREEN}Configuración completada${NC}"
|
|
echo "=================================================="
|
|
echo ""
|
|
|
|
# Verificar permisos
|
|
echo "Verificando permisos de seguridad..."
|
|
chmod 600 "$SECRETS_DIR"/*.txt 2>/dev/null || true
|
|
echo -e "${GREEN}✓ Permisos establecidos: 600 (solo lectura/escritura owner)${NC}"
|
|
echo ""
|
|
|
|
# Listar secrets creados
|
|
echo "Secrets configurados:"
|
|
ls -la "$SECRETS_DIR/"
|
|
echo ""
|
|
|
|
echo "=================================================="
|
|
echo " INSTRUCCIONES DE USO"
|
|
echo "=================================================="
|
|
echo ""
|
|
echo "1. Para desarrollo local con secrets:"
|
|
echo " docker-compose -f docker-compose.secrets.yml up -d"
|
|
echo ""
|
|
echo "2. Para producción con Docker Swarm:"
|
|
echo " docker secret create db_password secrets/db_password.txt"
|
|
echo " docker stack deploy -c docker-compose.secrets.yml math-platform"
|
|
echo ""
|
|
echo "3. Para rotar credenciales:"
|
|
echo " - Generar nuevos valores"
|
|
echo " - Actualizar archivos en secrets/"
|
|
echo " - Reiniciar servicios: docker-compose -f docker-compose.secrets.yml restart"
|
|
echo ""
|
|
echo -e "${RED}⚠️ IMPORTANTE:${NC}"
|
|
echo -e "${RED} - NUNCA commitear archivos de secrets${NC}"
|
|
echo -e "${RED} - Hacer backup de secrets en un lugar seguro${NC}"
|
|
echo -e "${RED} - Rotar credenciales expuestas inmediatamente${NC}"
|
|
echo ""
|
|
echo "=================================================="
|