4 puntos por GN⁺ 3 일 전 | 1 comentarios | Compartir por WhatsApp
  • Un OS de servidor Linux diseñado exclusivamente para contenedores Docker: al arrancar el ISO entras de inmediato en un entorno con Docker Engine
  • Mantiene el sistema central con una arquitectura inmutable y sin estado, y separa /etc, /var, /home y los datos de Docker en áreas de escritura independientes, reduciendo mucho la carga de instalación y configuración inicial
  • El sistema de archivos de datos predeterminado es un almacenamiento volátil basado en tmpfs; al activar la persistencia detecta automáticamente un dispositivo de almacenamiento aparte, lo particiona, formatea y monta, y si hace falta también lo configura como Btrfs RAID1
  • Usa una raíz de solo lectura basada en squashfs y componentes mínimos para reducir la superficie expuesta a malware o cambios no intencionales, además de bajar el uso de recursos y el consumo eléctrico
  • Solo para x86-64, funciona en bare metal y máquinas virtuales, y permite enfocarse de inmediato en ejecutar contenedores y operar servicios self-hosted más que en administrar el servidor en sí

Resumen

  • Es un OS de servidor Linux diseñado exclusivamente para contenedores Docker; si haces un arranque live desde el ISO, entras directamente en un entorno con Docker Engine
  • Para reducir la carga de instalación y configuración inicial, mantiene el sistema central como una estructura inmutable y separa los datos y la personalización del usuario en áreas de almacenamiento independientes
  • Apunta a homelabs, bare metal, entornos virtualizados, nodos edge y hasta clústeres, pero la arquitectura compatible está limitada a x86-64
  • Prioriza una configuración mínima y la facilidad de uso para que puedas concentrarte más en ejecutar y operar contenedores que en la administración del servidor

Características principales

  • Es de tipo plug and play: basta con descargar el ISO y arrancarlo para tener listo un Docker Engine con las herramientas necesarias
  • Minimiza los componentes para reducir la curva de aprendizaje y permitir entender rápido cómo funciona el sistema
  • Usa un núcleo inmutable y sin estado para reducir la superficie expuesta a malware y cambios accidentales, y arranca siempre en el mismo estado
  • Ofrece persistencia opcional; el sistema de archivos de datos predeterminado es tmpfs volátil en RAM, y al activar la persistencia detecta, particiona, formatea y monta automáticamente un dispositivo de almacenamiento aparte
  • Reduce procesos innecesarios para bajar el uso de recursos y el consumo eléctrico, permitiendo aprovechar por más tiempo equipos viejos o de bajos recursos
  • Facilita el self-hosting para reducir la dependencia de Big Tech y permitir administrar directamente tus datos y tu privacidad

Cómo empezar

  • Puedes descargar el ISO más reciente o bajar la imagen desde la sección de descargas, grabarla en un USB y arrancar desde ahí
  • En algunos sistemas puede ser necesario desactivar safe boot en el BIOS antes de arrancar
  • El inicio de sesión por defecto usa el nombre de usuario op y la contraseña opsecret; antes de exponerlo a Internet, como mínimo debes cambiar la contraseña
  • El Wi‑Fi puede configurarse opcionalmente con setup-wifi
  • La ejecución de contenedores es igual que con Docker normal; como ejemplo se usa docker run -it --rm busybox ps
  • Al activar la persistencia, el magic header debe escribirse en un dispositivo de bloques, no en una partición, y este proceso borra los datos existentes

Estructura de arranque y ejecución

  • El ISO puede arrancar tanto en bare metal como en máquinas virtuales, y soporta tanto UEFI como BIOS tradicional
  • El proceso de inicio usa un sistema init similar a sysv para mantener un flujo de arranque simple y transparente
  • El bootloader carga en memoria el kernel de Linux y el sistema de archivos raíz, luego el kernel inicializa el hardware y cede el control a /init
  • init lee /etc/inittab, monta tmpfs para /tmp y /run, y luego ejecuta los scripts de /etc/init.d
  • En una fase temprana monta el data filesystem para proporcionar los datos de Docker y la capa superior de overlay para /etc, /var y /home
  • Una vez que todos los sistemas de archivos y overlays están listos, se inician los servicios restantes, y desde ese momento ya puede servir contenedores

