#!/bin/bash # Script de instalación completo y robusto para el Agregador RSS. # Instala y configura PostgreSQL, Python, y la aplicación como un servicio systemd. set -e # ========= CONFIGURACIÓN ========= APP_NAME="rss" DB_NAME="rss" DB_USER="rss" DB_PASS="x" # ¡IMPORTANTE! Usar una contraseña más segura en un entorno real. APP_USER="x" # El usuario no-root que ejecutará la aplicación. # Directorios (se calculan automáticamente) APP_DIR="/home/$APP_USER/$APP_NAME" PYTHON_ENV="$APP_DIR/venv" SERVICE_FILE="/etc/systemd/system/$APP_NAME.service" FLASK_APP_ENTRY="app:app" # Formato para Gunicorn: "nombre_fichero:nombre_variable_app" # ========= 1. INSTALAR DEPENDENCIAS DEL SISTEMA ========= echo "🟢 Instalando dependencias del sistema (PostgreSQL, Python, etc.)..." sudo apt-get update sudo apt-get install -y wget ca-certificates postgresql postgresql-contrib python3-venv python3-pip # ========= 2. CONFIGURAR POSTGRESQL ========= echo "🛠️ Configurando PostgreSQL..." # Ajustar autenticación para permitir login con contraseña PG_HBA=$(find /etc/postgresql -name pg_hba.conf | head -1) if [ -n "$PG_HBA" ] && grep -q "local\s\+all\s\+all\s\+peer" "$PG_HBA"; then echo "📝 Ajustando pg_hba.conf para autenticación md5..." sudo sed -i 's/local\s\+all\s\+all\s\+peer/local all all md5/' "$PG_HBA" sudo systemctl restart postgresql else echo "✅ pg_hba.conf ya parece estar configurado para md5." fi # Crear usuario y base de datos de forma segura (solo si no existen) echo "👤 Creando usuario y base de datos '$DB_NAME'..." sudo -u postgres psql -c "DO \$\$ BEGIN IF NOT EXISTS (SELECT FROM pg_catalog.pg_user WHERE usename = '$DB_USER') THEN CREATE USER $DB_USER WITH PASSWORD '$DB_PASS'; END IF; END \$\$;" if ! sudo -u postgres psql -lqt | cut -d \| -f 1 | grep -qw "$DB_NAME"; then sudo -u postgres psql -c "CREATE DATABASE $DB_NAME OWNER $DB_USER;" echo "Base de datos '$DB_NAME' creada." else echo "✅ Base de datos '$DB_NAME' ya existe." fi # ========= 3. CREAR TABLAS DE LA APLICACIÓN ========= echo "📐 Creando tablas en la base de datos (si no existen)..." export PGPASSWORD="$DB_PASS" psql -U "$DB_USER" -h localhost -d "$DB_NAME" < /dev/null <:8000" echo "" echo "👉 Comandos útiles:" echo " Revisar estado: sudo systemctl status $APP_NAME" echo " Ver logs en vivo: sudo journalctl -u $APP_NAME -f" echo " Reiniciar servicio: sudo systemctl restart $APP_NAME" echo "" echo "Recuerda configurar la redirección de puertos en VirtualBox y el firewall si es necesario."