2 poin oleh GN⁺ 9 jam lalu | 1 komentar | Bagikan ke WhatsApp
  • OS server Linux yang dirancang khusus untuk kontainer Docker; cukup boot ISO dan langsung masuk ke lingkungan Docker Engine
  • Sistem inti dibuat dengan arsitektur immutable dan stateless, sementara hanya /etc, /var, /home, dan data Docker yang dipisahkan ke area tulis terpisah, sehingga sangat mengurangi beban instalasi dan konfigurasi awal
  • Filesystem data bawaan adalah penyimpanan volatil berbasis tmpfs; saat persistensi diaktifkan, perangkat penyimpanan terpisah akan dideteksi otomatis, dipartisi, diformat, dan di-mount, serta bila perlu dapat dikonfigurasi sebagai Btrfs RAID1
  • Menggunakan root read-only berbasis squashfs dan komponen minimum untuk mengurangi permukaan paparan terhadap malware atau perubahan tak disengaja, sekaligus menurunkan penggunaan sumber daya dan konsumsi daya
  • Khusus x86-64 dan berjalan di bare metal maupun mesin virtual, sehingga Anda bisa langsung fokus pada menjalankan kontainer dan mengoperasikan self-hosting alih-alih mengelola server itu sendiri

Ikhtisar

  • OS server Linux yang dirancang khusus untuk kontainer Docker, dan saat live boot dari ISO akan langsung masuk ke lingkungan Docker Engine
  • Untuk mengurangi beban instalasi dan konfigurasi awal, sistem inti dibuat immutable, sementara data dan kustomisasi pengguna dipisahkan ke area penyimpanan tersendiri
  • Menargetkan homelab, bare metal, lingkungan virtualisasi, edge node, hingga klaster, tetapi arsitektur yang didukung terbatas pada x86-64
  • Mengutamakan komposisi minimum dan kemudahan penggunaan, sehingga fokus berpindah dari administrasi server ke menjalankan dan mengoperasikan kontainer itu sendiri

Fitur utama

  • Dengan model plug and play, cukup unduh ISO dan boot, maka Docker Engine beserta alat yang dibutuhkan langsung siap digunakan
  • Meminimalkan komponen untuk menurunkan beban belajar dan memudahkan memahami cara kerja sistem dengan cepat
  • Menggunakan inti yang immutable dan stateless untuk mengurangi permukaan paparan terhadap malware dan perubahan tak disengaja, serta selalu boot dalam keadaan yang sama
  • Menyediakan persistensi opsional; filesystem data bawaan adalah tmpfs volatil di RAM, dan saat persistensi diaktifkan sistem otomatis mendeteksi perangkat penyimpanan terpisah, mempartisi, memformat, dan me-mount-nya
  • Mengurangi proses yang tidak perlu untuk menekan penggunaan sumber daya dan konsumsi daya, serta memperpanjang masa pakai perangkat lama atau berspesifikasi rendah
  • Mempermudah menjalankan self-hosting agar pengguna bisa mengurangi ketergantungan pada Big Tech dan mengelola data serta privasi mereka sendiri

Cara memulai

  • Unduh image dari ISO terbaru atau bagian unduhan, tulis ke USB, lalu boot
  • Pada beberapa sistem, mungkin perlu menonaktifkan safe boot di BIOS sebelum boot
  • Login bawaan adalah nama pengguna op dan kata sandi opsecret; sebelum mengekspos sistem ke internet, setidaknya ganti kata sandi terlebih dahulu
  • Wi-Fi dapat dikonfigurasi secara opsional dengan setup-wifi
  • Menjalankan kontainer sama seperti penggunaan Docker biasa; contoh yang digunakan adalah docker run -it --rm busybox ps
  • Saat mengaktifkan persistensi, magic header harus ditulis ke block device, bukan partisi, dan proses ini akan menghapus data yang ada