Diseño de inmutabilidad

  • El sistema de archivos raíz se entrega como una imagen estática comprimida squashfs, con una estructura que no puede modificarse por sí sola
  • Gracias a esto, el software esencial y la configuración ya vienen incluidos, por lo que se vuelve una imagen autosuficiente que puede arrancar sin proceso de instalación
  • Evita gestores de paquetes, manejo de dependencias y la competencia con actualizaciones sobre un sistema existente, reemplazando la tarea de volver a instalar algo que ya funciona por un simple reinicio
  • Los archivos del sistema de archivos raíz no pueden borrarse por accidente ni modificarse por virus, y a diferencia de un sistema tradicional, no expone el kernel ni los binarios base a un estado completamente modificable
  • Al tener una raíz de solo lectura, evita la acumulación de basura que suele quedar con el tiempo y perjudica respaldos, rendimiento y limpieza del sistema
  • Puedes probar libremente en una VM local o en otra computadora, y revertir los cambios con solo reiniciar
  • El medio de arranque no contiene información importante y conserva ese estado gracias a la inmutabilidad, así que aunque el dispositivo se dañe o se pierda, puede recuperarse con una copia nueva

Estructura de persistencia

  • Para instalar y ejecutar contenedores, cambiar configuraciones y escribir datos, se necesita un sistema de archivos escribible; si quieres conservarlo después de reiniciar, hace falta persistencia
  • En una etapa temprana del arranque, un subsistema que se ejecuta automáticamente monta el data filesystem en /mnt/lightwhale-data
  • Los datos que escribe Lightwhale se agrupan bajo /mnt/lightwhale-data/lightwhale-state, y ese directorio se convierte en la capa superior escribible de overlayfs
  • El valor por defecto es tmpfs volátil, y al activar la persistencia el data filesystem pasa a ubicarse en un dispositivo de almacenamiento separado
  • En vez de superponer toda la raíz, solo aplica overlay de forma selectiva sobre /etc, /var y /home para conservar el objetivo de la inmutabilidad
    • /etc se usa para personalizar configuraciones del sistema como red, contraseñas y sshd
    • /var se usa para logs y otros datos de aplicaciones
    • /home se usa para personalizaciones del usuario como claves SSH autorizadas, clonar repositorios Git y administrar stacks de Docker o Swarm
  • El data root de Docker se ubica directamente en /mnt/lightwhale-data/lightwhale-state/docker, donde guarda el estado de imágenes, contenedores, volúmenes y redes

Activación de la persistencia y pasos automáticos

  • La persistencia debe activarse explícitamente escribiendo un magic header en el dispositivo de almacenamiento, por ejemplo con echo "lightwhale-please-format-me" | sudo dd conv=notrunc of=/dev/sdx
  • Puedes escribir el magic header en varios dispositivos de almacenamiento y, en ese caso, se combinarán como un volumen Btrfs RAID1
  • En el siguiente arranque, el sistema detectará los magic disks, los formateará y los usará como data filesystem
  • El persistence subsystem se inicia desde /etc/init.d/S11persistence
  • Detección del sistema de archivos de datos

    • Revisa todos los discos para encontrar una partición cuya etiqueta del sistema de archivos sea lightwhale-data
    • Si la encuentra, la usa como data filesystem y salta a la etapa de montaje
  • Detección de magic disks y creación de particiones

    • Identifica un magic disk buscando la secuencia de bytes lightwhale-please-format-me al inicio del disco
    • En cada magic disk crea una partición swap con etiqueta lightwhale-swap y una partición Linux con etiqueta lightwhale-data que usa todo el espacio restante
  • Creación del sistema de archivos

    • Las particiones swap mágicas se formatean y reciben la etiqueta lightwhale-swap
    • Si hay una sola partición de datos mágica, se formatea con btrfs --data single --metadata dup
    • Si hay varias, se agrupan en RAID1 y se formatean con btrfs --data raid1 --metadata raid1cn
    • Se crean los subvolúmenes @lightwhale-data, @lightwhale-state y @lightwhale-state-snapshots
  • Montaje y configuración de overlay

    • Si existe un data filesystem, monta @lightwhale-data en /mnt/lightwhale-data; si no, monta tmpfs en su lugar
    • La capa inferior inmutable hace un bind mount de /etc en /run/lightwhale/overlay/lower/etc y prepara un espejo del árbol de directorios del sistema de archivos raíz
    • La capa superior escribible se prepara en rutas como /mnt/lightwhale-data/lightwhale-state/overlay/upper/etc
    • Después combina ambas capas con overlayfs y las monta en /etc, repitiendo el mismo método para /var y /home

