Lightwhale 3: Linux सर्वर को फिर से मज़ेदार बनाना
(lightwhale.asklandd.dk)- केवल 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और passwordopsecretहै; इंटरनेट पर 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के लिएtmpfsmount करता है, और फिर/etc/init.dकी scripts चलाता है- शुरुआती चरण में data filesystem mount करके Docker data और
/etc,/var,/homeके overlay upper layers उपलब्ध कराए जाते हैं - सभी filesystems और overlays तैयार होने के बाद बाकी services शुरू होती हैं, और उसी समय से containers को service किया जा सकता है
immutability डिज़ाइन
- root filesystem compressed
squashfsstatic 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के अंतर्गत जमा होता है, और यही directoryoverlayfsकी 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-datalabel वाले partition को खोजा जाता है - अगर मिल जाए, तो उसे data filesystem के रूप में उपयोग किया जाता है और बाद के mount चरण पर चला जाता है
- सभी disks को scan करके
-
magic disk detection और partition creation
- disk की शुरुआत में byte sequence
lightwhale-please-format-meखोजकर magic disk की पहचान की जाती है - प्रत्येक magic disk पर
lightwhale-swaplabel वाला swap partition और बाकी पूरी जगह इस्तेमाल करने वालाlightwhale-datalabel वाला Linux partition बनाया जाता है
- disk की शुरुआत में byte sequence
-
filesystem creation
- magic swap partition को format करके
lightwhale-swaplabel दिया जाता है - अगर एक magic data partition हो, तो उसे
btrfs --data single --metadata dupसे format किया जाता है - अगर कई हों, तो उन्हें RAID1 में जोड़कर
btrfs --data raid1 --metadata raid1cnसे format किया जाता है @lightwhale-data,@lightwhale-state,@lightwhale-state-snapshotssubvolumes बनाए जाते हैं
- magic swap partition को format करके
-
mounting और overlay configuration
- data filesystem हो तो
@lightwhale-dataको/mnt/lightwhale-dataपर mount किया जाता है, नहीं तो उसकी जगहtmpfsmount किया जाता है - 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पर भी दोहराया जाता है
- data filesystem हो तो
सीमाएँ और 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 टिप्पणियां
Hacker News की राय
किसी चीज़ को वास्तव में रिलीज़ करना बधाई की बात है, लेकिन इसे क्यों इस्तेमाल करना चाहिए यह अभी भी साफ़ नहीं दिखता
Flatcar Container Linux, Fedora CoreOS, Talos Linux, IncusOS जैसे समान लक्ष्य वाले विकल्प पहले से मौजूद हैं, और उनकी कम्युनिटी या commercial backing भी ज़्यादा मज़बूत लगती है
यह किस तरह अलग है, इसे और स्पष्ट समझाना होगा तभी बात समझ आएगी
मैं 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 पर एक नज़र डालना बनता है
जब तक software है, maintenance को पूरी तरह छोड़ा नहीं जा सकता
bug-free कुछ भी नहीं होता, और अगर कोई कहे कि upgrade, patch या management की बिल्कुल ज़रूरत नहीं, तो वह अक्सर अंत में compromised system तक पहुँचने का शॉर्टकट बन जाता है
बात ज़्यादा इस बारे में है कि पारंपरिक 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 से ज़्यादा थे
फिर भी 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 देखने पर भी वह हिस्सा लगभग दिखाई नहीं देता
आख़िरी commit 2 साल पहले का है, और version 3.0 का source भी शायद मौजूद नहीं है
यह OS नहीं बल्कि Linux distro नहीं है क्या?
मुझे लगता है कि मैं इस क्षेत्र में लगभग 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 कर सकते हैंऔर अगर कुछ अटक भी जाए, तो मदद आसानी से मिल जाना अपने आप में बड़ा insurance है
इसे और छोटा बनाया जा सकता है, लेकिन यह पहले से ही कम-संसाधन वाले BananaPi या सस्ते RISC-V जैसे अजीब hardware पर ठीक चलता है, इसलिए कुछ और चाहने की वजह कम मिलती है
ऐसी चीज़ Swarm mode cluster में काफ़ी अच्छी तरह फिट हो सकती है
पता नहीं फ़ोकस सिर्फ home server पर है या नहीं, लेकिन मैं इसे देखते रहूँगा
project भी बहुत अच्छा लग रहा है
लेकिन Lightwhale पहले से production में चल रहा है, और Swarm cluster उपयोग के लिए भी बहुत उपयुक्त है
यह बहुत साफ़-सुथरा लग रहा है
beginners के लिए ऐसा तरीका, जो configuration बिगड़ने से बचाए, बिल्कुल सही लगता है, इसलिए मैं इसे ज़रूर आज़माऊँगा