Struktur boot dan runtime

  • ISO dapat di-boot di bare metal maupun mesin virtual, serta mendukung UEFI dan BIOS tradisional
  • Proses startup menggunakan sistem init mirip sysv untuk menjaga alur boot tetap sederhana dan transparan
  • Bootloader memuat kernel Linux dan root filesystem ke memori, lalu kernel menginisialisasi perangkat keras dan menyerahkan kontrol ke /init
  • init membaca /etc/inittab, me-mount tmpfs untuk /tmp dan /run, lalu menjalankan skrip di /etc/init.d
  • Pada tahap awal, data filesystem di-mount untuk menyediakan data Docker dan lapisan atas overlay bagi /etc, /var, dan /home
  • Setelah seluruh filesystem dan overlay siap, layanan lain dijalankan, dan sejak saat itu sistem dapat melayani kontainer

Desain immutable

  • Root filesystem disediakan sebagai image statis squashfs terkompresi, dengan struktur yang tidak dapat dimodifikasi secara langsung
  • Berkat struktur ini, perangkat lunak dan konfigurasi penting sudah disertakan sebelumnya, sehingga menjadi image mandiri yang dapat di-boot tanpa proses instalasi
  • Ini menghindari package manager, manajemen dependensi, dan perlombaan pembaruan pada sistem yang sudah ada, serta mengganti pekerjaan menginstal ulang sesuatu yang sudah berjalan dengan satu kali reboot
  • File dalam root filesystem tidak bisa terhapus karena kesalahan atau dimodifikasi oleh virus, dan tidak seperti sistem tradisional, kernel serta biner dasar tidak dibiarkan terekspos dalam keadaan dapat diubah sepenuhnya
  • Karena root bersifat read-only, sistem juga mencegah penumpukan sampah berupa file sisa jangka panjang yang merusak backup, performa, dan kerapian sistem
  • Anda bebas bereksperimen di VM lokal atau komputer lain, lalu mengembalikan perubahan hanya dengan reboot
  • Media boot tidak menyimpan informasi penting, dan karena sifat immutable itu tetap terjaga, perangkat yang rusak atau hilang bisa dipulihkan dengan salinan baru

Struktur persistensi

  • Untuk memasang dan menjalankan kontainer, mengubah konfigurasi, dan menulis data, diperlukan filesystem yang dapat ditulis; agar tetap bertahan setelah reboot, persistensi dibutuhkan
  • Pada tahap awal boot, subsistem bawahan yang berjalan otomatis me-mount data filesystem ke /mnt/lightwhale-data
  • Data yang ditulis Lightwhale dikumpulkan di bawah /mnt/lightwhale-data/lightwhale-state, dan direktori ini menjadi lapisan atas yang dapat ditulis untuk overlayfs
  • Nilai bawaan adalah tmpfs volatil, dan saat persistensi diaktifkan lokasi data filesystem berpindah ke perangkat penyimpanan terpisah
  • Alih-alih menimpa seluruh root, hanya /etc, /var, dan /home yang dioverlay secara selektif agar tujuan immutable tetap terjaga
    • /etc digunakan untuk kustomisasi pengaturan sistem seperti jaringan, kata sandi, dan sshd
    • /var digunakan untuk log dan data aplikasi lainnya
    • /home digunakan untuk kustomisasi pengguna seperti SSH authorized keys, clone repositori Git, dan pengelolaan stack Docker/Swarm
  • Data root Docker berada langsung di /mnt/lightwhale-data/lightwhale-state/docker dan menyimpan image, kontainer, volume, serta status jaringan

