1 puan yazan GN⁺ 6 시간 전 | 1 yorum | WhatsApp'ta paylaş
  • Kişisel Homelab işletme yükünü azaltmak için tek sunucu yapısına ve otomatik güncellemelere odaklanılmış; böylece günlük elde yapılması gereken işlerin çoğu ortadan kaldırılmış durumda
  • Birden fazla sunucu tek bir sunucuda birleştirilince ortamın karmaşıklığı azalmış ve sunucu sayısı bazında bakım ihtiyacı %75 azalmış
  • Raspberry Pi 4, Home Assistant OS çalıştırıyor; ağ tarafı ise UniFi’nin otomatik ve zamanlanmış güncellemelerine bırakılmış, böylece manuel yönetim noktaları azalmış
  • Docker servisleri, haftada bir kez docker compose pull ve docker compose up -d çalıştıran bir crontab ile güncelleniyor; root crontab ise ağırlıklı olarak yedekleme için kullanılıyor
  • Acil bir durum yoksa aylık bakım süresi yaklaşık 15 dakika; apt update ve yeniden başlatma ertelense bile hizmetler üzerinde anlık etkisi neredeyse olmuyor

Basitleştirilmiş altyapı yapısı

  • Homelab servisleri, birden fazla cihazdan tek bir sunucuda birleştirildi
    • Önceden 4 sunucu kullanılıyordu, ancak şu anda servisler tek bir fiziksel sunucuda toplanmış durumda
    • Cluster, hypervisor ve hibrit bulut yerine bodrumdaki tek bir fiziksel cihazla işletiliyor
    • Bu sadeleştirme sayesinde sunucu bazında bakım yükü %75 azaldı
  • Raspberry Pi 4 ayrı duruyor, ancak Home Assistant OS kendi güncellemelerini yaptığı için yönetim yükü düşük
    • Teknik olarak sunucuya daha yakın olsa da, pratikte kendi kendini sürdüren bir IoT cihazı gibi hissettiriyor
  • Ağ cihazları, mini rack içindeki UniFi kurulumu ile çalışıyor
    • UniFi Dream Machine Pro, switch ve birden fazla AP buna dahil
    • Otomatik güncelleme ve zamanlanmış güncelleme desteği sayesinde ağ cihazlarına da sık sık manuel müdahale gerekmiyor

