4 puan yazan GN⁺ 3 일 전 | 1 yorum | WhatsApp'ta paylaş
  • Yalnızca Docker konteynerleri için tasarlanmış bir Linux sunucu işletim sistemi; ISO’yu önyüklediğiniz anda doğrudan Docker Engine ortamına giriliyor
  • Çekirdek sistemi değiştirilemez ve durumsuz bir yapıda tutup /etc, /var, /home ve Docker verilerini ayrı yazılabilir alanlara ayırarak kurulum ve ilk yapılandırma yükünü büyük ölçüde azaltıyor
  • Varsayılan veri dosya sistemi tmpfs tabanlı geçici depolama; kalıcılık açıldığında ayrı bir depolama aygıtını otomatik algılayıp bölümleme, biçimlendirme ve bağlama işlemlerini yapıyor, gerekirse Btrfs RAID1 olarak da yapılandırıyor
  • squashfs tabanlı salt okunur kök ve minimal bileşenler kullanarak kötü amaçlı yazılımlara veya istenmeyen değişikliklere maruz kalma yüzeyini azaltıyor; kaynak kullanımı ve güç tüketimini de düşürüyor
  • Yalnızca x86-64 için; bare metal ve sanal makinelerde çalışıyor, sunucu yönetiminin kendisinden çok konteyner çalıştırmaya ve self-hosting işletimine doğrudan odaklanmanızı sağlıyor

Genel bakış

  • Yalnızca Docker konteynerleri için tasarlanmış bir Linux sunucu işletim sistemi; ISO ile canlı önyükleme yaptığınızda doğrudan Docker Engine ortamına geçiliyor
  • Kurulum ve ilk yapılandırma yükünü azaltmak için çekirdek sistem değiştirilemez yapıda tutuluyor; veriler ve kullanıcı özelleştirmeleri ayrı depolama alanlarına ayrılıyor
  • Homelab, bare metal, sanallaştırma ortamları, edge düğümleri ve kümeleri hedefliyor, ancak desteklenen mimari x86-64 ile sınırlı
  • Minimal yapı ve kullanım kolaylığını öne çıkararak sunucu yönetiminden ziyade konteyner çalıştırma ve işletime odaklanmanızı sağlıyor

Temel özellikler

  • Tak ve çalıştır yaklaşımıyla, yalnızca ISO’yu indirip önyüklemek yeterli; gerekli araçları içeren Docker Engine hemen hazır oluyor
  • Bileşen sayısını minimumda tutarak öğrenme yükünü azaltıyor ve sistemin nasıl çalıştığını hızlıca kavramayı kolaylaştırıyor
  • Değiştirilemez ve durumsuz çekirdek sayesinde kötü amaçlı yazılımlara ve istenmeyen değişikliklere açık yüzeyi azaltıyor; her açılışta aynı durumla başlıyor
  • İsteğe bağlı kalıcılık sunuyor; varsayılan veri dosya sistemi RAM üzerindeki geçici tmpfs, kalıcılık açıldığında ise ayrı bir depolama aygıtı otomatik algılanıp bölümleniyor, biçimlendiriliyor ve bağlanıyor
  • Gereksiz süreçleri azaltarak kaynak kullanımı ve güç tüketimini düşürüyor; eski veya düşük donanımlı cihazların daha uzun süre kullanılmasına yardımcı oluyor
  • Self-hosting işletimini kolaylaştırarak Big Tech bağımlılığından uzaklaşmayı ve veri ile gizliliği doğrudan yönetmeyi mümkün kılıyor

Başlangıç

  • En güncel ISO’yu indirin ya da indirme bölümünden imajı alıp USB’ye yazdırdıktan sonra önyükleyin
  • Bazı sistemlerde önyükleme öncesinde BIOS’ta safe boot’u devre dışı bırakmak gerekebilir
  • Varsayılan giriş bilgileri kullanıcı adı op, parola opsecret; internete açmadan önce en azından parolayı değiştirmeniz gerekir
  • Wi‑Fi, isteğe bağlı olarak setup-wifi ile yapılandırılabilir
  • Konteyner çalıştırma, normal Docker kullanımıyla aynıdır; örnek olarak docker run -it --rm busybox ps kullanılır
  • Kalıcılığı etkinleştirirken bir bölüme değil blok aygıtına magic header yazılmalıdır; bu işlem mevcut verileri siler