Aktivasi persistensi dan tahapan pemrosesan otomatis

  • Persistensi harus diaktifkan secara eksplisit dengan menulis magic header ke perangkat penyimpanan, misalnya echo "lightwhale-please-format-me" | sudo dd conv=notrunc of=/dev/sdx
  • Magic header dapat ditulis ke beberapa perangkat penyimpanan, dan dalam kasus itu semuanya akan digabungkan sebagai volume Btrfs RAID1
  • Pada boot berikutnya, sistem akan mendeteksi magic disk, memformatnya, lalu menggunakannya sebagai data filesystem
  • persistence subsystem dimulai dari /etc/init.d/S11persistence
  • Deteksi data filesystem

    • Semua disk dipindai untuk mencari partisi dengan label filesystem lightwhale-data
    • Jika ditemukan, partisi itu digunakan sebagai data filesystem dan tahap mount berikutnya dilewati
  • Deteksi magic disk dan pembuatan partisi

    • Magic disk diidentifikasi dengan mencari urutan byte lightwhale-please-format-me pada posisi awal disk
    • Pada setiap magic disk akan dibuat partisi swap berlabel lightwhale-swap dan partisi Linux berlabel lightwhale-data yang memakai seluruh sisa ruang
  • Pembuatan filesystem

    • Partisi magic swap diformat lalu diberi label lightwhale-swap
    • Jika hanya ada satu partisi magic data, partisi itu diformat dengan btrfs --data single --metadata dup
    • Jika ada beberapa, semuanya digabung dalam RAID1 dan diformat dengan btrfs --data raid1 --metadata raid1cn
    • Subvolume @lightwhale-data, @lightwhale-state, dan @lightwhale-state-snapshots dibuat
  • Konfigurasi mount dan overlay

    • Jika data filesystem tersedia, @lightwhale-data di-mount ke /mnt/lightwhale-data; jika tidak, tmpfs di-mount sebagai pengganti
    • Lapisan bawah immutable melakukan bind mount /etc ke /run/lightwhale/overlay/lower/etc dan menyiapkan mirror pohon direktori root filesystem
    • Lapisan atas yang dapat ditulis disiapkan di jalur seperti /mnt/lightwhale-data/lightwhale-state/overlay/upper/etc
    • Setelah itu, kedua lapisan digabung dengan overlayfs dan di-mount ke /etc, lalu cara yang sama diulangi untuk /var dan /home

Batasan dan poin penting FAQ

  • Perangkat keras yang didukung khusus x86-64 dan mendukung BIOS maupun EFI
  • Raspberry Pi saat ini belum didukung dan sudah masuk backlog
  • Apple M-series tidak didukung di bare metal, tetapi dapat dijalankan secara virtual
  • Bisa berjalan di lingkungan virtual seperti VMWare/ESX/Proxmox/cloud, serta menyertakan guest agent untuk QEMU/KVM dan VMware ESXi
  • Perangkat lunak yang dapat dipasang hanya kontainer Docker; instalasi langsung ke root filesystem tidak dimungkinkan
  • Sistem inti memang immutable, tetapi konfigurasi, kustomisasi, dan data kontainer pada dasarnya ditulis ke memori dan hanya bertahan setelah reboot jika persistensi diaktifkan
  • Hostname default menyertakan machine ID untuk mencegah konflik jaringan, dan jika diubah dengan setup-hostname, perubahan langsung berlaku kecuali pada shell saat ini
  • Tidak ada jaminan, dan tanggung jawab atas hasil penggunaan berada pada pengguna
  • Menambahkan alat favorit seperti wget atau nano ke root filesystem bukan arah yang dituju; batasan sebagai OS server minimal yang sangat spesifik tujuan tetap dipertahankan
  • Ringkasan kebijakan privasinya: tidak mengumpulkan data pribadi, dan hanya jika Anda menyetujui telemetri maka data anonim akan dikumpulkan, yang isinya juga dapat ditinjau
  • Kepatuhan terhadap regulasi terkait usia bukan tanggung jawab OS itu sendiri, melainkan layanan pengguna yang dijalankan di atasnya

Tautan terkait

