Proyecto Fin de Grado (TFG) — Técnico Superior en Administración de Sistemas Informáticos en Red (ASIR)
Distribución Linux Live y portátil basada en Arch Linux, integrada con una plataforma web comunitaria para la compartición y descarga de entornos de trabajo personalizados.
- Abel Camacho Martín
- Adrián Casermeiro González
El proyecto SysFly surge para solucionar el problema de inconsistencia de los entornos de trabajo cuando los administradores y desarrolladores cambian de equipo físico. El sistema se compone de los siguientes elementos clave:
- La ISO (SysFly OS): Una distribución de Linux personalizada basada en Arch Linux, construida con
mkarchiso. Funciona como un sistema operativo portátil live con soporte de persistencia (graba los cambios del usuario en el USB). Viene preconfigurado con un escritorio gráfico ligero XFCE4, gestor LightDM y herramientas clave para perfiles técnicos (SysAdmins, DevOps y desarrolladores). Al arrancar, lanza un asistente interactivo (sysfly-setup) en consola para instalar el sistema de forma desatendida o perfilar la terminal con aliases y utilidades útiles de forma automática (según el perfil laboral elegido). - Página Web: Un portal comunitario desarrollado con Angular en el frontend y ASP.NET Core API (.NET 10) en el backend. Está diseñado para centralizar la descarga y compartición de imágenes ISO personalizadas creadas por los usuarios. La web incorpora funciones de red social: perfiles de usuario, publicación de posts sobre actualizaciones de sistemas, sistema de comentarios, me gustas, seguimiento de usuarios y una sección de chat privado interactivo en tiempo real mediante SignalR.
- El Despliegue (Infraestructura): Arquitectura cliente-servidor dockerizada con Docker Compose en producción. Está alojada en un servidor VPS de Ionos y protegida detrás de la red de Cloudflare (que gestiona las DNS, mitigación de ataques DDoS y caché de CDN). Las peticiones seguras de red HTTPS se gestionan mediante un proxy inverso con Nginx y Certbot para la obtención y autorenovación de certificados SSL/TLS de Let's Encrypt.
La plataforma web y su base de datos se encuentran desplegadas y accesibles en producción en la siguiente dirección:
- Enlace web: https://sysfly.es
- Distribución base: Arch Linux.
- Compilador de imagen: Archiso (
mkarchiso). - Entorno de escritorio: XFCE4 con gestor de inicio LightDM.
- Automatización del sistema: Scripts en Bash (
sysfly-setup,sysfly-install,sysfly-configure,sysfly-profile). - Cargadores de arranque: GRUB (compatible con UEFI) y Syslinux (compatible con BIOS heredada).
- Frontend: Angular 17, HTML5 semántico, TypeScript y estilos CSS puros (Vanilla CSS).
- Backend: ASP.NET Core API (.NET 10) y C#.
- Mensajería en Tiempo Real: SignalR (WebSockets).
- Base de Datos: MySQL.
- Contenerización: Docker y Docker Compose para empaquetado del frontend, backend y base de datos.
- Alojamiento (Hosting): Servidor VPS (Virtual Private Server) contratado en Ionos.
- Gestión de DNS y Seguridad: Cloudflare (CDN, enmascaramiento de IP y WAF de seguridad).
- Servidor Web y Proxy Inverso: Nginx configurado en el VPS de Ionos para redirigir peticiones HTTP/WebSockets y servir los ficheros estáticos de Angular.
- Cifrado en Tránsito: Certificados SSL/TLS gratuitos de Let's Encrypt administrados mediante Certbot con renovación automática.
- Automatización CI/CD: Workflows de GitHub Actions para compilar contenedores, subirlos a Docker Hub y realizar el despliegue automático mediante SSH en el VPS de Ionos.
SysFly/
├── archlive/ # Perfil mkarchiso — define la ISO
│ ├── profiledef.sh # Metadatos y configuración de la ISO
│ ├── packages.x86_64 # Lista de paquetes a instalar
│ ├── pacman.conf # Repositorios (incluye chaotic-aur)
│ ├── grub/
│ │ ├── grub.cfg # Menú de arranque GRUB (UEFI)
│ │ └── sysfly-background.png
│ ├── syslinux/
│ │ ├── syslinux.cfg # Menú de arranque Syslinux (BIOS)
│ │ └── sysfly_logo.png
│ └── airootfs/ # Overlay del sistema de ficheros live
│ ├── etc/
│ │ ├── hostname # Nombre del host live
│ │ ├── locale.conf # Idioma del sistema
│ │ ├── os-release # Identidad de SysFly OS
│ │ ├── lightdm/
│ │ │ └── lightdm.conf # Autologin en XFCE4
│ │ ├── sudoers.d/
│ │ │ └── 10-sysfly # Sudo sin contraseña para wheel
│ │ ├── mkinitcpio.conf.d/
│ │ │ └── archiso.conf # Hooks del initramfs live
│ │ └── systemd/system/
│ │ └── sysfly-wallpaper-fix.sh
│ ├── root/
│ │ ├── .bashrc # Shell personalizado con aliases y neofetch
│ │ └── .config/autostart/
│ │ └── sysfly-wallpaper.desktop
│ └── usr/local/bin/
│ ├── sysfly-setup # Wizard de bienvenida (TTY1)
│ ├── sysfly-install # Instalador en USB/Disco persistente
│ ├── sysfly-configure # Configuración chroot del sistema
│ └── sysfly-profile # Carga de perfiles laborales (.bashrc)
├── scripts/
│ └── build.sh # Automatización de compilación con Docker
├── Web/ # Código fuente del portal comunitario
│ ├── Client/ # Código de la SPA en Angular
│ └── Server/ # Código de la API en C# (.NET Core)
├── Base de datos/ # Esquema relacional y diagrama E/R
├── docker/ # Dockerfiles optimizados para desarrollo y producción
├── doc/ # Memoria, diarios de trabajo y guías técnicas
├── images/ # Assets gráficos del proyecto
├── iso-output/ # Carpeta de salida de la ISO compilada (ignorada)
├── Dockerfile # Imagen Docker para compilar la ISO
└── README.md
| Categoría | Herramientas |
|---|---|
| DevOps | Docker, Docker Compose, Terraform, Ansible |
| Escritorio | XFCE4, LightDM, Thunar, Mousepad |
| Red/Seguridad | nmap, tcpdump, ethtool, openssh, iwd, curl, wget |
| Administración | htop, btop, testdisk, parted, gptfdisk, ddrescue |
| Sistemas de ficheros | ntfs-3g, exfatprogs, btrfs-progs, xfsprogs |
| Desarrollo | git, python, pip, vim, neovim, tmux |
| Recovery | smartmontools, ddrescue, clonezilla |
| Boot | GRUB, Syslinux, rEFInd, memtest86+ |
Para generar la imagen del sistema operativo personalizada desde el código fuente, sigue estos pasos:
- Docker instalado y en ejecución en tu equipo.
# Desde la raíz del proyecto
bash scripts/build.shbash scripts/build.sh --clean→ Limpia los contenedores e imágenes de builds anteriores.bash scripts/build.sh --no-cache→ Compila la ISO sin usar la caché de Docker.
La imagen final se guardará en: iso-output/sysfly_os-XXXX.iso.
Para crear un USB de arranque con SysFly OS, se recomienda utilizar Rufus en Windows o la utilidad dd en Linux:
- Conecta un pendrive USB al equipo (se borrarán los datos existentes).
- Ejecuta Rufus y selecciona el pendrive en "Dispositivo".
- En "Elección de arranque", pulsa "Seleccionar" y escoge la ISO compilada.
- Pulsa Empezar.
- [IMPORTANTE] Cuando Rufus te pregunte, selecciona escribir en modo Imagen DD.
- Identifica el puerto de tu unidad USB con
lsblk(ej./dev/sdX). - Ejecuta el comando de volcado de imagen:
sudo dd if=iso-output/sysfly_os-XXXX.iso of=/dev/sdX bs=4M status=progress conv=fdatasync
- Arranca el PC con el USB grabado de SysFly OS.
- Al iniciar, se cargará automáticamente en el TTY1 el asistente de bienvenida interactivo.
- Elige la opción 1 (Instalar SysFly OS) o escribe directamente en la terminal:
sysfly-install
- El asistente de instalación automática offline te guiará para:
- Elegir el disco destino (particionado automático en GPT: EFI + ROOT).
- Configurar tu usuario, contraseña y nombre de host.
- Elegir tu perfil laboral de atajos (SysAdmin, DevOps o Developer).
- Habilitar los servicios necesarios (Docker, LightDM, NetworkManager, SSH...).