#!/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 "=================================================="