Homelab’ime bakım yapmıyorum
(cleberg.net)- 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 pullvedocker 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 updateve 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-updatedocker-update,~/docker/*/altındaki her dizindesudo docker compose pullvesudo docker compose up -dkomutları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ı
rsyncile 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
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ü 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
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
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, gerekirseaptç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 .#deployile bitiyor, o yüzden pek dert etmiyorumBen 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