Restricciones y puntos clave del FAQ

  • El hardware compatible es solo x86-64 y soporta tanto BIOS como EFI
  • Raspberry Pi no está soportado actualmente y está en el backlog
  • Apple M-series no está soportado en bare metal, pero sí puede ejecutarse virtualizado
  • Puede ejecutarse en entornos virtuales como VMWare/ESX/Proxmox/cloud, e incluye agentes de invitado para QEMU/KVM y VMware ESXi
  • El software solo puede instalarse como contenedores Docker; no es posible instalarlo directamente en el sistema de archivos raíz
  • El sistema central es inmutable, pero la configuración, la personalización y los datos de contenedores se escriben por defecto en memoria y solo se conservan tras reiniciar cuando se activa la persistencia
  • El hostname predeterminado incluye el machine ID para evitar conflictos de red; si lo cambias con setup-hostname, se aplica de inmediato salvo en la shell actual
  • No hay garantías y el usuario asume la responsabilidad por los resultados de uso
  • No busca agregar herramientas preferidas como wget o nano al sistema de archivos raíz, sino mantener la restricción de ser un OS de servidor mínimo y especializado en su propósito
  • En el TL;DR de la política de privacidad, no recopila datos personales y solo recolecta datos anónimos si aceptas la telemetría; además, puedes revisar exactamente qué se recopila
  • El cumplimiento de regulaciones relacionadas con la edad no recae en el OS, sino en la responsabilidad de los servicios del usuario desplegados sobre él

Enlaces relacionados

