6 puan yazan GN⁺ 2023-10-17 | 2 yorum | WhatsApp'ta paylaş
  • Cockpit, Linux sunucularını tarayıcı üzerinden yönetmek için kullanılan bir grafik arayüzdür; yeni başlayanların ve uzman yöneticilerin tek tek sistemlerin durumunu hızla görüp yönetmesini sağlar
  • Komut satırıyla aynı sistem API'leri ve komutlarını kullandığı için Cockpit, CLI, Ansible ve mevcut sunucu yönetim araçları birlikte kullanıldığında yönetim akışı çakışmaz
  • Ağ, güvenlik duvarı, RAID·LUKS depolama, sanal makineler, konteynerler, günlükler, donanım, güncellemeler, performans, kullanıcı hesapları, systemd servisleri ve uzak terminal tek bir ekranda yönetilebilir
  • Varsayılan kimlik doğrulama, sistemin normal kullanıcı girişi ve yetkilerini izler; single-sign-on ve diğer kimlik doğrulama yöntemlerini de destekler ve yalnızca gerektiğinde systemd socket activation ile çalışır
  • Başlıca Linux dağıtımlarına kurulduktan sonra Windows, MacOS ve Android dahil farklı işletim sistemlerindeki tarayıcılardan sunucunun 9090 portu üzerinden erişilerek kullanılabilir

Tarayıcıdan tekil sunucu yönetimi

  • Cockpit, sunucular için geliştirilmiş birleşik, web tabanlı bir grafik arayüzdür
  • Hedef kullanıcı kitlesi geniştir
    • Windows yöneticileri dahil Linux'a yeni başlayanlar
    • Linux'a aşina olup sunucuları grafik arayüzle daha kolay yönetmek isteyen kullanıcılar
    • Esas olarak başka araçlar kullansa da tekil sistemlerin genel görünümünü kontrol etmek isteyen uzman yöneticiler
  • Mevcut yönetim yöntemlerinin yerini almak yerine, aynı sistemi birden fazla yöntemle yönetmeye olanak verecek şekilde tasarlanmıştır
    • Cockpit ve komut satırı yardımcı programları birlikte kullanılabilir
    • Ansible ve diğer mevcut araçlar kullanılmaya devam edilebilir
    • Linux dışı cihazlardan bağlanırken yararlı olan yerleşik bir terminal sunar
  • Linux komutlarını ezberlemek gerekmeden web tarayıcısında sunucu durumunu görüp fareyle işlem yapılabilir
    • Konteyner başlatma
    • Depolama yönetimi
    • Ağ yapılandırması
    • Günlük inceleme
  • Cockpit, tekil sunucular için grafik bir “masaüstü arayüzü” gibi düşünülebilir

Kimlik doğrulama, entegrasyon ve genişletme yöntemi

  • Cockpit, sistemde zaten mevcut olan API'leri kullanır; yeni alt sistemler oluşturmaz veya kendi araç katmanını eklemez
  • Varsayılan olarak sistemin normal kullanıcı girişi ve yetkilerini kullanır
  • Kullanılmadığında arka planda sürekli çalışmaz; gerektiğinde systemd socket activation ile devreye girer
  • Her Cockpit ana makinesinde yapılabilecek işlemler şunlardır
    • Ağ ayarlarını görüntüleme ve değiştirme
    • Güvenlik duvarı ayarları
    • RAID ve LUKS bölümleri dahil depolama yönetimi
    • Sanal makine oluşturma ve yönetme
    • Konteyner indirme ve çalıştırma
    • Sistem günlüklerinde gezinme ve arama
    • Sistem donanımını görüntüleme
    • Yazılım yükseltmeleri
    • Performans izleme
    • Kullanıcı hesabı yönetimi
    • systemd tabanlı servisleri görüntüleme ve onlarla etkileşim kurma
    • Yerel web tarayıcısından uzak sunucu terminalini kullanma
    • birden çok Cockpit sunucusu arasında geçiş yapma
    • uygulamalar ve eklentiler kurarak işlev genişletme
    • özel modüller yazma
  • Sorun giderme için de kullanılabilir
    • Ağ sorunlarını teşhis etme
    • Hatalı çalışan sanal makineleri bulma ve müdahale etme
    • SELinux günlüklerini inceleme ve yaygın ihlalleri tek tıklamayla düzeltme
    • CPU yükü, bellek kullanımı, ağ etkinliği ve depolama performansına ilişkin ayrıntılı metrikleri sistem günlüğüyle ilişkilendirerek görüntüleme
  • İsteğe bağlı ve üçüncü taraf uygulamaları destekler
  • Tasarım, kullanılabilirlik araştırmalarıyla test edilip iyileştirilir; tüm kod değişiklikleri birleştirilmeden önce geçilmesi gereken testlerden geçer
  • Ücretsiz kullanılabilir ve GNU LGPL lisansı altında sunulur

