4 पॉइंट द्वारा GN⁺ 3 일 전 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • केवल Docker containers के लिए डिज़ाइन किया गया Linux server OS, जिसमें ISO बूट करते ही सीधे Docker Engine environment में प्रवेश हो जाता है
  • core system को immutable और stateless architecture में रखकर /etc, /var, /home और Docker data को अलग writable area में विभाजित किया गया है, जिससे installation और initial setup का बोझ काफी कम हो जाता है
  • default data filesystem tmpfs-आधारित volatile storage है; persistence चालू करने पर अलग storage device को अपने-आप detect करके partitioning, formatting, mounting किया जाता है, और ज़रूरत पड़ने पर Btrfs RAID1 के रूप में भी configure किया जाता है
  • squashfs-आधारित read-only root और minimal components का उपयोग करके malware या अनचाहे modification के exposure surface को कम किया जाता है, और resource usage तथा power consumption भी घटते हैं
  • केवल x86-64 के लिए, bare metal और virtual machines पर चलता है, और server management से ज़्यादा container execution तथा self-hosting operations पर तुरंत ध्यान केंद्रित करने देता है

अवलोकन

  • यह केवल Docker containers के लिए डिज़ाइन किया गया Linux server OS है, और ISO से live boot करते ही सीधे Docker Engine environment में प्रवेश होता है
  • installation और initial setup के बोझ को कम करने के लिए core system को immutable रखा गया है, जबकि data और user customization को अलग storage area में रखा जाता है
  • यह homelab, bare metal, virtualization environments, edge nodes और clusters तक को लक्षित करता है, लेकिन supported architecture x86-64 तक सीमित है
  • minimal configuration और ease of use को प्राथमिकता देकर, यह server management से अधिक containers चलाने और उन्हें operate करने पर ध्यान केंद्रित करने देता है

मुख्य विशेषताएँ

  • plug-and-play तरीका: सिर्फ ISO डाउनलोड करके बूट करें, और ज़रूरी tools सहित Docker Engine तुरंत तैयार मिलता है
  • components को न्यूनतम रखा गया है, जिससे सीखने का बोझ कम होता है और system behavior को जल्दी समझा जा सकता है
  • immutable और stateless core का उपयोग करके malware और अनचाहे modifications के exposure surface को कम किया जाता है, और हर बार एक ही state में boot होता है
  • optional persistence दी गई है; default data filesystem RAM का volatile tmpfs है, और persistence चालू करने पर अलग storage device अपने-आप detect, partition, format और mount हो जाता है
  • अनावश्यक processes कम करके resource usage और power consumption घटाए जाते हैं, जिससे पुराने या low-spec hardware का उपयोग अधिक समय तक किया जा सकता है
  • self-hosting को आसान बनाकर Big Tech पर निर्भरता कम करने और data व privacy को स्वयं नियंत्रित करने में मदद करता है

शुरू करने का तरीका

  • latest ISO download या download section से image लेकर USB पर लिखें और फिर boot करें
  • कुछ systems में boot से पहले BIOS में safe boot disable करना पड़ सकता है
  • default login में username op और password opsecret है; इंटरनेट पर expose करने से पहले कम-से-कम password बदलना ज़रूरी है
  • Wi-Fi को setup-wifi से वैकल्पिक रूप से configure किया जा सकता है
  • container चलाना सामान्य Docker उपयोग जैसा ही है; उदाहरण के लिए docker run -it --rm busybox ps इस्तेमाल किया जाता है
  • persistence enable करते समय partition नहीं बल्कि block device पर magic header लिखना चाहिए, और इस प्रक्रिया में पुराना data मिट जाएगा

बूट और execution संरचना

  • ISO bare metal और virtual machines दोनों पर boot हो सकता है, और UEFI तथा traditional BIOS दोनों को support करता है
  • startup process sysv-जैसी init system का उपयोग करके सरल और पारदर्शी boot flow बनाए रखता है
  • bootloader Linux kernel और root filesystem को memory में लोड करता है, फिर kernel hardware initialize करके control /init को सौंप देता है
  • init, /etc/inittab पढ़ता है, /tmp, /run के लिए tmpfs mount करता है, और फिर /etc/init.d की scripts चलाता है
  • शुरुआती चरण में data filesystem mount करके Docker data और /etc, /var, /home के overlay upper layers उपलब्ध कराए जाते हैं
  • सभी filesystems और overlays तैयार होने के बाद बाकी services शुरू होती हैं, और उसी समय से containers को service किया जा सकता है