Otomatik yazılım güncellemeleri ve yedekler

  • Docker servis güncellemeleri, sunucudaki tek bir crontab girdisiyle her hafta çalıştırılıyor
    • 0 0 * * 0 docker-update
    • docker-update, ~/docker/*/ altındaki her dizinde sudo docker compose pull ve sudo docker compose up -d komutlarını çalıştırıyor
  • root kullanıcısının crontab’ı çoğunlukla yedekleme amaçlı kullanılıyor
    • Her gün sistem raporu oluşturuluyor
    • Immich ve Piped için PostgreSQL dump’ları alınıyor
    • Plex, web sunucusu, Nginx ayarları, Docker dizinleri ve SSH dosyaları rsync ile ZFS pool’a yedekleniyor
    • Docker dizini yedeklerinde veritabanı, cache, geçici dosyalar ve bazı log yolları hariç tutuluyor
  • Geriye kalan manuel işler, apt update, apt upgrade, apt autoremove çalıştırmak ve gerekirse yeniden başlatmakla sınırlı
    • Bu işlem yaklaşık 60 saniye sürüyor
  • Acil bir durum yoksa bakım süresi ayda yaklaşık 15 dakika seviyesinde
    • Bir ay boyunca SSH ile bağlanıp güncelleme yapılmasa bile gerçek hizmetler üzerinde bir etkisi olmuyor
    • 6 aydan uzun süre hiç dokunulmasa da bozulmama ihtimali var, ancak bunu bilerek test etme planı yok
  • Mevcut yapı, yoğun bir program içinde bile gizlilik, güvenlik ve kullanım kolaylığı arasında denge sağlıyor

1 yorum

 
GN⁺ 6 시간 전
Lobste.rs yorumları
  • Ev sunucumu da benzer şekilde işletiyorum
    Debian üzerinde gözetimsiz güvenlik yükseltmelerini açtım; her şeyi sürümü sabitlenmiş rootless container’larda çalıştırıyorum ve bunları Podman Quadlet üzerinden systemd yönetiyor
    Podman’ın auto-update özelliği container güncellemelerini hallediyor; systemd timer’ları da yedekleme ve imaj temizliği gibi yinelenen işleri üstleniyor
    Yalnızca çekirdek yükseltmesi olduğunda ya da imaj sürümünü artırırken yeniden başlatmak için giriyorum; bu işi de Ansible yapıyor

    • “Sürüm sabitleme” ile “Podman auto-update”in birlikte kullanılması kafa karıştırıcı
      Sürümü sabitlemenin otomatik olarak güncelleme çekmemek anlamına geldiğini sanmıştım; ama pratikte güncelleme yapılıyor gibi görünüyor, bu yüzden güncellenen şeylerin farklı hedefler olup olmadığından emin değilim
    • 10 yılı aşkın süredir neredeyse aynı yapılandırmayı kullanıyorum ve iki yılda bir en güncel stable sürüme yükseltiyorum
      Ayrı yönettiğim tek cihaz bir router; o da OpenBSD olduğu için yaklaşık 6 ayda bir yeni sürüm çıktıkça yükseltiyorum
      İkisi de sıkıcı denecek kadar kararlı
  • Benzer, ama istediğim bir özellik çıkana kadar hiçbir şeyi güncellemiyorum
    Self-hosted yazılımların iyi yanı, güncellemeyi kendi takvimime göre yapabilmem
    Her şey düzgün çalışıyorsa, yalnızca Tailscale üzerinden erişiliyorsa ve internete doğrudan açık değilse, donanım arızası dışında olduğu gibi bırakmak bile kararlı kalmasını sağlıyor

    • Bir uygulamanın internete doğrudan açık olmasıyla Tailscale üzerinden açık olması neden farklı, merak ediyorum
      Uygulamaya ulaşan veri sonuçta aynı olduğuna göre, aynı güvenlik açıkları istismar edilemez mi diye düşünüyorum
  • O durumdaysan gayet iyi bir noktadasın
    Ben de oraya ulaşmaya çalışıyorum ama henüz tamamen başaramadım
    Debian majör yükseltmeleri hâlâ 2 yılda bir elle iş gerektiriyor: "Issues to be aware of for trixie", "Obsolescence and deprecation", "Cleanup after the upgrade"
    Eski Ansible, en yeni Debian sistemlerini yönetemiyor; Debian sunucuyu yükseltince Ansible sürümünü de yükseltmek gerekiyor ve sonunda playbook’ları da yeni Ansible’a göre düzeltmek zorunda kalıyorsun
    Şimdilik bunu daha fazla Docker container kullanarak azaltmaya çalışıyorum ama Ansible’ın yerini tamamen alması zor gibi
    freeDNS, dynv6.net gibi bizzat host etmek istemediğim çevrimiçi servisler de var; onlar da ara sıra kırıcı değişiklikler yapıyor
    Yine de genel olarak gayet fena değil
    Dürüst olmak gerekirse, “bakım gerektirmeyen” homelab’in yönetimini, kullandığımız yazılımları, paketleri ve Docker imajlarını yöneten dünyadaki açık kaynak geliştiricilerine bırakmış oluyoruz

  • Kendi kurulumuma “homelab” demekte tereddüt ediyorum ama birden çok Docker container çalıştıran bir unRAID NAS
    unRAID’e para vermekten memnun olmamın nedenlerinden biri, Docker desteğinin makul derecede iyi olması, bir eklentiyle container’ların otomatik güncellenebilmesi ve diğer bakım işlerinin de epey basit olması

  • Kişisel olarak “lab” bana daha çok deney yapılan yer gibi geliyor; deneyin kendisini bakım altında tutmak zorunda olmamak da biraz aklıma takılıyor
    Container kullanmanın artıları ve eksileri bir arada
    Bazı projelerde container birinci sınıf dağıtım yöntemi, dolayısıyla güncellemeleri düzgün şekilde bu yolla alabiliyorsun
    Ama birçok kişinin bakımı belirsiz container’lar çalıştırdığı izlenimindeyim ve sorunların çoğunun da oradan çıkacağını düşünüyorum
    Asıl mesele, kullandığım yazılım için güncelleme almanın resmî yolunun ne olduğunu anlamakta
    Ben çoğunlukla RHEL klonlarını otomatik güncellemeyle işletiyorum; yeniden başlatma gerekirse Nagios haber veriyor
    Servislerin çoğu RHEL ya da EPEL içinde olduğu için bakım yükü oldukça az

  • Kendi homelab bakımım için pyinfra, tam kararında tembel olabilmemi sağladı
    Kurulum sürecini kod olarak yazabiliyorum; özellikle yapılandırma dosyaları gibi şeylerde işe yarıyor ve nixte bunu nasıl hallederim diye düşünmeden, gerekirse apt çağırabiliyorum
    Çok akıllı bir araç değil ama tek bir shell script’ten daha iyi; ileride daha da geliştirmeyi istiyorum
    Ajan tabanlı kodlama kullanıyorsanız, Claude’a pyinfra dosyalarını gösterip yapılandırma hata ayıklamasında yardım alabilmek de ekstra bir avantaj

  • Sunucuda NixOS kullanıyorum ve aklıma geldikçe ara sıra güncelliyorum
    Çoğu zaman nix flake update && nix run .#deploy ile bitiyor, o yüzden pek dert etmiyorum

  • Ben de çok benzer durumdayım; kabul etmek istemesem de bunun büyük kısmı sonuçta yapılandırmanın daha basit hale gelmesinden kaynaklanıyor
    Eskiden dönen log’lara kadar eksiksiz bir gözlemlenebilirlik stack’i severdim; ama son 2 yıldan uzun süredir yaşadığım can sıkıcı şeylerin tamamı o karmaşıklıktan çıkan küçük sorunlardı
    Log ve metrikler yüzünden diskin dolması gibi şeyler
    Çözmesi çok kolay ama artık bunlarla uğraşmak istemiyorum

  • docker-compose kurulumunu güncel tutmak için Watchtower hoşuma gidiyor
    https://hub.docker.com/r/nickfedor/watchtower
    Sürümü sürekli yükseltirken önemli değişiklikleri bir ölçüde hesaba katabilen yapılandırma seçenekleri oldukça iyi
    Temel işletim sistemi olarak Debian LTS kullanıyorum; yalnızca gözetimsiz güncellemeler açık, yeni çekirdek çıkınca yeniden başlatmak için giriyorum
    Gerçekten fazla iş çıkarmıyor; ayda 15 dakikadan az olduğu görüşüne katılıyorum