Skip to content

abelcm214/SysFly

Repository files navigation

SysFly

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.


Autores del Proyecto

  • Abel Camacho Martín
  • Adrián Casermeiro González

Descripción del Proyecto

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.

URL de Despliegue de la Aplicación

La plataforma web y su base de datos se encuentran desplegadas y accesibles en producción en la siguiente dirección:

URL del video

https://youtu.be/6azIGZVYvMU


Tecnologías Utilizadas

SysFly OS (Sistema Operativo)

  • 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).

Plataforma Web

  • 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.

Infraestructura y Servidores

  • 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.

Estructura del Repositorio

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

Herramientas Incluidas en la ISO (SysFly OS)

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+

Cómo construir la ISO

Para generar la imagen del sistema operativo personalizada desde el código fuente, sigue estos pasos:

Requisitos

  • Docker instalado y en ejecución en tu equipo.

Compilación rápida (Recomendado)

# Desde la raíz del proyecto
bash scripts/build.sh

Opciones de compilación

  • bash 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.


Grabación de la ISO en un USB (Modo Live)

Para crear un USB de arranque con SysFly OS, se recomienda utilizar Rufus en Windows o la utilidad dd en Linux:

Con Rufus (Windows)

  1. Conecta un pendrive USB al equipo (se borrarán los datos existentes).
  2. Ejecuta Rufus y selecciona el pendrive en "Dispositivo".
  3. En "Elección de arranque", pulsa "Seleccionar" y escoge la ISO compilada.
  4. Pulsa Empezar.
  5. [IMPORTANTE] Cuando Rufus te pregunte, selecciona escribir en modo Imagen DD.

Con dd (Linux)

  1. Identifica el puerto de tu unidad USB con lsblk (ej. /dev/sdX).
  2. 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

Instalación en USB/Disco Duro Persistente

  1. Arranca el PC con el USB grabado de SysFly OS.
  2. Al iniciar, se cargará automáticamente en el TTY1 el asistente de bienvenida interactivo.
  3. Elige la opción 1 (Instalar SysFly OS) o escribe directamente en la terminal:
    sysfly-install
  4. 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...).

About

TFG - ASIR

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors