11#! /bin/bash
22# ==============================================================================
33# SCRIPT: install_ch9_local.sh
4- # Versión: 2.2 - Instalación inteligente de Channel-9 con Infraestructura Web/Core
4+ # Versión: 2.3 - Instalación inteligente de Channel-9 con Infraestructura Web/Core (FIX Lighttpd)
55# Descripción: Comprueba y compila/instala los paquetes DEB. Luego, configura
66# el repositorio local, la infraestructura web (Lighttpd/Userdir)
77# y la infraestructura de red/correo (ch9_infra_setup.sh).
88# ==============================================================================
99
10+
11+ # --- 9.1. controlamos si las interfaces de red usan nombres tradicionales (canonical) o no y los forzamos ---
12+ echo " --- 9.1 comprobamos los nombres de las interfaces de red ---"
13+ if [ -f " force_canonical_netnames.sh" ]; then
14+ ./force_canonical_netnames.sh || { echo " 🚨 Error al comprobar los nombres de las interfaces." ; }
15+ else
16+ echo " 🚨 Error: force_canonical_netnames.sh no encontrado."
17+ fi
18+
19+
1020# --- Variables de Configuración ---
1121REPO_ROOT=" ${HOME} /public_html/ch9/debian"
1222ARCH=$( dpkg --print-architecture)
@@ -24,7 +34,6 @@ PACKAGES_TO_CHECK=(
2434# Lista de paquetes que se instalarán al final (solo los paquetes base y el servicio LT)
2535CORE_PACKAGES=" libretranslate-base libretranslate-service whisper-cpp-cli piper-tts"
2636
27-
2837# --- Funciones de Utilidad ---
2938
3039# Función para verificar si un paquete base está instalado
@@ -46,6 +55,9 @@ deb_exists() {
4655# --- 1. Control de Dependencias Generales y Preparación ---
4756echo " --- 1. Instalando dependencias básicas, FPM e infraestructura web ---"
4857
58+ # eliminamos el repositorio local porqué va a ser regenerado y añadido después:
59+ sudo rm /etc/apt/sources.list.d/channel9.list
60+
4961# Instalación de todas las dependencias (Bind9 se instala en ch9_infra_setup.sh)
5062sudo apt update
5163sudo apt install -y sox ffmpeg zenity mailutils multimon-ng net-tools git cmake build-essential ruby ruby-dev python3 python3-venv wget yad mutt msmtp lighttpd
@@ -61,12 +73,14 @@ command -v fpm >/dev/null 2>&1 || {
6173 sudo gem install fpm
6274}
6375
64- # --- 1.1. Configuración del Servidor Web (Lighttpd/Userdir) ---
76+ # --- 1.1. Configuración del Servidor Web (Lighttpd/Userdir y Dirlisting ) ---
6577echo " --- 1.1. Configurando Lighttpd para servir el repositorio local ---"
6678
67- # Habilitar el módulo Userdir
68- echo " ⚙️ Habilitando mod_userdir para servir \$ HOME/public_html..."
69- sudo lighty-enable-mod userdir 2> /dev/null
79+ # Habilitar los módulos necesarios: userdir (para /~usuario/) y dirlisting (para indexar carpetas)
80+ echo " ⚙️ Habilitando mod_userdir y mod_dirlisting para servir \$ HOME/public_html..."
81+ # **CORRECCIÓN CRÍTICA:** Usamos lighttpd-enable-mod y añadimos dirlisting para evitar el error 403.
82+ sudo lighttpd-enable-mod userdir 2> /dev/null
83+ sudo lighttpd-enable-mod dirlisting 2> /dev/null
7084
7185# Establecer los permisos necesarios para que lighttpd acceda a $HOME/public_html
7286echo " ⚙️ Estableciendo permisos de lectura para el servidor web..."
@@ -79,9 +93,10 @@ sudo chmod o+rx "$HOME/public_html"
7993mkdir -p " $REPO_ROOT " # Asegurar que la ruta base existe
8094sudo chmod -R o+rX " $HOME /public_html/ch9" 2> /dev/null
8195
82- # Reiniciar Lighttpd para aplicar la configuración de userdir
96+ # Reiniciar Lighttpd para aplicar la nueva configuración de módulos
97+ # Usamos restart, aunque 'force-reload' también es válido.
8398sudo systemctl restart lighttpd
84- echo " INFO: Lighttpd instalado y mod_userdir activado ."
99+ echo " INFO: Lighttpd instalado y módulos userdir/dirlisting activados ."
85100
86101# --- 2. Lógica de Construcción Condicional ---
87102
@@ -147,14 +162,23 @@ echo "--- 5. Configurando APT para usar el repositorio local (Userdir) ---"
147162
148163# Usamos el formato Userdir de Lighttpd: http://127.0.0.1/~<usuario>/
149164USER_NAME=$( whoami)
150- APT_SOURCE_LINE=" deb http://127.0.0.1/~${USER_NAME} /ch9/debian stable main"
165+ # CRÍTICO: Añadir [trusted=yes] para evitar el error de firma GPG en repositorios locales.
166+ REPO_WEB_PATH=" deb [trusted=yes] http://127.0.0.1/~${USER_NAME} /ch9/debian stable main"
151167
152168# 1. Eliminar cualquier fuente anterior del proyecto Channel9
153169sudo rm -f /etc/apt/sources.list.d/channel9.list
154170
155171# 2. Añadir la fuente del repositorio
156172echo " Añadiendo línea de repositorio: ${APT_SOURCE_LINE} "
157- sudo sh -c " echo \" ${APT_SOURCE_LINE} \" > /etc/apt/sources.list.d/channel9.list"
173+
174+
175+ # NUEVAS VARIABLES CRÍTICAS PARA public_html
176+ # LocalHost="127.0.0.1"
177+ # LINUX_USER="$(whoami)"
178+ # REPO_WEB_PATH="~${LINUX_USER}/ch9/debian stable main" # Incluye la parte ~usuario/
179+
180+ sudo sh -c " echo \" ${REPO_WEB_PATH} \" > /etc/apt/sources.list.d/channel9.list"
181+
158182
159183# 3. Actualizar el índice de paquetes
160184sudo apt update || { echo " 🚨 Error al actualizar APT. Compruebe la configuración de Lighttpd y la línea del repositorio." ; exit 1; }
@@ -272,14 +296,6 @@ else
272296 echo " 🚨 Error: ch9_infra_setup.sh no encontrado. No se configurará BIND9/Dominio/Cuentas de Correo."
273297fi
274298
275- # --- 9.1. controlamos si las interfaces de red usan nombres tradicionales (canonical) o no y los forzamos ---
276- echo " --- 9.1 comprobamos los nombres de las interfaces de red ---"
277- if [ -f " force_canonical_netnames.sh" ]; then
278- ./force_canonical_netnames.sh || { echo " 🚨 Error al comprobar los nombres de las interfaces." ; }
279- else
280- echo " 🚨 Error: force_canonical_netnames.sh no encontrado."
281- fi
282-
283299
284300# --- 10. FINALIZACIÓN ---
285301echo " --- 10. Finalización ---"
@@ -291,5 +307,4 @@ echo "======================================================================="
291307echo " ✅ INSTALACIÓN BASE COMPLETA DEL PROYECTO CHANNEL 9."
292308echo " ======================================================================="
293309echo " Tenga en cuenta que el bypass del portal cautivo (Android) NO se ha activado."
294- echo " 🚀 Ejecute ./ch9_ap_bypass.sh AHORA para configurar el bypass (Lighttpd/BIND9)."
295-
310+ echo " 🚀 Ejecute ./ch9_ap_bypass.sh AHORA para configurar el bypass (Lighttpd/BIND9)."
0 commit comments