immutability डिज़ाइन

  • root filesystem compressed squashfs static image के रूप में दिया जाता है, और इसकी संरचना स्वयं में modify नहीं की जा सकती
  • इस संरचना की वजह से आवश्यक software और settings पहले से शामिल रहते हैं, जिससे बिना installation process के boot होने वाली self-contained image बनती है
  • package manager, dependency management और पारंपरिक system update की जटिलताओं से बचते हुए, पहले से काम कर रही चीज़ को फिर से install करने का काम एक reboot से बदल दिया जाता है
  • root filesystem की files गलती से delete नहीं होतीं और न ही virus द्वारा modify की जा सकती हैं; पारंपरिक systems की तरह पूरा kernel और base binaries writable state में expose नहीं होते
  • read-only root structure लंबे समय तक उपयोग के दौरान जमा होने वाली अनावश्यक अव्यवस्था को रोकती है, जो backup, performance और cleanup की स्थिति को खराब कर सकती है
  • इसे local VM या किसी दूसरे computer पर स्वतंत्र रूप से test किया जा सकता है, और reboot से changes वापस लिए जा सकते हैं
  • boot media में कोई महत्वपूर्ण जानकारी नहीं रहती, और immutability के कारण उसकी वही स्थिति बनी रहती है; इसलिए device खराब हो जाए या खो जाए तो नई copy से recovery संभव है

persistence संरचना

  • container install/run करने, settings बदलने और data लिखने के लिए writable filesystem चाहिए, और reboot के बाद भी उसे बनाए रखने के लिए persistence आवश्यक है
  • शुरुआती boot चरण में अपने-आप चलने वाला subsystem /mnt/lightwhale-data पर data filesystem mount करता है
  • Lightwhale द्वारा लिखा गया data /mnt/lightwhale-data/lightwhale-state के अंतर्गत जमा होता है, और यही directory overlayfs की writable upper layer बनती है
  • default रूप से यह volatile tmpfs होता है, लेकिन persistence चालू करने पर data filesystem अलग storage device पर स्थित हो जाता है
  • पूरे root को overlay करने के बजाय केवल /etc, /var, /home पर selectively overlay किया जाता है ताकि immutability का उद्देश्य बना रहे
    • /etc का उपयोग network, passwords, sshd जैसी system settings customization के लिए होता है
    • /var का उपयोग logs और अन्य application data के लिए होता है
    • /home का उपयोग SSH authorized keys, Git repositories clone करने, और Docker·Swarm stack management जैसी user customizations के लिए होता है
  • Docker का data root सीधे /mnt/lightwhale-data/lightwhale-state/docker में रहता है, जहाँ images, containers, volumes और network state संग्रहीत होते हैं

