Lightwhale 3: Linux sunucularını yeniden eğlenceli hale getirmek
(lightwhale.asklandd.dk)- 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,/homeve 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
squashfstabanlı 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, parolaopsecret; internete açmadan önce en azından parolayı değiştirmeniz gerekir - Wi‑Fi, isteğe bağlı olarak
setup-wifiile yapılandırılabilir - Konteyner çalıştırma, normal Docker kullanımıyla aynıdır; örnek olarak
docker run -it --rm busybox pskullanı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/inittabdosyasını okur,/tmpve/runiçintmpfsbağlar, ardından/etc/init.daltındaki betikleri çalıştırır- Erken aşamada data filesystem bağlanarak Docker verileri ile
/etc,/var,/homeiç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ış
squashfsstatik 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-datakonumuna bağlar - Lightwhale’ın yazdığı veriler
/mnt/lightwhale-data/lightwhale-statealtında toplanır; bu dizinoverlayfsiçin yazılabilir üst katman olur - Varsayılan olarak geçici
tmpfskullanı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,/homeseçmeli olarak overlay ile işlenir; böylece değiştirilemezlik amacını korur/etc, ağ, parola,sshdgibi 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/dockeraltı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/S11persistenceiçinden başlatılır -
Veri dosya sistemi algılama
- Tüm diskler taranır ve dosya sistemi etiketi
lightwhale-dataolan 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
- Tüm diskler taranır ve dosya sistemi etiketi
-
Magic disk algılama ve bölüm oluşturma
- Diskin başlangıcındaki
lightwhale-please-format-mebayt dizisi aranarak magic disk belirlenir - Her magic disk için
lightwhale-swapetiketli bir swap bölümü ve kalan tüm alanı kullananlightwhale-dataetiketli bir Linux bölümü oluşturulur
- Diskin başlangıcındaki
-
Dosya sistemi oluşturma
- Magic swap bölümü biçimlendirilir ve
lightwhale-swapetiketi verilir - Tek bir magic data bölümü varsa
btrfs --data single --metadata dupile biçimlendirilir - Birden fazlaysa RAID1 olarak birleştirilir ve
btrfs --data raid1 --metadata raid1cnile biçimlendirilir @lightwhale-data,@lightwhale-state,@lightwhale-state-snapshotsalt hacimleri oluşturulur
- Magic swap bölümü biçimlendirilir ve
-
Bağlama ve overlay yapılandırması
- Data filesystem varsa
@lightwhale-data,/mnt/lightwhale-datakonumuna bağlanır; yoksa yerinetmpfsbağlanır - Değiştirilemez alt katman için
/etc,/run/lightwhale/overlay/lower/etckonumuna 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/etcgibi yollarda hazırlanır - Ardından
overlayfsile iki katman birleştirilip/etcüzerine bağlanır; aynı yöntem/varve/homeiçin de tekrarlanır
- Data filesystem varsa
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-hostnameile 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,nanogibi 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
1 yorum
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
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-permissionskullansam bile içim rahat olacak şekilde yeni container'lar açan bash script'leri yazma gibi işleri hallediyorumEn 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
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
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
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
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
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?
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
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 updateve yükseltme yapıyorum, erişim de yalnızca yerel ağdan ya da Tailscale üzerindenBu 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/libaltına kurabilirBir ş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
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