1 poin oleh GN⁺ 6 jam lalu | 1 komentar | Bagikan ke WhatsApp
  • Untuk mengurangi beban mengelola Homelab pribadi, konfigurasi difokuskan pada satu server dan pembaruan otomatis, sehingga sebagian besar pekerjaan rutin yang perlu ditangani telah dihilangkan
  • Dengan menggabungkan beberapa server menjadi satu, kompleksitas lingkungan berkurang, dan pemeliharaan berdasarkan jumlah server juga turun 75%
  • Raspberry Pi 4 diserahkan ke Home Assistant OS, sementara jaringan diserahkan ke pembaruan otomatis dan terjadwal dari UniFi, sehingga titik pengelolaan manual berkurang
  • Layanan Docker diperbarui melalui crontab yang menjalankan docker compose pull dan docker compose up -d seminggu sekali, sementara root crontab terutama digunakan untuk pencadangan
  • Jika tidak ada keadaan darurat, pemeliharaan bulanan memakan waktu sekitar 15 menit, dan menunda apt update maupun restart nyaris tidak berdampak langsung pada layanan

Konfigurasi Infrastruktur yang Disederhanakan

  • Layanan Homelab digabungkan dari beberapa perangkat menjadi satu server
    • Sebelumnya menggunakan 4 server, tetapi kini layanan dikumpulkan pada satu server fisik
    • Alih-alih cluster, hypervisor, atau hybrid cloud, operasional dijalankan pada satu perangkat fisik di ruang bawah tanah
    • Penyederhanaan ini membuat volume pemeliharaan berdasarkan server berkurang 75%
  • Raspberry Pi 4 masih terpisah, tetapi Home Assistant OS menangani pembaruannya sendiri sehingga beban pengelolaannya kecil
    • Secara teknis lebih dekat ke server, tetapi pengalaman penggunaannya lebih mirip perangkat IoT yang memelihara dirinya sendiri
  • Perangkat jaringan dijalankan dengan konfigurasi UniFi di mini rack
    • Mencakup UniFi Dream Machine Pro, switch, dan beberapa AP
    • Karena mendukung pembaruan otomatis dan pembaruan terjadwal, perangkat jaringan juga tidak perlu sering disentuh secara manual