persistence सक्षम करना और automatic processing चरण

  • persistence को echo "lightwhale-please-format-me" | sudo dd conv=notrunc of=/dev/sdx की तरह storage device पर magic header लिखकर स्पष्ट रूप से enable करना होता है
  • कई storage devices पर magic header लिखा जा सकता है; उस स्थिति में उन्हें Btrfs RAID1 volume के रूप में जोड़ा जाता है
  • अगले boot पर system magic disk को detect करके format करता है और उसे data filesystem के रूप में इस्तेमाल करता है
  • persistence subsystem /etc/init.d/S11persistence से शुरू होता है
  • data filesystem detection

    • सभी disks को scan करके lightwhale-data label वाले partition को खोजा जाता है
    • अगर मिल जाए, तो उसे data filesystem के रूप में उपयोग किया जाता है और बाद के mount चरण पर चला जाता है
  • magic disk detection और partition creation

    • disk की शुरुआत में byte sequence lightwhale-please-format-me खोजकर magic disk की पहचान की जाती है
    • प्रत्येक magic disk पर lightwhale-swap label वाला swap partition और बाकी पूरी जगह इस्तेमाल करने वाला lightwhale-data label वाला Linux partition बनाया जाता है
  • filesystem creation

    • magic swap partition को format करके lightwhale-swap label दिया जाता है
    • अगर एक magic data partition हो, तो उसे btrfs --data single --metadata dup से format किया जाता है
    • अगर कई हों, तो उन्हें RAID1 में जोड़कर btrfs --data raid1 --metadata raid1cn से format किया जाता है
    • @lightwhale-data, @lightwhale-state, @lightwhale-state-snapshots subvolumes बनाए जाते हैं
  • mounting और overlay configuration

    • data filesystem हो तो @lightwhale-data को /mnt/lightwhale-data पर mount किया जाता है, नहीं तो उसकी जगह tmpfs mount किया जाता है
    • immutable lower layer के लिए /etc को /run/lightwhale/overlay/lower/etc पर bind mount किया जाता है, और root filesystem directory tree को mirror करके तैयार किया जाता है
    • writable upper layer को /mnt/lightwhale-data/lightwhale-state/overlay/upper/etc जैसे paths में तैयार किया जाता है
    • इसके बाद overlayfs से दोनों layers को जोड़कर /etc पर mount किया जाता है, और यही तरीका /var, /home पर भी दोहराया जाता है

सीमाएँ और FAQ का सार

  • supported hardware केवल x86-64 है, और BIOS तथा EFI दोनों supported हैं
  • Raspberry Pi अभी supported नहीं है, लेकिन backlog में दर्ज है
  • Apple M-series bare metal पर supported नहीं है, लेकिन virtualized execution संभव है
  • VMWare/ESX/Proxmox/cloud जैसे virtual environments में चल सकता है, और QEMU/KVM तथा VMware ESXi के guest agents शामिल हैं
  • software केवल Docker containers के रूप में install किया जा सकता है; root filesystem पर सीधे install करना संभव नहीं है
  • core system immutable है, लेकिन settings, customizations और container data default रूप से memory में लिखे जाते हैं और persistence चालू करने पर ही reboot के बाद बने रहते हैं
  • default hostname में network conflict से बचने के लिए machine ID शामिल होता है, और setup-hostname से बदलने पर वर्तमान shell को छोड़कर तुरंत लागू हो जाता है
  • कोई warranty नहीं है; उपयोग के परिणामों की ज़िम्मेदारी उपयोगकर्ता की है
  • root filesystem में wget, nano जैसे पसंदीदा tools जोड़ने की दिशा में नहीं जाया जाता, ताकि purpose-built minimal server OS की सीमाएँ बनी रहें
  • privacy policy TL;DR के अनुसार कोई personal data collect नहीं किया जाता; केवल telemetry के लिए सहमति देने पर ही anonymous data collect किया जाता है, और उसका विवरण भी देखा जा सकता है
  • age-related regulations का पालन OS की नहीं, बल्कि उसके ऊपर deploy की जाने वाली user services की ज़िम्मेदारी माना गया है

संबंधित लिंक