Önyükleme ve çalışma yapısı

  • ISO, bare metal ve sanal makinelerde önyüklenebilir; hem UEFI’yi hem de geleneksel BIOS’u destekler
  • Başlangıç süreci, basit ve şeffaf bir önyükleme akışı korumak için sysv benzeri bir init sistemi kullanır
  • Önyükleyici Linux çekirdeğini ve kök dosya sistemini belleğe yükler, ardından çekirdek donanımı başlatır ve denetimi /init’e devreder
  • init, /etc/inittab dosyasını okur, /tmp ve /run için tmpfs bağlar, ardından /etc/init.d altındaki betikleri çalıştırır
  • Erken aşamada data filesystem bağlanarak Docker verileri ile /etc, /var, /home için overlay üst katmanlarını sağlar
  • Tüm dosya sistemleri ve overlay’ler hazır olduktan sonra kalan servisler başlatılır; bu noktadan itibaren konteynerlere hizmet verilebilir

Değiştirilemezlik tasarımı

  • Kök dosya sistemi, sıkıştırılmış squashfs statik imajı olarak sunulur ve yapısı gereği değiştirilemez
  • Bu yapı sayesinde gerekli yazılımlar ve ayarlar önceden dahil edilir; kurulum sürecine gerek kalmadan önyüklenebilen kendine yeterli bir imaj ortaya çıkar
  • Paket yöneticisi, bağımlılık yönetimi ve mevcut sistem güncellemeleriyle yarışma ihtiyacını ortadan kaldırır; zaten çalışan bir şeyi yeniden kurma işini tek bir yeniden başlatmaya indirger
  • Kök dosya sistemi dosyaları yanlışlıkla silinemez ya da virüsler tarafından değiştirilemez; geleneksel sistemlerde olduğu gibi çekirdek ve temel ikililer bütünüyle değiştirilebilir durumda açıkta kalmaz
  • Salt okunur kök yapısı, uzun süreli kullanımda kalan dosyaların birikerek yedekleme, performans ve temizlik durumunu bozduğu dağınıklık birikimini önler
  • Yerel bir VM’de veya başka bir bilgisayarda özgürce deneyebilir, ardından yeniden başlatarak değişiklikleri geri alabilirsiniz
  • Önyükleme ortamında kritik bilgi bulunmaz ve değiştirilemezlik bunu korur; bu nedenle aygıt bozulsa ya da kaybolsa bile yeni bir kopyayla kurtarma mümkündür

Kalıcılık yapısı

  • Konteyner kurma/çalıştırma, ayar değiştirme ve veri yazma için yazılabilir bir dosya sistemi gerekir; yeniden başlatmadan sonra da korunması için kalıcılık gerekir
  • Erken önyükleme aşamasında otomatik çalışan bir alt sistem, data filesystem’ı /mnt/lightwhale-data konumuna bağlar
  • Lightwhale’ın yazdığı veriler /mnt/lightwhale-data/lightwhale-state altında toplanır; bu dizin overlayfs için yazılabilir üst katman olur
  • Varsayılan olarak geçici tmpfs kullanılır; kalıcılık açıldığında data filesystem ayrı bir depolama aygıtına taşınır
  • Tüm kökü kaplamak yerine yalnızca /etc, /var, /home seçmeli olarak overlay ile işlenir; böylece değiştirilemezlik amacını korur
    • /etc, ağ, parola, sshd gibi sistem ayarlarını özelleştirmek için kullanılır
    • /var, günlükler ve diğer uygulama verileri için kullanılır
    • /home, SSH authorized keys, Git deposu klonları ve Docker/Swarm stack yönetimi gibi kullanıcı özelleştirmeleri için kullanılır
  • Docker’ın data root’u doğrudan /mnt/lightwhale-data/lightwhale-state/docker altında bulunur; imajları, konteynerleri, volume’leri ve ağ durumunu burada saklar