Pembaruan Perangkat Lunak dan Pencadangan yang Diotomatisasi

  • Pembaruan layanan Docker dijalankan setiap minggu melalui satu entri crontab di server
    • 0 0 * * 0 docker-update
    • docker-update menjalankan sudo docker compose pull dan sudo docker compose up -d di setiap direktori di bawah ~/docker/*/
  • crontab pengguna root sebagian besar digunakan untuk pencadangan
    • Membuat laporan sistem setiap hari
    • Membuat dump PostgreSQL untuk Immich dan Piped
    • Mencadangkan Plex, server web, konfigurasi Nginx, direktori Docker, dan file SSH ke ZFS pool dengan rsync
    • Dalam pencadangan direktori Docker, jalur database, cache, file sementara, dan sebagian log dikecualikan
  • Pekerjaan manual yang tersisa hanya menjalankan apt update, apt upgrade, apt autoremove, serta restart bila diperlukan
    • Pekerjaan ini memakan waktu sekitar 60 detik
  • Jika tidak ada keadaan darurat, waktu pemeliharaan berada di kisaran sekitar 15 menit per bulan
    • Meski tidak login lewat SSH untuk memperbarui selama sebulan, layanan nyata tidak terdampak
    • Ada kemungkinan tidak akan rusak meski dibiarkan lebih dari 6 bulan, tetapi tidak ada rencana untuk sengaja mengujinya
  • Konfigurasi saat ini memberikan keseimbangan antara privasi, keamanan, dan kenyamanan di tengah jadwal yang sibuk

1 komentar

 
GN⁺ 6 jam lalu
Komentar di Lobste.rs
  • Server rumahan saya juga dioperasikan dengan cara serupa
    Di Debian, saya mengaktifkan upgrade keamanan tanpa pengawasan, menjalankan semuanya sebagai container rootless dengan versi yang dipin, dan dikelola oleh systemd melalui Podman Quadlet
    auto-update milik Podman menangani pembaruan container, sementara timer systemd menangani tugas berulang seperti backup dan pembersihan image
    Saya hanya masuk untuk reboot saat ada upgrade kernel atau saat menaikkan versi image, dan pekerjaan ini ditangani oleh Ansible

    • Bagian yang memakai “versi dipin” bersama “Podman auto-update” agak membingungkan
      Saya memahami versi yang dipin berarti tidak mengambil pembaruan secara otomatis, tetapi sepertinya sebenarnya tetap ada pembaruan, jadi saya kurang paham apakah yang diperbarui adalah target yang berbeda
    • Saya sudah memakai konfigurasi yang hampir sama selama lebih dari 10 tahun, dan menaikkannya ke stable terbaru setiap dua tahun
      Satu-satunya perangkat yang saya kelola terpisah adalah router, dan karena memakai OpenBSD, saya meng-upgrade-nya kira-kira setiap 6 bulan saat versi baru keluar
      Keduanya stabil sampai terasa membosankan
  • Mirip, tetapi saya tidak memperbarui apa pun sebelum ada fitur yang saya inginkan
    Hal bagus dari perangkat lunak self-hosting adalah saya bisa memperbaruinya sesuai jadwal saya sendiri
    Jika semuanya berjalan baik, hanya bisa diakses melalui Tailscale, dan tidak terekspos langsung ke internet, maka selain kegagalan hardware, membiarkannya saja sudah stabil

    • Saya penasaran mengapa aplikasi yang terekspos langsung ke internet berbeda dengan yang terekspos melalui Tailscale
      Data yang mencapai aplikasi pada akhirnya sama, jadi bukankah kerentanan yang sama bisa dieksploitasi?
  • Kalau sudah dalam kondisi seperti itu, itu situasi yang cukup bagus
    Saya juga berusaha mencapainya, tetapi belum sepenuhnya berhasil
    Upgrade mayor Debian masih perlu dilakukan manual setiap 2 tahun: "Issues to be aware of for trixie", "Obsolescence and deprecation", "Cleanup after the upgrade"
    Ansible lama tidak bisa menangani sistem Debian terbaru, jadi saat menaikkan server Debian, versi Ansible juga harus dinaikkan, dan akhirnya playbook pun harus disesuaikan dengan Ansible baru
    Saat ini saya mencoba menguranginya dengan using more Docker containers, tetapi sepertinya sulit untuk sepenuhnya menggantikan Ansible
    Ada juga layanan online seperti freeDNS dan dynv6.net yang tidak ingin saya host sendiri, dan mereka juga sesekali membuat perubahan yang merusak kompatibilitas
    Meski begitu, secara keseluruhan kondisinya cukup baik
    Jujur saja, pengelolaan homelab yang “tanpa maintenance” pada dasarnya kita serahkan kepada para pengembang open source di seluruh dunia yang mengelola software, paket, dan image Docker yang kita pakai

  • Saya ragu menyebut konfigurasi saya sebagai “homelab”, tetapi ini adalah NAS unRAID yang menjalankan beberapa container Docker
    Salah satu alasan saya puas membayar unRAID adalah dukungan Docker-nya cukup bagus, pembaruan container otomatis bisa dilakukan lewat plugin, dan maintenance lainnya juga cukup sederhana

  • Secara pribadi, “lab” lebih terasa seperti tempat bereksperimen, dan saya agak terganggu oleh fakta bahwa eksperimen itu sendiri tidak perlu dimaintenance
    Penggunaan container punya sisi plus dan minus
    Untuk beberapa proyek, container adalah sarana distribusi kelas satu, sehingga pembaruan bisa diterima dengan benar lewat cara itu
    Namun tampaknya banyak orang menjalankan container yang pengelolaannya kurang jelas, dan saya rasa dari sanalah banyak masalah akan muncul
    Intinya adalah memahami apa jalur resmi untuk menerima pembaruan dari software yang kita gunakan
    Saya terutama menjalankan klon RHEL dengan pembaruan otomatis, dan jika reboot diperlukan, Nagios akan memberi tahu
    Sebagian besar layanan ada di RHEL atau EPEL, jadi maintenance-nya cukup sedikit

  • Untuk maintenance homelab saya, pyinfra adalah tingkat kemalasan yang pas
    Proses konfigurasi bisa dituliskan sebagai kode, sangat berguna terutama untuk hal seperti file konfigurasi, dan jika perlu saya cukup memanggil apt tanpa perlu pusing bagaimana nix menangani ini
    Ini bukan tool yang sangat pintar, tetapi lebih baik daripada satu skrip shell tunggal, dan saya ingin mengembangkannya lebih jauh ke depan
    Jika memakai agentic coding, ada bonus bahwa kita bisa menunjukkan file pyinfra kepada Claude dan mendapatkan bantuan untuk debugging konfigurasi

  • Saya memakai NixOS di server, dan kadang memperbaruinya saat teringat
    Sebagian besar hanya selesai dengan nix flake update && nix run .#deploy, jadi tidak terlalu saya pikirkan

  • Saya juga berada dalam situasi yang sangat mirip, dan meski enggan mengakuinya, sebagian besar pada akhirnya berkat konfigurasi yang menjadi lebih sederhana
    Dulu saya menyukai stack observability lengkap dengan log berotasi, tetapi selama lebih dari 2 tahun terakhir, semua kerepotan berasal dari masalah kecil akibat kompleksitas itu
    Misalnya disk penuh karena log dan metrik
    Solusinya sangat mudah, tetapi sekarang saya tidak ingin lagi mengurus hal-hal seperti itu

  • Saya suka Watchtower untuk menjaga konfigurasi docker-compose tetap terbaru
    https://hub.docker.com/r/nickfedor/watchtower
    Opsi konfigurasinya cukup bagus untuk terus menaikkan versi sambil tetap memperhitungkan perubahan besar sampai batas tertentu
    Sistem operasi dasarnya adalah Debian LTS dengan unattended updates saja yang diaktifkan, dan jika kernel baru keluar, saya masuk untuk reboot
    Benar-benar tidak banyak pekerjaan, dan saya setuju dengan klaim kurang dari 15 menit per bulan