1 टिप्पणियां

 
GN⁺ 3 일 전
Hacker News की राय
  • किसी चीज़ को वास्तव में रिलीज़ करना बधाई की बात है, लेकिन इसे क्यों इस्तेमाल करना चाहिए यह अभी भी साफ़ नहीं दिखता
    Flatcar Container Linux, Fedora CoreOS, Talos Linux, IncusOS जैसे समान लक्ष्य वाले विकल्प पहले से मौजूद हैं, और उनकी कम्युनिटी या commercial backing भी ज़्यादा मज़बूत लगती है
    यह किस तरह अलग है, इसे और स्पष्ट समझाना होगा तभी बात समझ आएगी

    • मैं अपने homelab में IncusOS इस्तेमाल कर रहा हूँ, और इसका setup व उपयोग अनुभव वाकई बहुत अच्छा है
      मैं Proxmox से migrate करके आया हूँ और अब सभी VM उसी से manage कर रहा हूँ, साथ ही coding assistants का सक्रिय उपयोग करके IncusOS CLI setup automation, Docker-Compose images को Incus में convert करना, और --dangerously-skip-permissions इस्तेमाल करने पर भी बिना झिझक नए containers launch करने के लिए bash scripts लिखना जैसी चीज़ें कर रहा हूँ
      सबसे अच्छी बात यह है कि इसे declarative files से manage किया जा सकता है, इसलिए network configuration और resource settings हमेशा साफ़ दिखाई देते हैं
      अगर उपयोग का मामला मिलता-जुलता है, तो IncusOS पर एक नज़र डालना बनता है
    • ऐसे tools में आमतौर पर configuration में कई घंटे लग जाते हैं, जबकि इसमें बस boot करो और यह तुरंत चलने लगता है
  • जब तक software है, maintenance को पूरी तरह छोड़ा नहीं जा सकता
    bug-free कुछ भी नहीं होता, और अगर कोई कहे कि upgrade, patch या management की बिल्कुल ज़रूरत नहीं, तो वह अक्सर अंत में compromised system तक पहुँचने का शॉर्टकट बन जाता है

    • मेरा मतलब यह नहीं कि यह OS maintenance-free है
      बात ज़्यादा इस बारे में है कि पारंपरिक base system में जिन maintenance कामों की चिंता करनी पड़ती है, उनमें से काफ़ी कुछ यह कम कर देता है, क्योंकि 1) इसमें बहुत कम चीज़ें install होती हैं और 2) base upgrade आसान है, इसलिए reboot करके सिर्फ containers फिर से ऊपर लाने होते हैं
      ज़ाहिर है, इसके ऊपर चलने वाले software को upgrade की ज़रूरत रहती है, लेकिन अगर वह Docker आधारित है तो वह layer आमतौर पर कहीं और manage होती है, इसलिए नया container लेकर restart करना ही काफ़ी होता है, और OS की भूमिका ज़्यादा इस बात की होती है कि data उसी जगह mounted रहे
      अगर आपको सारा software Docker में चलाना ठीक लगता है, तो यह Debian या Redhat से एक कदम आगे का विकल्प लगता है, और CoreOS की तुलना में procedural complexity भी कम है
      असल में यह कितना सुविधाजनक है, इस पर खासकर storage management को लेकर थोड़ी शंका है, लेकिन कम से कम यह क्या बेचना चाहता है, यह पूरी तरह स्पष्ट है
    • मैं यह बात कई सालों से कह रहा हूँ
      self-hosting संभव तो है, लेकिन काम के घंटों के बाहर की अपनी फुर्सत में भी आप असल में SLA उठाए रहते हैं
      इसलिए मैंने बहुत पहले ही उन सभी चीज़ों को हटा दिया जिनके users 1 से ज़्यादा थे
    • बेशक कुछ भी पूरी तरह bug-free नहीं होता
      फिर भी Talos जैसे projects के होने की वजह है
      अगर terminal नहीं है, SSH नहीं है, package manager नहीं है, filesystem read-only है, systemd भी हटा दिया गया है, और executables की संख्या भी न्यूनतम रखी गई है, तो attack surface सचमुच कम होता है
      मैं यहाँ दिखाए गए इसी project की बात नहीं कर रहा, लेकिन ज़्यादा सुरक्षित और कम maintenance माँगने वाले systems वास्तव में मौजूद हैं
      वैसे भी कुछ 100% सुरक्षित नहीं हो सकता, इसलिए यह कहना कि चलो 3 मिनट पहले अपडेट हुआ npm package भी YOLO मोड में install कर लेते हैं, कोई जवाब नहीं है
  • दिलचस्प तो है, लेकिन patches, upgrades, और custom ISO builds कैसे किए जाते हैं, यह जानने की उत्सुकता है
    source repository देखने पर भी वह हिस्सा लगभग दिखाई नहीं देता

    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/

    • repository पुरानी और निष्क्रिय लगती है
      आख़िरी commit 2 साल पहले का है, और version 3.0 का source भी शायद मौजूद नहीं है
  • यह OS नहीं बल्कि Linux distro नहीं है क्या?

    • अगर Linux distro नहीं है, तो फिर OS किसे कहेंगे?
  • मुझे लगता है कि मैं इस क्षेत्र में लगभग beginner हूँ, लेकिन self-hosting 10 साल से ज़्यादा समय से कर रहा हूँ और लगभग 2019 से Unraid पर चला गया था
    यह web portal आधारित होने की वजह से संभालना आसान था और maintenance भी सुविधाजनक थी
    यह home server OS किस तरह interact करता है, यह जानना चाहता हूँ
    site पर screenshots न होने से लग रहा है कि क्या सब कुछ terminal-based ही है?

  • मैंने अभी Ubuntu Server पर एक लाइन में Docker install किया और तुरंत इस्तेमाल शुरू कर दिया, इसलिए यहाँ ठीक-ठीक क्या अलग है और value proposition क्या है, यह समझ नहीं आ रहा
    जो maintenance की बात हो रही है, उसका मतलब ठोस रूप से क्या है, यह भी जानना चाहता हूँ, और क्या यह कमज़ोर hardware पर चलाने के लिए ज़्यादा slim server है
    मैंने अभी-अभी home server setup शुरू किया है, इसलिए सच में जानना चाहता हूँ कि इसके फ़ायदे क्या हैं

    • मैं भी यही करता हूँ
      immutable तरीके का फ़ायदा लोग updates में बताते हैं: अगर नई image version पर जाने के बाद दिक्कत आए तो बस पुरानी version में boot करके rollback किया जा सकता है
      लेकिन functionality के लिहाज़ से मुझे भी Ubuntu Server काफ़ी लगता है
      साल में कुछ बार apt update और upgrades कर लेता हूँ, और access सिर्फ local network या Tailscale से रखता हूँ
      ऐसे immutable OS मुझे home server की तुलना में laptop या desktop पर ज़्यादा आकर्षक लगते हैं
      जब सिर्फ home directory writable हो, तो उम्मीद रहती है कि OS ज़्यादा stable होगा और उसे तोड़ना आसान नहीं होगा
  • जानना चाहूँगा कि Lightwhale पर चलने वाले container data का नियमित backup किस तरीके से करना recommend किया जाता है

  • समझ नहीं आ रहा
    अगर सिर्फ Docker ही चलाना है, तो immutable की ज़रूरत क्यों है समझ नहीं आता, और कुछ ही मिनटों में Docker चला देने वाले Debian या Ubuntu के बजाय Debian के किसी विशेष variant की क्या ज़रूरत है, यह भी नहीं
    maintenance भी तो वैसे package manager से distro repositories या official Docker repository manage करके हो जाती है, है न?
    काश यह immutable trend थोड़ा कम हो जाए, और flatpak या snap के बारे में भी मेरी यही राय है
    Linux पहले से ही मूल रूप से वह सब करता आया है जिसे ये solutions supposedly हल करना चाहते हैं
    user root के बिना base system को छू नहीं सकता, और applications अपनी dependencies को /usr/lib में install कर सकते हैं

    • मेरे लिए Debian stable के साथ podman/Docker का संयोजन काफ़ी immutable है
      और अगर कुछ अटक भी जाए, तो मदद आसानी से मिल जाना अपने आप में बड़ा insurance है
      इसे और छोटा बनाया जा सकता है, लेकिन यह पहले से ही कम-संसाधन वाले BananaPi या सस्ते RISC-V जैसे अजीब hardware पर ठीक चलता है, इसलिए कुछ और चाहने की वजह कम मिलती है
  • ऐसी चीज़ Swarm mode cluster में काफ़ी अच्छी तरह फिट हो सकती है
    पता नहीं फ़ोकस सिर्फ home server पर है या नहीं, लेकिन मैं इसे देखते रहूँगा
    project भी बहुत अच्छा लग रहा है

    • अभी लोग सबसे कम झिझक के साथ home server वाले क्षेत्र में ही हाथ आज़माते हैं, इसलिए फिलहाल उसी तरफ़ बताया जा रहा है
      लेकिन Lightwhale पहले से production में चल रहा है, और Swarm cluster उपयोग के लिए भी बहुत उपयुक्त है
  • यह बहुत साफ़-सुथरा लग रहा है
    beginners के लिए ऐसा तरीका, जो configuration बिगड़ने से बचाए, बिल्कुल सही लगता है, इसलिए मैं इसे ज़रूर आज़माऊँगा