Kalıcılığı etkinleştirme ve otomatik işlem adımları

  • Kalıcılık, echo "lightwhale-please-format-me" | sudo dd conv=notrunc of=/dev/sdx örneğinde olduğu gibi magic header’ın depolama aygıtına yazılmasıyla açıkça etkinleştirilmelidir
  • Birden fazla depolama aygıtına magic header yazılabilir; bu durumda aygıtlar Btrfs RAID1 hacmi olarak birleştirilir
  • Sonraki önyüklemede sistem magic diski algılar, biçimlendirir ve data filesystem olarak kullanır
  • persistence subsystem, /etc/init.d/S11persistence içinden başlatılır
  • Veri dosya sistemi algılama

    • Tüm diskler taranır ve dosya sistemi etiketi lightwhale-data olan bölüm aranır
    • Bulunursa bu bölüm data filesystem olarak kullanılır ve sonraki bağlama aşamasına geçilir
  • Magic disk algılama ve bölüm oluşturma

    • Diskin başlangıcındaki lightwhale-please-format-me bayt dizisi aranarak magic disk belirlenir
    • Her magic disk için lightwhale-swap etiketli bir swap bölümü ve kalan tüm alanı kullanan lightwhale-data etiketli bir Linux bölümü oluşturulur
  • Dosya sistemi oluşturma

    • Magic swap bölümü biçimlendirilir ve lightwhale-swap etiketi verilir
    • Tek bir magic data bölümü varsa btrfs --data single --metadata dup ile biçimlendirilir
    • Birden fazlaysa RAID1 olarak birleştirilir ve btrfs --data raid1 --metadata raid1cn ile biçimlendirilir
    • @lightwhale-data, @lightwhale-state, @lightwhale-state-snapshots alt hacimleri oluşturulur
  • Bağlama ve overlay yapılandırması

    • Data filesystem varsa @lightwhale-data, /mnt/lightwhale-data konumuna bağlanır; yoksa yerine tmpfs bağlanır
    • Değiştirilemez alt katman için /etc, /run/lightwhale/overlay/lower/etc konumuna bind mount edilir ve kök dosya sistemi dizin ağacı yansılanarak hazırlanır
    • Yazılabilir üst katman /mnt/lightwhale-data/lightwhale-state/overlay/upper/etc gibi yollarda hazırlanır
    • Ardından overlayfs ile iki katman birleştirilip /etc üzerine bağlanır; aynı yöntem /var ve /home için de tekrarlanır

Kısıtlar ve SSS özeti

  • Desteklenen donanım yalnızca x86-64; hem BIOS hem de EFI desteklenir
  • Raspberry Pi şu anda desteklenmiyor; backlog içinde yer alıyor
  • Apple M serisi bare metal olarak desteklenmiyor, ancak sanallaştırılmış çalıştırma mümkün
  • VMWare/ESX/Proxmox/cloud gibi sanal ortamlarda çalışabilir; QEMU/KVM ve VMware ESXi için guest agent içerir
  • Yazılımlar yalnızca Docker konteyneri olarak kurulabilir; kök dosya sistemine doğrudan kurulum mümkün değildir
  • Çekirdek sistem değiştirilemez olsa da ayarlar, özelleştirmeler ve konteyner verileri varsayılan olarak belleğe yazılır; yalnızca kalıcılık açıldığında yeniden başlatma sonrasında korunur
  • Varsayılan ana makine adı, ağ çakışmalarını önlemek için machine ID içerir; setup-hostname ile değiştirildiğinde mevcut kabuk dışında hemen uygulanır
  • Garanti yoktur; kullanım sonuçlarının sorumluluğu kullanıcıya aittir
  • Kök dosya sistemine wget, nano gibi tercih edilen araçları ekleme yönünde bir hedef yoktur; amaç odaklı minimal bir sunucu işletim sistemi olma kısıtı korunur
  • Gizlilik politikası özetinde kişisel veri toplanmadığı belirtilir; yalnızca telemetriye onay verilirse anonim veri toplanır ve içeriği de incelenebilir
  • Yaşla ilgili düzenlemelere uyum, işletim sisteminin değil, üzerinde dağıtılan kullanıcı hizmetlerinin sorumluluğu olarak görülür