1 komentar

 
GN⁺ 9 jam lalu
Opini Hacker News
  • Patut diapresiasi karena benar-benar merilis sesuatu, tetapi masih belum terlihat jelas kenapa orang harus memakai ini
    Sudah ada alternatif dengan tujuan serupa seperti Flatcar Container Linux, Fedora CoreOS, Talos Linux, dan IncusOS, dan komunitas maupun dukungan komersialnya juga tampak lebih kuat
    Rasanya perlu penjelasan yang lebih jelas soal apa yang membedakannya agar lebih meyakinkan

    • Saya memakai IncusOS di homelab, dan pengalaman konfigurasi serta pemakaiannya benar-benar bagus
      Saya pindah dari Proxmox dan sekarang mengelola semua VM di sana, sambil aktif memakai coding assistant untuk mengotomatisasi konfigurasi CLI IncusOS, mengonversi image Docker-Compose ke Incus, dan menulis skrip bash untuk menjalankan container baru tanpa khawatir meski memakai --dangerously-skip-permissions
      Bagian terbaiknya adalah semuanya bisa dikelola dengan file deklaratif, jadi konfigurasi jaringan maupun pengaturan resource selalu mudah dipantau
      Kalau kebutuhannya mirip, IncusOS layak dilirik
    • Alat seperti itu biasanya butuh berjam-jam konfigurasi, sedangkan yang ini cukup boot lalu langsung jalan
  • Selama masih ada software, maintenance tidak bisa dihindari
    Tidak ada yang bebas bug, dan kalau bilang tidak perlu upgrade, patch, atau pengelolaan sama sekali, itu mudah menjadi jalan pintas menuju sistem yang sudah dikompromikan

    • Ini bukan berarti OS ini diklaim tidak perlu maintenance
      Lebih tepatnya, ia mengurangi cukup banyak maintenance yang biasanya perlu diperhatikan pada base system tradisional, karena 1) hampir tidak ada yang terpasang dan 2) upgrade base system mudah, jadi tinggal reboot lalu jalankan kembali container
      Tentu saja software yang berjalan di atasnya tetap perlu di-upgrade, tetapi kalau berbasis Docker, layer itu biasanya dikelola di tempat lain, jadi cukup ambil container baru lalu restart, sementara OS lebih berperan memastikan data terpasang di lokasi yang sama
      Jika menjalankan semua software lewat Docker bukan masalah, ini terlihat seperti pilihan selangkah lebih maju dibanding Debian atau Redhat, dan juga lebih sedikit kompleksitas prosedural dibanding CoreOS
      Seberapa mudah dipakai dalam praktiknya masih agak dipertanyakan, terutama di sisi manajemen storage, tetapi setidaknya sangat jelas apa yang ingin dijual
    • Saya sudah mengatakan hal ini selama bertahun-tahun
      Self-hosting memang memungkinkan, tetapi pada dasarnya itu membuat kita menanggung SLA bahkan di luar jam kerja
      Karena itu, semua yang jumlah penggunanya lebih dari 1 sudah lama saya singkirkan
    • Tentu saja tidak ada yang benar-benar bebas bug
      Namun, ada alasan kenapa proyek seperti Talos itu ada
      Tanpa terminal, tanpa SSH, tanpa package manager, dengan filesystem read-only, tanpa systemd, dan dengan jumlah executable seminimal mungkin, attack surface jelas berkurang
      Ini bukan komentar soal proyek yang dibahas di sini secara khusus, tetapi sistem yang lebih aman sekaligus butuh lebih sedikit maintenance memang benar-benar ada
      Karena tidak mungkin 100% aman, bukan berarti pendekatan yang benar adalah YOLO menerima package npm yang diubah 3 menit lalu
  • Menarik, tetapi saya penasaran bagaimana patch, upgrade, dan build ISO sendiri dilakukan
    Melihat source repository-nya, bagian itu hampir tidak terlihat

    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-nya tampak sudah lama tidak diperbarui
      Commit terakhir 2 tahun lalu, dan sepertinya source untuk versi 3.0 tidak ada
  • Bukankah ini bukan OS, melainkan distro Linux?

    • Kalau bukan distro Linux, saya malah ingin bertanya apa itu yang disebut OS
  • Saya merasa masih hampir pemula di bidang ini, tetapi sudah lebih dari 10 tahun melakukan self-hosting, dan sejak sekitar 2019 pindah ke Unraid
    Karena berpusat pada portal web, sistemnya mudah ditangani dan maintenance-nya juga nyaman
    Saya penasaran bagaimana cara berinteraksi dengan OS home server ini
    Karena tidak ada gambar di situsnya, saya jadi bertanya-tanya apakah semuanya harus ditangani sepenuhnya berbasis terminal

  • Saya baru saja memasang Docker di Ubuntu Server dengan satu baris perintah dan langsung mulai memakainya, jadi saya kurang paham apa tepatnya yang berbeda di sini dan apa value proposition-nya
    Saya juga penasaran apa yang dimaksud dengan maintenance di sini secara konkret, dan apakah ini server yang dibuat lebih ramping untuk berjalan di hardware yang lebih lemah
    Saya baru mulai menyiapkan home server, jadi benar-benar ingin tahu apa keuntungannya

    • Saya juga melakukan hal yang sama
      Katanya kelebihan pendekatan immutable ada di update: kalau pindah ke versi image baru lalu ada masalah, kita bisa rollback dengan cukup boot ke versi sebelumnya
      Namun secara fungsional, saya juga merasa Ubuntu Server sudah cukup
      Beberapa kali setahun saya hanya menjalankan apt update dan upgrade, lalu aksesnya hanya lokal dan lewat Tailscale
      OS immutable seperti ini terasa lebih menarik untuk laptop atau desktop daripada home server
      Karena hanya home directory yang bisa ditulis, ada harapan OS jadi lebih stabil dan tidak mudah rusak
  • Saya penasaran metode backup berkala seperti apa yang direkomendasikan untuk data container yang berjalan di Lightwhale

  • Saya kurang paham
    Kalau hanya akan menjalankan Docker, saya tidak mengerti kenapa perlu immutable, dan kenapa perlu varian Debian khusus alih-alih Debian atau Ubuntu yang bisa menjalankan Docker dalam beberapa menit
    Soal maintenance juga bukankah pada dasarnya tinggal mengelola repository distro atau repository Docker resmi lewat package manager
    Saya harap tren immutable seperti ini mulai menghilang, dan menurut saya flatpak maupun snap juga sama
    Linux sejak awal sebenarnya sudah melakukan hal-hal yang konon ingin diselesaikan oleh solusi seperti ini
    Pengguna tidak bisa menyentuh base system tanpa root, dan aplikasi cukup memasang dependensi ke /usr/lib

    • Bagi saya, kombinasi Debian stable dengan podman/Docker sudah cukup immutable
      Kemudahan mendapatkan bantuan saat mentok juga merupakan jaminan besar
      Memang bisa dibuat lebih kecil, tetapi karena ini sudah berjalan baik bahkan di hardware aneh seperti BananaPi spesifikasi rendah atau RISC-V murah, jadi sulit melihat alasan untuk menginginkan yang lain
  • Hal seperti ini tampaknya cukup cocok untuk cluster mode Swarm
    Saya tidak tahu apakah fokusnya hanya pada home server, tetapi saya akan terus mengikutinya
    Proyeknya juga terlihat sangat bagus

    • Saat ini home server adalah area yang paling mudah dicoba orang tanpa beban besar, jadi untuk sekarang memang hanya dipromosikan ke sana
      Namun Lightwhale sudah berjalan di production, dan juga sangat cocok untuk penggunaan cluster Swarm
  • Terlihat sangat rapi
    Dari sudut pandang pemula, pendekatan seperti ini terasa pas karena membantu mencegah konfigurasi rusak, jadi saya pasti ingin mencobanya