Lightwhale 3: tornando os servidores Linux divertidos novamente
(lightwhale.asklandd.dk)- Um sistema operacional de servidor Linux projetado exclusivamente para contêineres Docker; basta inicializar pela ISO para entrar diretamente em um ambiente com Docker Engine
- Mantém o sistema central em uma estrutura imutável e sem estado, separando
/etc,/var,/homee os dados do Docker em áreas de escrita dedicadas, reduzindo bastante o trabalho de instalação e configuração inicial - O sistema de arquivos de dados padrão é um armazenamento volátil baseado em tmpfs; ao ativar a persistência, ele detecta automaticamente um dispositivo de armazenamento separado, faz particionamento, formatação e montagem, e pode até ser configurado com Btrfs RAID1 se necessário
- Usa uma raiz somente leitura baseada em
squashfse componentes mínimos para reduzir a superfície de exposição a malware ou modificações acidentais, além de diminuir o uso de recursos e o consumo de energia - Exclusivo para x86-64, funciona em bare metal e máquinas virtuais, permitindo focar imediatamente na execução de contêineres e em operações de self-hosting, em vez da administração do servidor em si
Visão geral
- É um sistema operacional de servidor Linux projetado exclusivamente para contêineres Docker; ao iniciar a ISO em modo live, você entra diretamente em um ambiente com Docker Engine
- Para reduzir a carga de instalação e configuração inicial, o sistema central permanece imutável, enquanto dados e personalizações do usuário ficam separados em áreas de armazenamento dedicadas
- Mira desde homelabs, bare metal, ambientes virtualizados, nós de edge e clusters, mas a arquitetura suportada é limitada a x86-64
- Prioriza uma composição mínima e facilidade de uso, fazendo com que o foco fique na execução e operação dos contêineres, e não na administração do servidor
Principais características
- Funciona no estilo plug and play: basta baixar a ISO e inicializar para ter imediatamente um Docker Engine pronto com as ferramentas necessárias
- Minimiza os componentes para reduzir a curva de aprendizado e permitir entender rapidamente o funcionamento do sistema
- Usa um núcleo imutável e sem estado para reduzir a superfície de exposição a malware e alterações acidentais, iniciando sempre no mesmo estado
- Oferece persistência opcional; o sistema de arquivos de dados padrão é o
tmpfsvolátil em RAM, e ao ativá-la o sistema detecta automaticamente um dispositivo de armazenamento separado, faz particionamento, formatação e montagem - Reduz processos desnecessários para diminuir uso de recursos e consumo de energia, ajudando a prolongar a vida útil de hardware antigo ou de baixo desempenho
- Facilita o self-hosting, ajudando a se desvincular da dependência de Big Tech e a gerenciar diretamente seus dados e sua privacidade
Como começar
- Basta baixar a ISO mais recente ou uma imagem na seção de downloads, gravá-la em um USB e inicializar
- Em alguns sistemas, pode ser necessário desativar o safe boot no BIOS antes de iniciar
- O login padrão usa nome de usuário
ope senhaopsecret; antes de expor o sistema à internet, o mínimo necessário é trocar a senha - O Wi‑Fi pode ser configurado opcionalmente com
setup-wifi - A execução de contêineres é igual ao uso normal do Docker; o exemplo fornecido é
docker run -it --rm busybox ps - Ao ativar a persistência, é preciso gravar o magic header em um dispositivo de bloco, não em uma partição; esse processo apaga os dados existentes
Estrutura de boot e execução
- A ISO pode iniciar em bare metal e máquinas virtuais, com suporte tanto a UEFI quanto a BIOS tradicional
- O processo de inicialização usa um sistema init semelhante ao sysv para manter um fluxo de boot simples e transparente
- O bootloader carrega o kernel Linux e o sistema de arquivos raiz na memória, depois o kernel inicializa o hardware e transfere o controle para
/init - O
initlê/etc/inittab, montatmpfspara/tmpe/rune então executa os scripts em/etc/init.d - No início, o data filesystem é montado para fornecer os dados do Docker e a camada superior de escrita do overlay de
/etc,/vare/home - Depois que todos os sistemas de arquivos e overlays estão prontos, os demais serviços são iniciados, e a partir desse ponto os contêineres já podem ser atendidos
Projeto de imutabilidade
- O sistema de arquivos raiz é fornecido como uma imagem estática compactada
squashfs, com uma estrutura que não pode ser modificada diretamente - Graças a isso, o software e as configurações essenciais já vêm incluídos, formando uma imagem autossuficiente e inicializável sem processo de instalação
- Evita gerenciador de pacotes, gerenciamento de dependências e disputas com atualizações de sistemas convencionais, substituindo o trabalho de reinstalar algo que já funciona por um simples reboot
- Os arquivos do sistema de arquivos raiz não podem ser apagados acidentalmente nem modificados por vírus, e o sistema não expõe kernel e binários básicos como tradicionalmente mutáveis
- Por ser uma raiz somente leitura, evita o acúmulo de bagunça que costuma surgir em operações de longo prazo e prejudicar backups, desempenho e organização
- É possível testar livremente em uma VM local ou em outro computador e desfazer alterações com um reboot
- O meio de boot não contém informações importantes e, como a imutabilidade preserva esse estado, mesmo que o dispositivo seja danificado ou perdido, é possível recuperar com uma nova cópia
Estrutura de persistência
- Instalar e executar contêineres, alterar configurações e gravar dados exige um sistema de arquivos gravável; para manter isso após reinicializações, é necessária persistência
- Um subsistema executado automaticamente no início do boot monta o data filesystem em
/mnt/lightwhale-data - Os dados gravados pelo Lightwhale ficam em
/mnt/lightwhale-data/lightwhale-state, e esse diretório se torna a camada superior gravável dooverlayfs - O padrão é o
tmpfsvolátil; ao ativar a persistência, o data filesystem passa a ficar em um dispositivo de armazenamento separado - Em vez de sobrepor a raiz inteira, apenas
/etc,/vare/homerecebem overlay seletivo, preservando o propósito da imutabilidade/etcé usado para personalizações de configuração do sistema, como rede, senha esshd/varé usado para logs e outros dados de aplicações/homeé usado para personalizações do usuário, como chaves SSH autorizadas, clonagem de repositórios Git e gerenciamento de stacks Docker/Swarm
- O data root do Docker fica diretamente em
/mnt/lightwhale-data/lightwhale-state/docker, armazenando o estado de imagens, contêineres, volumes e redes
Ativação da persistência e etapas automáticas
- A persistência só é ativada explicitamente ao gravar um magic header em um dispositivo de armazenamento, como em
echo "lightwhale-please-format-me" | sudo dd conv=notrunc of=/dev/sdx - É possível gravar o magic header em vários dispositivos de armazenamento; nesse caso, eles são combinados em um volume Btrfs RAID1
- No boot seguinte, o sistema detecta os discos mágicos, formata-os e os usa como data filesystem
- O subsistema de persistência é iniciado em
/etc/init.d/S11persistence -
Detecção do sistema de arquivos de dados
- Examina todos os discos em busca de partições com o rótulo de sistema de arquivos
lightwhale-data - Se encontrar, usa esse sistema de arquivos como data filesystem e pula para a etapa de montagem
- Examina todos os discos em busca de partições com o rótulo de sistema de arquivos
-
Detecção de magic disks e criação de partições
- Identifica magic disks procurando a sequência de bytes
lightwhale-please-format-meno início do disco - Em cada magic disk, cria uma partição swap com rótulo
lightwhale-swape uma partição Linux com rótulolightwhale-datausando todo o espaço restante
- Identifica magic disks procurando a sequência de bytes
-
Criação do sistema de arquivos
- As partições swap mágicas são formatadas e recebem o rótulo
lightwhale-swap - Se houver apenas uma partição de dados mágica, ela é formatada com
btrfs --data single --metadata dup - Se houver várias, elas são agrupadas em RAID1 e formatadas com
btrfs --data raid1 --metadata raid1cn - São criados os subvolumes
@lightwhale-data,@lightwhale-statee@lightwhale-state-snapshots
- As partições swap mágicas são formatadas e recebem o rótulo
-
Montagem e configuração de overlay
- Se houver data filesystem,
@lightwhale-dataé montado em/mnt/lightwhale-data; caso contrário, monta-setmpfsno lugar - A camada inferior imutável faz bind mount de
/etcem/run/lightwhale/overlay/lower/etce espelha a árvore de diretórios do sistema de arquivos raiz para preparação - A camada superior gravável é preparada em caminhos como
/mnt/lightwhale-data/lightwhale-state/overlay/upper/etc - Em seguida, o
overlayfscombina as duas camadas e as monta em/etc, repetindo o mesmo processo para/vare/home
- Se houver data filesystem,
Restrições e principais pontos do FAQ
- O hardware suportado é exclusivamente x86-64, com suporte a BIOS e EFI
- Raspberry Pi ainda não é suportado e está no backlog
- Apple M-series não tem suporte em bare metal, mas pode rodar virtualizado
- Pode ser executado em ambientes virtuais como VMWare/ESX/Proxmox/cloud e inclui agentes convidados para QEMU/KVM e VMware ESXi
- O software só pode ser instalado como contêiner Docker; não é possível instalar diretamente no sistema de arquivos raiz
- O sistema central é imutável, mas configurações, personalizações e dados dos contêineres são gravados em memória por padrão e só permanecem após reboot quando a persistência é ativada
- O hostname padrão inclui o machine ID para evitar conflitos de rede, e ao alterá-lo com
setup-hostnamea mudança entra em vigor imediatamente, exceto no shell atual - Não há garantia, e a responsabilidade pelos resultados do uso é do usuário
- Não segue a direção de adicionar ferramentas preferidas como
wgetounanoao sistema de arquivos raiz, mantendo a proposta de um SO de servidor mínimo e especializado em um objetivo - O TL;DR da política de privacidade diz que não coleta dados pessoais e só coleta dados anônimos se você consentir com a telemetria; além disso, é possível revisar exatamente o que é coletado
- A conformidade com regulamentações relacionadas à idade não é responsabilidade do SO em si, mas dos serviços do usuário implantados sobre ele
1 comentários
Comentários do Hacker News
É de se comemorar quando alguém realmente lança alguma coisa, mas ainda não está claro por que eu deveria usar isso
Já existem alternativas com objetivo parecido, como Flatcar Container Linux, Fedora CoreOS, Talos Linux e IncusOS, e elas parecem ter comunidade ou apoio comercial mais sólidos
Seria preciso explicar com mais clareza o que torna isso diferente para convencer
Migrei do Proxmox e hoje gerencio todas as VMs com ele, usando bastante assistentes de código para automatizar a configuração da CLI do IncusOS, converter imagens Docker-Compose para Incus e escrever scripts bash para subir novos contêineres sem dor de cabeça mesmo usando
--dangerously-skip-permissionsO melhor é que dá para gerenciar tudo com arquivos declarativos, então a configuração de rede e os recursos ficam sempre bem visíveis
Para um uso parecido, vale dar uma olhada no IncusOS
Enquanto existir software, não dá para pular a manutenção
Não existe software sem bugs, e dizer que não há necessidade nenhuma de upgrades, patches ou administração costuma ser o caminho mais curto para um sistema comprometido
Está mais para reduzir boa parte da manutenção típica de um sistema base tradicional, por dois motivos: 1) quase nada vem instalado e 2) o upgrade da base é simples, então basta reiniciar e subir os contêineres de novo
Claro que o software que roda por cima ainda precisa de atualização, mas, se for baseado em Docker, essa camada normalmente já é gerenciada em outro lugar, então basta baixar o novo contêiner e reiniciar; o papel do OS é mais garantir que os dados sejam montados sempre no mesmo lugar
Se você acha aceitável rodar todo o software em Docker, isso parece um passo além de Debian ou Redhat, com menos complexidade procedural do que CoreOS
Ainda tenho dúvidas sobre o quão agradável é usar isso na prática, especialmente na parte de gerenciamento de armazenamento, mas pelo menos está muito claro o que eles querem vender
Self-hosting é possível, mas você acaba assumindo na prática um SLA também no seu tempo livre fora do expediente
Por isso já faz muito tempo que eliminei tudo que atende mais de 1 usuário
Ainda assim, existe um motivo para projetos como Talos existirem
Sem terminal, sem SSH, sem gerenciador de pacotes, com sistema de arquivos somente leitura, sem systemd e com o mínimo possível de executáveis, a superfície de ataque realmente diminui
Não estou falando especificamente do projeto apresentado aqui, mas sistemas mais seguros e que exigem menos manutenção de fato existem
Como nunca será possível chegar a 100% de segurança, isso não significa que a resposta seja sair aceitando no YOLO um pacote npm alterado 3 minutos atrás
É interessante, mas fiquei curioso sobre como funcionam os patches, os upgrades e a construção da própria ISO
Mesmo olhando o repositório-fonte, quase nada disso fica visível
O último commit foi há 2 anos, e aparentemente não há código-fonte da versão 3.0
Isso não é um OS, e sim uma distro Linux?
Sinto que ainda sou quase iniciante nessa área, mas faço self-hosting há mais de 10 anos e por volta de 2019 migrei para Unraid
Como ele é centrado em portal web, sempre achei fácil de usar e simples de manter
Fiquei curioso sobre como se interage com esse OS para home server
Como não há imagens no site, fico pensando se é tudo feito de forma baseada em terminal
Acabei de instalar Docker com uma linha no Ubuntu Server e comecei a usar na hora, então ainda não entendi exatamente o que muda aqui nem qual é a proposta de valor
Também queria entender o que exatamente querem dizer com manutenção, e se é um servidor mais enxuto para rodar em hardware menos potente
Estou começando agora a montar um home server, então quero sinceramente entender quais seriam as vantagens
Dizem que a vantagem da abordagem immutable está nas atualizações: você muda para a nova versão da imagem e, se der problema, pode simplesmente dar boot na versão anterior para reverter
Mas, funcionalmente, eu também sinto que Ubuntu Server já basta
Faço
apt updatee upgrades algumas vezes por ano, e o acesso é apenas local ou via TailscaleEsses OSes immutable me parecem mais atraentes para notebooks ou desktops do que para home servers
Como só o diretório home fica gravável, há a expectativa de que o OS seja mais estável e mais difícil de quebrar
Fiquei curioso sobre qual seria a forma recomendada de fazer backup regular dos dados dos contêineres que rodam no Lightwhale
Não entendo muito bem
Se a ideia é só rodar Docker, não vejo por que precisar de algo immutable, nem por que seria necessária uma variação especial de Debian em vez de Debian ou Ubuntu, onde dá para subir Docker em poucos minutos
Também me parece que a manutenção já é algo resolvido pelo gerenciador de pacotes, usando os repositórios da própria distro ou o repositório oficial do Docker
Eu realmente gostaria que essa moda do immutable passasse, assim como flatpak e snap
O Linux já fazia originalmente o que essas soluções dizem resolver
O usuário não consegue mexer no sistema base sem root, e as aplicações podem instalar dependências em
/usr/libE, se alguma coisa der errado, a facilidade de conseguir ajuda também é uma grande segurança
Talvez dê para deixar ainda menor, mas isso já roda bem até em hardware estranho como BananaPi de baixo custo ou RISC-V baratinho, então quase nunca surge motivo para querer outra coisa
Esse tipo de coisa parece combinar bem com um cluster em Swarm mode
Não sei se o foco é só home server, mas vou continuar acompanhando
O projeto parece muito bom
Mas o Lightwhale já está rodando em produção e também se encaixa muito bem em clusters Swarm
Parece extremamente limpo
Do ponto de vista de um iniciante, é exatamente o tipo de abordagem que eu preciso para não estragar a configuração, então com certeza vou testar