Despliegue y permisos

generate: errores Read-only file system en archivos de una ISO

Los contenidos de una ISO montada se mantienen en solo lectura. La versión 5.0.6 evita cambiar sus permisos y mantiene isolinux.bin, EFI y las ISOs internas en Browse contents, sin convertirlos en descargas independientes del catálogo.

Actualizar generate.sh y src/common.py juntos desde el ZIP, conservando fast-boot.json y las listas locales. Después repetir únicamente la generación:

sudo bash generate.sh --verbose

No es necesario volver a descargar ni desplegar las ISOs. Los permisos de archivos gestionados en sistemas escribibles siguen normalizándose.

Dos listas: ligeras en RAM, pesadas en disco

light-url.txt reúne 29 recursos, incluidos Alpine Netboot y Standard; heavy-url.txt reúne 20, incluidos Extended, cloud, Ubuntu y Boot-Repair. Solo hay una ISO Arch. Los pequeños clientes iPXE de Arch quedan en RAM; sus ISOs quedan en disco para evitar dos copias grandes en memoria.

Las listas son editables. Ambos destinos publican en el mismo html; generate rastrea los enlaces RAM y las carpetas físicas juntos. Cada fase se ejecuta por separado:

# Light selection: cache, then RAM
sudo bash download.sh --list light --verbose
sudo bash deploy.sh ram --list light --verbose

# Heavy selection: same cache, then persistent disk
sudo bash download.sh --list heavy --verbose
sudo bash deploy.sh disk --list heavy --verbose

# One catalogue from both deployments
sudo bash generate.sh --verbose

También se puede seleccionar directamente un archivo. deploy solo usa las copias del cache; una descarga ausente aparece como fallo y nunca se descarga durante deploy:

sudo bash download.sh --url-file light-url.txt --verbose
sudo bash deploy.sh ram --url-file light-url.txt --verbose

# Inspect the selection before making changes
bash deploy.sh disk --list heavy --dry-run

Las ISOs locales de asistencia no tienen una URL remota inventada. Si ya están en el cache, desplegarlas también en RAM antes de generate, o añadir su URL real a light-url.txt cuando esté publicada:

sudo bash deploy.sh ram --only assist --verbose
sudo bash generate.sh --verbose

url.txt conserva la lista conjunta por compatibilidad. Sin selector, deploy continúa leyendo todo el cache. download conserva los registros de las dos listas entre ejecuciones. FTP replica el conjunto completo y no acepta filtros de lista.

Pasar una ISO gestionada de RAM a disk actualiza sus enlaces y desmonta su montaje anterior. La copia antigua permanece en tmpfs: apartarla después de verificar el despliegue en disco para recuperar memoria. No retirar todo /dev/shm ni archivos ajenos.

Nginx: certificado compartido ntp1.1-s.eu

El nginx conjunto utiliza /etc/letsencrypt/live/ntp1.1-s.eu/fullchain.pem y privkey.pem para aux, pxe y tec. Verificar que subjectAltName incluye los seis dominios .es/.eu; el nombre de la carpeta no garantiza esa cobertura:

sudo openssl x509 \
  -in /etc/letsencrypt/live/ntp1.1-s.eu/fullchain.pem \
  -noout -ext subjectAltName

# Test the installed configuration before reloading
sudo nginx -t && sudo systemctl reload nginx

Configuración conjunta AUX / PXE / TEC

RAM y pruebas desde cero

Comprobar free -h, df y findmnt. El objetivo es 22 GB para el catálogo RAM. No modificar un tmpfs que contenga montajes activos; preparar un destino vacío para una prueba aislada. Los archivos comprimidos requieren su copia y extracción. Ubuntu y Boot-Repair forman parte de heavy; las instrucciones antiguas para retirarlos han quedado reemplazadas.

Prueba Alpine desde cero

FTP / Bastion: publicar html e ISOs en /

Primero preparar RAM o disco y ejecutar generate. FTP publica el contenido de html/ y los archivos del cache en la misma raíz remota: /assets/, /index.php y /imagen.iso. Los archivos internos de las ISOs se sirven desde Excalibur. Las fases se ejecutan por separado.