Kurulum ve erişim

  • Başlıca dağıtımlara kurulabilir ve çalıştırıldıktan sonra herhangi bir işletim sistemindeki yaygın web tarayıcılarından erişilebilir
  • Cockpit, zaman bazlı bir sürüm döngüsüne sahiptir; yeni sürümler her 2 haftada bir yayınlanır

2 yorum

 
GN⁺ 2023-10-17
Hacker News yorumları
  • Grafik yönetim arayüzlerini kötüleyip yalnızca komut satırını tercih etmek, ağaçlara bakmaktan ormanı görememeye yakın bir tutum
    Sunucuyu tıklayarak işletmek iyi bir yöntem değil, ama açık konuşmak gerekirse ssh de işletme yöntemi olarak aynı durumda
    Gerçek bir prodüksiyon sunucusunun durumu en baştan yeniden üretilebilir olmalı; OS kurulumu, yazılım ekleme ve ayarları uyguladıktan sonra dokunmamak daha doğru
    ssh de olsa Cockpit de olsa doğrudan içeri girince bir şeyleri bozma olasılığı yüksek
    Sunucuya doğrudan girmeniz gereken tek zaman keşif amaçlı işlerdir; o zaman da GUI ile komut satırı arasındaki üstünlük o kadar net değildir
    GUI, keşfedilebilirlik ve görünürlük açısından iyi olduğu için ayar yöntemini bulmaya çalıştığınız deney aşamasında yardımcı olur

    • “Tıklayarak işletmek sunucu işletme yöntemi değildir”, “sunucu durumu en baştan yeniden üretilebilir olmalıdır” gibi sözler fazla apaçık gerçeklermiş gibi kullanılıyor; oysa pratikte mühendislik ödünleşimleri gerekir
      Sunucu durumunun neden en baştan yeniden üretilebilir olması gerektiğini, “en baştan”ın ne olduğunu, tıklayarak işletmenin neden olmayacağını açıklamak gerekir
      OS kurulumu, yazılım ekleme ve ayarları uygulamanın sunucu durumunu tamamen yakaladığını söylemek de zor
      Yazılım yama seviyesi, uygulama verileri ve kullanıcı verileri de sunucu durumuna dahildir
      Prodüksiyon sunucusunun durumu yedekten geri yüklenirse tam olarak yeniden üretilebilir; yedekleme/geri yükleme tıklamalı işletime de iyi uyar ve OS’yi yeniden kurup ayar betikleri çalıştırmaktan daha hızlı ve güvenilir olabilir
      Kalıcı veri depolayan bir sunucuysa, yeni sunucu dağıtıldıktan sonra kullanıcı verilerini geri yüklemek için zaten bir yedekleme sistemine ihtiyaç vardır
    • Bu varsayım, sunucuların evcil hayvan değil çiftlik hayvanı gibi ele alındığı bir ortamı varsayar
      Herkes büyük ölçekli bir web platformunu bir orkestrasyon platformu üzerinde işletmiyor
      Yine de evcil hayvan usulü sunucularda bile kurtarma veya yeniden kurma yöntemini bilmek gerekir; aksi halde düzgün bir felaket kurtarma stratejisi yok demektir
    • “Prodüksiyon sunucusu durumunu en baştan yeniden üretmek” derken hangi aracı düşündüğünüzü merak ediyorum
      Homelab’de Raspberry Pi ayarları için Ansible kullanıyorum; OS kurulumu kısmı, boot medyasına imajı bit bit kopyalayıp bazı seçili ayarları yapmak şeklinde olduğu için mümkün görünüyor
    • Bu ölçüte göre yalnızca NixOS kullanılıyor gibi mi oluyor acaba
    • İkisi de farklı nedenlerle iyi
      Terminalde çalışmayı tercih ederim ama görselleştirme için GUI’nin daha iyi olduğu bence tartışma konusu bile değil
  • Bu projenin harika yanı, systemd soket aktivasyonu kullandığı için sürekli çalışan bir sunucu sürecine gerek olmaması
    Cockpit’i kullanmadığınızda kaynak israfı yok; sayfaya erişmek de fiilen bir komut satırı aracını çalıştırıp kapatmakla aynı
    Tasarımı gerçekten çok güzel

    • Adil olmak gerekirse BSD4.3’teki inetd’den beri, 1986’dan bu yana benzer bir yöntem vardı
      Ayrıntılı uygulama farklıydı ama büyük fikir aynıydı; bir dönem popülerdi, sonra özel bir neden olmadan modası geçti
      İyi bir sunucu süreci, hiçbir şey olmadığında boşta durmalı ve gerçek bellek kullanımı da swap’e atılması kolay olacak kadar çok küçük olmalı
      Belirli bir sunucu kullanım amacı gereği çok bellek kullanıyorsa, isteğe bağlı başlatmanın aralıklı bellek baskısı yaratmasını da istemezsiniz
      Bununla birlikte ilk açılışta servislerin başlamasını beklerken tıkanma sorununu önlemek kolaylaştığı için boot performansına yardımcı olur
    • Bunu araştırırken Ubuntu 22.10 sonrası SSHD’nin de systemd soket aktivasyonu kullandığını gördüm gibi
      Birisi SSH ile bağlanana kadar sshd süreci başlatılmıyor
      https://discourse.ubuntu.com/t/sshd-now-uses-socket-based-ac...
    • systemd’yi daha fazla öğrenmem gerektiğini düşünüyorum
      İçine baktıkça harika ve kullanışlı özellikler çıkmaya devam ediyor
    • Cockpit yaklaşık %99 oranında “komut satırında yapmaktan farklı değil”e yakın; küçük bir JavaScript terminal GUI’si, yerel kullanıcı ve parola, hafif izleme geçmişi, karmaşık systemd komutlarını hatırlamak zorunda kalmadan bakacağınız ayarları keşfetme işlevi de sunduğu için oldukça iyi
      Küçük Raspberry Pi’lere kurup bırakmak iyi oluyor
      Terminal başında olmadığınızda duruma göz atmak ya da yalnızca web tarayıcısının olduğu bir durumda web sunucusu üzerinden fiilen yerelmiş gibi SSH ile bağlanıp gerçek komut isteminde curl ...etc... çalıştırabilmek çok faydalı
    • Yine de Cockpit web uygulamasının statik HTML/JS varlıklarını sunan sunucu süreci çalışıyor değil mi diye düşünüyorum
      systemd soket aktivasyonu, son kullanıcının web istemcisi günlükleri görüntüleme gibi REST/GQL istekleri gönderdiğinde mi kullanılıyor, merak ediyorum
  • “Porselenin (porcelain)” bir değeri var
    Hazır backend’leri olmasına rağmen ürün geliştirmeyi UI/UX’e kadar taşıyamadıkları için kapanan startup’lar gördüm
    Bir şirkette, tamamen özel bir konteyner orkestratöründen oluşan backend’in bir hafta sonu içinde AWS Lambda ve ECS ile değiştirilebileceğini göstermiştim; ama UI/UX ve iş akışı araçları çok daha uzun sürecek işlerdi
    Buna rağmen “yeni Raft tabanlı cluster” yapmaya para ve zaman harcamaya devam ettiler
    O sırada “toplu işleme ekleme” işi verildi ve zaten Go kullandığımız için içeride Nomad bağlayıp geçtik
    Sırf teknoloji için teknoloji yapan değil, özellik yayımlayan bir ekipte çalışmak güzel
    https://git-scm.com/book/en/v2/Git-Internals-Plumbing-and-Po...

  • Bu alandaki tüm araçlarda “disk alanı yetersiz” yazan dev bir banner olmalı
    Sunucu debug eden insanlar için bile şaşırtıcı biçimde bunun genel bilgi olmadığı durumlar var

    • Neden bilmiyorum ama ben de aynısını gördüm
  • 2022, 81 yorum: https://news.ycombinator.com/item?id=31439811
    2021, 128 yorum: https://news.ycombinator.com/item?id=26197510
    2018, 149 yorum: https://news.ycombinator.com/item?id=16445612

    • Proje olgunlaştıkça ve daha fazla kişi haberdar oldukça bu akış bir ölçüde beklenebilir
  • Bunu kullanacağımı sanmıyorum
    Bir açık port daha, durmadan zafiyet tarayan botlar için bir saldırı yüzeyi daha, sürekli güncel tutulması gereken bir servis daha demek
    Yine de Linux sunucuları daha erişilebilir kılmaya yardımcı olabilir gibi görünüyor
    Özellikle PHP tabanlı paylaşımlı hosting’den tam bir VPS’e geçen ama sunucu bilgisi fazla olmayan ve cPanel ya da DirectAdmin gibi bir şey isteyen kişiler için yararlı olur

    • Portu mutlaka açmak gerekmez; onun yerine VPN ya da SSH tüneli kullanılabilir
      İkisi arasındaki farkı pek bilmiyorum
  • Gerçekten RHCE sahibiyim; bu başlık Red Hat tarafının tıklama çiftliği gibi hissettirecek kadar yapay bir olumlu havaya sahip
    Cockpit fena değil ama aslında Red Hat’in Windows Server Manager sürümüne yakın ve büyük olasılıkla Server Manager’dan doğrudan etkilenmiş
    Yıllar boyunca geliştirme ve iyileştirme hızı da acı verecek kadar yavaştı
    SSH oturumlarına alışkın biri, yeni VM oluşturma zamanı dışında Cockpit kullanmaz; Proxmox ile karşılaştırmak ise anlamsız
    Proxmox UI işlevlerinin dörtte birine bile sahip değil; VM yönetim özellikleri de nispeten yakın zamanda eklendi ve tarayıcı üzerinden gelen gecikme ile kısıtlar nedeniyle Virtual Machine Manager hâlâ daha iyi
    Cockpit ile yapılamayan çok şey var ve gelecekte de yapılamayacak çok şey olacak
    Tıklamak isteyen, Bash for/while döngülerini kullanamayan, pipe chaining’i anlamayan ve vimden nefret eden kişiler için bir araç gibi
    Yani Red Hat için webmin denebilir; biraz havalı olsa da çok eski kaldı, geliştirmesi yavaş ilerledi ve fazla şişirildi; sertifikasyon sınavı için gerekenler dışında hiç kullanmadım

    • “Instagram filtreleri, Photoshop katmanlarıyla uğraşmayı bilmeyen, temel renk kompozisyonunu bile anlamayan ve sadece kaydırmak isteyen kişiler içindir” demeye benziyor
      Yani bir bakıma doğru da
    • HN yönergelerinde “astroturfing, PR hesapları, toplu yönlendirme, yabancı ajanlar” gibi imaların tartışma kalitesini düşürdüğü ve çoğu zaman yanlış olduğu için paylaşılmaması gerektiği yazıyor
      Kötüye kullanım konusunda endişeniz varsa hn@ycombinator.com adresine e-posta gönderebilirsiniz; verilere bakacaklarını söylüyorlar
      https://news.ycombinator.com/newsguidelines.html
    • SSH yapabilen bir terminal emülatörünü her zaman hazırda dağıtmaya hazır mı olmak gerekiyor? Basit işleri basit hale getirmenin nesi yanlış, anlamıyorum
      Ailem seyahatteyken evcil hayvanları görmek için daha iyi kamera modülleri olan birkaç Raspberry Pi kamera çalıştırıyorum
      RTSP kamera akışı her cihazda systemd unit’i olarak çalışıyor; paket akışı olup olmadığını kontrol eden health check de ayrı bir systemd unit’i
      Her kamera, yönettiğim ZeroTier ağında özel bir IP alıyor
      Cockpit yalnızca gerektiğinde çalışıyor; bu yüzden yönetim için kurulu tutmamak için bir neden yok
      Bazen kameralardan biri yalnızca boş kareler göndermeye başlıyor; tatildeyken klavye bulup SSH ile girerek stream unit’ini yeniden başlatmak yerine bunu telefondaki Cockpit web arayüzünden yapmak çok daha iyi
      Boş kareleri algılayan bir health check de yazılabilir ama yılda birkaç kez olan bir şey için onu yazmaktansa Cockpit’ten yeniden başlatmak çok daha kolay
    • Cockpit, kötü belgelenmiş XML içinde eşelenmeden uzaktan libvirt + KVM yönetmek için çok kullanışlı
      iPad dahil herhangi bir platformdan erişilebiliyor ve paket kurup sertifika eklemek kadar basit; neredeyse hiç yapılandırma gerektirmiyor
      VM çalıştıran Debian sunucularımda Proxmox yerine Cockpit kullanıyorum; çünkü çok daha az müdahaleci ve bu makineler Docker container’ları gibi başka işler de yapıyor
      Yaklaşık 2019’dan beri bu amaçla kullanıyorum
      İstatistik ekranları da kullanışlı ama sırf bunun için kuracağımı sanmam
      Tüm sistemi ele geçirmeden, tek bir makinede web tarayıcısından libvirt VM oluşturmayı sağlayan ve iyi bakımı yapılan pek başka seçenek yok
    • Ben bunu yarı pişmiş bir webmin olarak görüyorum
      Yalnızca NetworkManager ile kullanılabiliyor; VM’ler için ağ yapılandırması biraz karmaşıklaştığında genelde NetworkManager’ı kapatmak gerektiği için Cockpit fiilen kullanılamaz hale geliyor
      VM’leri GUI ile yönetmek isteyenler için virt-manager çok daha güçlü
      [1] https://virt-manager.org/
  • Kalitesi “idare eder” düzeyde
    Çok küçük bazı kullanım alanlarında işe yarayabilir ama bir ev sunucusu işletiyorsam uzak dururdum
    Cockpit’in dosya sunucusu arayüzü eklentisi eski ve kötü
    Tam olarak nerede kullanılacağını pek bilmiyorum; basit izleme için yeterli olabilir ama yönetim aracı olarak zayıf

    • Aynen öyle
      Red Hat’in bu projeyi neden öne çıkardığını bilmiyorum; pratik kullanım alanı pek yok
      systemd servis listesini göstermek, komut satırı çıktısında hepsini görmekten daha yardımcı değil
  • Kendi NAS’inizi barındırırken Cockpit’in OMV’den çok daha iyi olduğunu düşünüyorum

    • Kullanım amacına ve birkaç koşula göre değişiyor; iki farklı NAS’ta ikisini de memnuniyetle kullanıyorum
      OMV’de Compose desteği olan bir Docker eklentisi var, bu yüzden Portainer gibi ayrı bir Docker GUI’sine gerek kalmıyor; Windows istemcilerinde SMB paylaşımları da nedense daha kararlı
      Yeni başlayanlara uygun bir GUI’si ve yaklaşımı var, bu da diğer kullanıcılarla paylaşmayı kolaylaştırıyor; fail2ban ve WireGuard gibi yerleşik özellikler de mevcut
      Cockpit, EL/Fedora dağıtımlarında birinci sınıf vatandaş; Podman’ı destekliyor ama Docker’ı desteklemiyor ve Compose/Quadlet desteği de yok
      VM yönetimi ve terminal gibi güçlü özellikleri var, ancak Samba ile ilgili hataları bulunuyor
    • Neden böyle olduğunu merak ediyorum
      Şu anda OMV ile yerel ağda dosya paylaşımı ve birkaç Docker konteyneri çalıştırıyorum
      İyi çalışıyor ama özelliklerinin %90’ını kullanmıyorum
    • Proxmox’un nasıl olduğunu merak ediyorum
  • Merak edenler için, https://github.com/cockpit-project/cockpit adresine göre Cockpit birden fazla dilde yazılmış; en büyük pay C’de, ardından JavaScript ve Python geliyor
    src/cockpit muhtemelen ana backend mantığı gibi görünüyor ve Python ile yazılmış

    • Bir Cockpit geliştiricisi olarak söyleyeyim: web sunucusu C ile yazıldı; eski bridge ise JavaScript’in web sunucusu üzerinden systemd, podman, dbus gibi sistem API’leriyle konuştuğu bir “API” idi
      Yeni bridge Python ile yazıldı; zamanı geldiğinde web sunucusunu da daha modern bir şekilde yeniden yazmak istiyoruz
    • Sunucuda çalışacak bir ürün geliştirirken insanların hangi teknoloji yığınının kullanıldığını ne kadar önemsediğini merak ediyorum
      Hangi bağımlılıkların olduğu, logging kütüphanesi ya da Curl güvenlik açıkları konusunda endişelenmek gerekip gerekmediği gibi noktalar da önemli
      Ürünün tek ve net bir yığınla mı yazıldığını, yoksa birden fazla teknolojinin mi karıştırıldığını görmek de ilginç