1 comentarios

 
GN⁺ 3 일 전
Comentarios en Hacker News
  • Hay que felicitar que realmente hayan lanzado algo, pero todavía no me queda claro por qué uno querría usar esto
    Ya existen alternativas con objetivos parecidos, como Flatcar Container Linux, Fedora CoreOS, Talos Linux e IncusOS, y parecen tener comunidades o respaldo comercial más sólidos
    Tendrían que explicar con más claridad qué lo hace diferente para que resulte convincente

    • Uso IncusOS en mi homelab, y la experiencia de configuración y uso es realmente muy buena
      Me cambié desde Proxmox y ahora administro todas mis VM ahí, y además uso bastante asistentes de código para automatizar la configuración del CLI de IncusOS, convertir imágenes de Docker-Compose a Incus y escribir scripts bash para levantar contenedores nuevos sin preocuparme de usar --dangerously-skip-permissions
      Lo mejor es que se puede administrar con archivos declarativos, así que la configuración de red y de recursos siempre queda muy visible
      Si buscas algo para un uso parecido, vale la pena echarle un vistazo a IncusOS
    • Ese tipo de herramientas normalmente toma horas de configuración, mientras que esto simplemente arranca y ya queda funcionando
  • Mientras exista software, no se puede saltar el mantenimiento
    Nada está libre de errores, y decir que no hacen falta upgrades, parches ni administración suele ser el camino más rápido a un sistema comprometido

    • No creo que este OS esté diciendo que no requiere mantenimiento
      Más bien reduce buena parte del mantenimiento que normalmente tendrías con un sistema base tradicional, porque 1) casi no tiene nada instalado y 2) actualizar la base es fácil: reinicias y vuelves a levantar los contenedores
      Claro, el software que corre encima igual necesita upgrades, pero si está basado en Docker esa capa normalmente se administra por otro lado, así que basta con bajar el contenedor nuevo y reiniciarlo, y el OS más bien se encarga de asegurar que los datos queden montados en el mismo lugar
      Si te parece bien correr todo en Docker, se ve como una opción un paso más allá de Debian o Redhat, y con menos complejidad procedimental que CoreOS
      Qué tan cómodo sea de usar en la práctica todavía me deja dudas, sobre todo por el manejo de almacenamiento, pero al menos está muy claro qué es lo que quiere vender
    • Llevo años diciendo esto
      El self-hosting es posible, pero en la práctica terminas cargando con un SLA incluso en tu tiempo libre fuera del horario laboral
      Por eso hace mucho tiempo eliminé todo lo que tuviera más de 1 usuario
    • Obviamente nada está completamente libre de errores
      Aun así, hay una razón por la que existen proyectos como Talos
      Si quitas la terminal, SSH, el gestor de paquetes, dejas el sistema de archivos en solo lectura, sacas systemd y minimizas la cantidad de ejecutables, la superficie de ataque claramente se reduce
      No hablo específicamente del proyecto de aquí, pero sí existen sistemas que son más seguros y además requieren menos mantenimiento
      Como nunca vas a poder ser 100% seguro, eso no significa que la respuesta sea aceptar a lo YOLO cualquier paquete npm modificado hace 3 minutos
  • Se ve interesante, pero me pregunto cómo manejan los parches, las actualizaciones y la construcción de su propio ISO
    Incluso viendo el repositorio de código, esa parte casi no se muestra

    The actual repository here hosts the source code for Lightwhale, and is not of any interest for most people.

    https://bitbucket.org/asklandd/lightwhale/src/master/

    • El repositorio se ve desactualizado
      El último commit fue hace 2 años y no parece estar el código fuente de la versión 3.0
  • ¿Esto no es una distro de Linux en vez de un OS?

    • Si no fuera una distro de Linux, entonces preguntaría qué sí cuenta como OS
  • Siento que en este tema sigo siendo casi principiante, pero llevo más de 10 años con self-hosting y desde alrededor de 2019 me cambié a Unraid
    Como está centrado en un portal web, era fácil de manejar y cómodo de mantener
    Me da curiosidad cómo se interactúa con este OS para servidor casero
    Como no veo imágenes en el sitio, me hace pensar que quizá todo se maneja desde terminal

  • Acabo de instalar Docker en Ubuntu Server con una sola línea y empecé a usarlo de inmediato, así que no me queda claro qué cambia aquí exactamente ni cuál es la propuesta de valor
    También me da curiosidad a qué se refieren exactamente con mantenimiento, y si es un servidor más liviano pensado para correr en hardware menos potente
    Apenas estoy empezando con un setup de servidor casero y quiero entender sinceramente qué ventajas tendría

    • Yo hago exactamente lo mismo
      Dicen que la ventaja del enfoque immutable está en las actualizaciones: si pasas a una versión nueva de la imagen y algo sale mal, simplemente puedes volver arrancando la versión anterior
      Pero en funcionalidad, yo también siento que con Ubuntu Server es suficiente
      Unas cuantas veces al año corro apt update y hago upgrades, y solo accedo de forma local o mediante Tailscale
      Este tipo de OS inmutable me parece más atractivo para una laptop o desktop que para un servidor casero
      Como solo el directorio personal queda escribible, se espera que el OS sea más estable y más difícil de romper
  • Me gustaría saber cuál es la forma recomendada de hacer respaldos periódicos de los datos de contenedores que corren en Lightwhale

  • No lo entiendo
    Si solo voy a correr Docker, no veo por qué necesitaría algo immutable, ni por qué haría falta una variante especial de Debian en vez de Debian o Ubuntu, donde puedes levantar Docker en pocos minutos
    Además, el mantenimiento igual se puede manejar con el gestor de paquetes usando los repositorios de la distro o el repositorio oficial de Docker
    Ojalá esta moda de lo immutable desaparezca un poco; lo mismo pienso de flatpak y snap
    Linux ya hacía desde antes lo que estas soluciones dicen venir a resolver
    Sin root, el usuario no puede tocar el sistema base, y las aplicaciones pueden instalar sus dependencias en /usr/lib

    • Para mí, Debian stable con podman/Docker ya es suficientemente inmutable
      Y si algo se complica, poder encontrar ayuda fácilmente también es una gran garantía
      Seguro se puede hacer más pequeño, pero si ya corre bien incluso en hardware raro como una BananaPi de bajos recursos o un RISC-V barato, cuesta ver por qué querría otra cosa
  • Esto parece que encajaría bastante bien en un clúster en modo Swarm
    No sé si está enfocado solo en servidores caseros, pero pienso seguirle la pista
    El proyecto se ve muy bueno

    • Por ahora lo estamos dando a conocer solo en el espacio de servidores caseros, porque es donde la gente más se anima a probar algo sin tanta fricción
      Pero Lightwhale ya está corriendo en producción y también encaja muy bien para clústeres Swarm
  • Se ve súper limpio
    Desde la perspectiva de un principiante, justo hace falta este tipo de enfoque que evita que uno rompa la configuración, así que definitivamente quiero probarlo