# Inspect the merge without connecting
sudo bash deploy.sh ftp \
  --output /var/www/aux.1-s.es/html \
  --cache /var/www/aux.1-s.es/isos \
  --ram-dir /dev/shm/aux-fast-boot \
  --ftp-root / --dry-run

# Replace host/user; password is requested privately
sudo bash deploy.sh ftp \
  --output /var/www/aux.1-s.es/html \
  --cache /var/www/aux.1-s.es/isos \
  --ram-dir /dev/shm/aux-fast-boot \
  --ftp-host HOST_FTP --ftp-user USUARIO_FTP \
  --ftp-root / --verbose

Usar el ram-dir real. Si la cuenta publica desde /www, sustituir ftp-root por /www. FTPS explícito es el valor predeterminado; --no-ftp-tls selecciona FTP sin cifrar. No poner la contraseña en el comando ni en fast-boot.json. Repetir el mismo deploy permite reanudar archivos parciales.

Detalles de FTP, verificación y réplica

Propietario, grupo y permisos de download / deploy / generate

Los archivos gestionados quedan con 0644; directorios y scripts ejecutables con 0755. Las fases reparan los archivos reutilizados. Con sudo en Fedora y grupo nginx disponible, el valor predeterminado es root:nginx: el servidor puede leer y el propietario administra. Sin ese grupo se conserva el grupo del proceso; sin sudo se utiliza el usuario y grupo del proceso.

# Explicit Fedora owner/group; each phase remains independent
sudo bash download.sh --list light --user root --group nginx --verbose
sudo bash deploy.sh ram --list light --user root --group nginx --verbose
sudo bash generate.sh --user root --group nginx --verbose

# Equivalent persistent deployment
sudo bash deploy.sh disk --list heavy --user root --group nginx --verbose

owner y group también se admiten en fast-boot.json. Solo se ajustan los archivos creados o gestionados por las fases; los enlaces no cambian propietarios de destinos externos. Las ISOs montadas en solo lectura conservan sus permisos de origen. Los JSON privados de TEC siguen fuera de la web.

FTP asigna el propietario de la cuenta del alojamiento. chown local no cambia ese propietario remoto. deploy ftp intenta SITE CHMOD 0755 en las carpetas publicadas y 0644 en los archivos; si el servidor no admite SITE CHMOD, se indica y los modos dependen del alojamiento.

# Inspect SELinux before applying a mount context
ls -lZ /var/www/aux.1-s.es/html
sudo restorecon -Rv /var/www/aux.1-s.es/html

# Read-only RAM ISO mounts can receive an HTTP-readable context
sudo bash deploy.sh ram --list light \
  --mount-context system_u:object_r:httpd_sys_content_t:s0 \
  --user root --group nginx --verbose

SELinux se comprueba aparte de chmod/chown. Un montaje ISO de solo lectura no se reetiqueta con restorecon; utilizar mount-context al desplegar y revisar los AVC del servidor.

Catálogo 5.1.0: RAM y disco

29 entradas light y 20 heavy. AUX Rescue local no tiene URL inventada: añadir su imagen real explícitamente. Debian testing pasa a disco; Ubuntu LTS y Boot-Repair vuelven a heavy. Se retira Rawhide y el alias duplicado de Arch de las listas activas; no se borran archivos existentes.

Presupuesto: 22 GB de RAM y 120 GB de disco, unidades decimales. Las previsiones anteriores (15–16 GB en RAM y 57–69 GB de caché total) son estimaciones, no tamaños medidos. Comprobar el consumo real y archivos temporales antes de desplegar. Cambiar listas no retira imágenes antiguas de RAM o caché.

free -h
df -B1 /dev/shm /var/www/aux.1-s.es
du -B1 -s /var/www/aux.1-s.es/isos
findmnt -R /dev/shm

El control de espacio existente evita superar el espacio libre del tmpfs, pero las listas no establecen por sí solas una cuota de 22 GB. Para imponerla aisladamente, preparar un tmpfs dedicado de size=22000000000 en un directorio vacío, configurar ram_dir hacia él y migrar los montajes de forma controlada. No reducir ni sustituir un tmpfs que contenga montajes activos. El disco debe reservar margen para actualizaciones y extracciones; una copia FTP preparada localmente cuenta también.