İlgili bağlantılar

1 yorum

 
GN⁺ 3 일 전
Hacker News görüşleri
  • Gerçekten bir şeyi yayınlamış olmaları tebrik edilecek bir şey, ama neden özellikle bunu kullanmam gerektiği hâlâ pek net değil
    Flatcar Container Linux, Fedora CoreOS, Talos Linux, IncusOS gibi benzer hedefleri olan alternatifler zaten var ve topluluk ya da ticari destek açısından da daha güçlü görünüyorlar
    Neyi farklı yaptığını daha açık anlatmaları gerek ki insan ikna olsun

    • Ev labımda IncusOS kullanıyorum ve kurulumla kullanım deneyimi gerçekten çok iyi
      Proxmox'tan geçtim ve tüm VM'leri onunla yönetiyorum; ayrıca kodlama asistanlarını yoğun biçimde kullanarak IncusOS CLI yapılandırmasını otomatikleştirme, Docker-Compose imajlarını Incus'a dönüştürme ve --dangerously-skip-permissions kullansam bile içim rahat olacak şekilde yeni container'lar açan bash script'leri yazma gibi işleri hallediyorum
      En güzel yanı, her şeyi deklaratif dosyalarla yönetebildiğim için ağ yapısını ve kaynak ayarlarını her zaman net biçimde görebilmem
      Benzer bir kullanım senaryosu için IncusOS'a bakmaya değer
    • Bu tür araçlar genelde yapılandırma için saatler ister, bunun farkı ise açar açmaz çalışması
  • Yazılım olduğu sürece bakımı atlamak mümkün değil
    Hatasız bir şey yok; yükseltme, yama ve yönetim hiç gerekmiyor demek sonuçta kolayca ele geçirilmiş bir sisteme giden kısa yol olur

    • Bu OS'nin bakım gerektirmediğini söylediğini düşünmüyorum
      Daha çok, geleneksel bir temel sistemde uğraşmanız gereken bakım işlerinin önemli bir kısmını azalttığını söylüyor; bunun sebebi de 1) kurulu şeylerin çok az olması ve 2) temel yükseltmesinin kolay olması, yani yeniden başlatıp sadece container'ları ayağa kaldırmanızın yetmesi
      Elbette üstünde çalışan yazılımların güncellenmesi gerekir ama Docker tabanlıysa o katman genelde başka yerde yönetilir; yeni container'ı çekip yeniden başlatırsınız, OS de verinin aynı yere bağlanmasını garanti etmeye yakın bir rol oynar
      Tüm yazılımı Docker ile çalıştırmak size uygunsa, Debian ya da Redhat'ten bir adım ileri bir seçenek gibi görünüyor; ayrıca CoreOS'a göre daha az prosedürel karmaşıklık var
      Pratikte ne kadar kullanışlı olduğu, özellikle depolama yönetimi tarafında biraz soru işareti ama en azından ne satmak istediği son derece açık
    • Bunu yıllardır söylüyorum
      Self-hosting mümkün ama çalışma saatleri dışındaki boş zamanınızda fiilen bir SLA üstlenmiş oluyorsunuz
      Bu yüzden birden fazla kullanıcısı olan her şeyi yıllar önce kapattım
    • Elbette tamamen hatasız bir şey yok
      Yine de Talos gibi projelerin var olmasının bir sebebi var
      Terminal yok, SSH yok, paket yöneticisi yok; dosya sistemi salt okunur, systemd çıkarılmış ve çalıştırılabilir dosya sayısı da minimumdaysa saldırı yüzeyi gerçekten küçülür
      Buradaki projeden özel olarak bahsetmiyorum ama daha güvenli ve daha az bakım isteyen sistemler gerçekten var
      Nasıl olsa %100 güvenli olamayız diye son 3 dakika önce güncellenmiş npm paketlerini de YOLO mantığıyla kabul edelim demek çözüm değil
  • İlginç görünüyor ama yamalar, yükseltmeler ve özel ISO derleme nasıl yapılıyor merak ediyorum
    Kaynak deposuna bakınca o kısım neredeyse hiç görünmüyor

    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/

    • Depo eski kalmış gibi görünüyor
      Son commit 2 yıl önce atılmış ve 3.0 sürümünün kaynak kodu da yok gibi
  • Bu bir OS değil, bir Linux dağıtımı değil mi?

    • Linux dağıtımı değilse neyin OS sayıldığını sormak isterim
  • Bu alanda kendimi neredeyse acemi sayıyorum ama 10 yılı aşkın süredir self-hosting yapıyorum ve 2019 civarında Unraid'e geçtim
    Web portalı merkezli olduğu için kullanması kolaydı ve bakımı da rahattı
    Bu ev sunucusu OS'siyle nasıl etkileşime giriliyor merak ediyorum
    Sitede görsel olmayınca her şeyin tamamen terminal tabanlı olduğunu düşünüyorum

  • Az önce Ubuntu Server üstüne Docker'ı tek satırla kurup hemen kullanmaya başladım; burada tam olarak neyin farklı olduğunu ve değer önerisinin ne olduğunu pek anlamıyorum
    Söz edilen bakımın tam olarak neyi kastettiğini de merak ediyorum; ayrıca daha zayıf donanımlarda çalışsın diye daha hafif yapılmış bir sunucu mu onu da bilmiyorum
    Ev sunucusu kurulumuna yeni başladım, o yüzden gerçekten ne avantaj sunduğunu öğrenmek istiyorum

    • Ben de aynı şeyi yapıyorum
      Immutable yaklaşımın avantajının güncellemelerde olduğu söyleniyor; yeni imaj sürümüne geçip sorun yaşarsanız doğrudan eski sürümle açıp geri dönebiliyorsunuz
      Ama işlevsel olarak bana da Ubuntu Server yeterli geliyor
      Yılda birkaç kez apt update ve yükseltme yapıyorum, erişim de yalnızca yerel ağdan ya da Tailscale üzerinden
      Bu tür immutable OS'ler bana ev sunucusundan çok laptop veya masaüstünde daha cazip geliyor
      Sadece home dizini yazılabilir olduğu için OS'nin daha kararlı olması ve daha zor bozulması bekleniyor
  • Lightwhale üzerinde çalışan container verilerinin düzenli olarak hangi yöntemle yedeklenmesinin tavsiye edildiğini merak ediyorum

  • Pek emin değilim
    Sadece Docker çalıştıracaksam neden immutable gerektiğini anlamıyorum; birkaç dakikada Docker kurabildiğiniz Debian ya da Ubuntu varken neden özel bir Debian türevine ihtiyaç olsun ki
    Bakım da zaten dağıtım depolarını ya da resmi Docker deposunu paket yöneticisiyle yönetmekten ibaret değil mi diye düşünüyorum
    Bu immutable modasının biraz sönmesini isterim; flatpak ve snap için de aynı şeyi düşünüyorum
    Linux zaten bu çözümlerin çözmeye çalıştığı şeyleri baştan beri yapıyordu
    Kullanıcılar root olmadan temel sisteme dokunamaz, uygulamalar da bağımlılıklarını /usr/lib altına kurabilir

    • Bana göre Debian stable + podman/Docker kombinasyonu zaten yeterince immutable
      Bir şey ters giderse kolayca yardım bulunabilmesi de büyük bir güvence
      Daha da küçültülebilir belki ama zaten düşük güçlü BananaPi ya da ucuz RISC-V gibi tuhaf donanımlarda bile iyi çalışıyor; o yüzden başka bir şey istemek için çok neden görmüyorum
  • Böyle bir şey Swarm mode cluster için oldukça uygun olabilir gibi görünüyor
    Yalnızca ev sunucusuna mı odaklanıyor bilmiyorum ama izlemeye devam edeceğim
    Proje de gayet iyi görünüyor

    • Şu anda insanların en rahat denediği alan ev sunucuları olduğu için şimdilik onu öne çıkarıyoruz
      Ama Lightwhale zaten prodüksiyonda çalışıyor ve Swarm cluster kullanımı için de oldukça uygun
  • Oldukça temiz görünüyor
    Yeni başlayanlar için ayarları bozmayı engelleyen böyle bir yaklaşım tam isabet; kesinlikle deneyeceğim