Sunucu yönetimi denince aklıma hep şu sahne gelir: gece yarısı bir şeyler patlamış, SSH bağlantısı zor açılıyor, terminalde satır satır komut yazarken bir yandan da müşteri arıyor. İşte tam bu noktada Cockpit devreye giriyor. Rocky Linux üzerinde çalışan bu web tabanlı yönetim arayüzü, özellikle birden fazla sunucuyu takip etmek zorunda olan sysadminler için ciddi bir zaman tasarrufu sağlıyor. Grafiksel arayüzü sevmeyenlere de bir şey söyleyeyim: Cockpit, komut satırını kapatmıyor, tam tersine onun yanında duruyor.
Cockpit Nedir ve Neden Rocky Linux ile İyi Gider
Cockpit, Red Hat tarafından geliştirilen, systemd tabanlı sistemler için tasarlanmış açık kaynak bir web yönetim aracıdır. CentOS’un yerini alan Rocky Linux için de bu araç neredeyse doğal bir parça haline geldi. Cockpit, sisteminizde zaten çalışan servisleri kullanır: systemd, NetworkManager, udisks, libvirt… Ayrı bir agent kurmaz, ayrı bir veritabanı açmaz. Bu yüzden overhead çok düşüktür.
Rocky Linux 8 ve 9 sürümlerinde Cockpit varsayılan repo’da gelir. Özellikle şu senaryolarda hayat kurtarır:
- Terminale alışık olmayan bir junior sysadmin ekibinize katıldığında
- Bir sunucuyu müşteriye teslim etmeden önce temel işlemleri göstermek istediğinizde
- Gece 2’de telefona bakarak hızlıca bir servis restart etmeniz gerektiğinde
- 10-15 sunucuyu tek panelden izlemek istediğinizde
Kurulum: Tek Komuttan Sisteme Entegrasyon
Rocky Linux 9 üzerinde Cockpit kurmak inanılmaz basit:
sudo dnf install cockpit -y
sudo systemctl enable --now cockpit.socket
sudo firewall-cmd --permanent --add-service=cockpit
sudo firewall-cmd --reload
Bu dört satır yeterli. cockpit.socket servisini etkinleştirdiğinizde systemd socket activation devreye girer. Yani Cockpit sürekli çalışmaz, sadece bağlantı geldiğinde uyanır. Bu özellik hem kaynak tüketimini düşürür hem de güvenlik açısından avantaj sağlar.
Kurulumdan sonra tarayıcınızdan https://sunucu-ip:9090 adresine gidin. Self-signed sertifika uyarısı alacaksınız, bu normal. Prodüksiyonda bunu değiştireceğiz.
Rocky Linux 8 kullanıcıları için de kurulum aynı, sadece repo kontrolü yapın:
# Rocky 8 icin cockpit versiyonunu kontrol et
sudo dnf info cockpit
# Ek modulleri de yukle
sudo dnf install cockpit-storaged cockpit-networkmanager cockpit-packagekit -y
İlk Giriş ve Arayüze Hakimiyet
Giriş ekranında sistem kullanıcı adı ve şifrenizi kullanırsınız. Root ile doğrudan giriş yapabilirsiniz ama ben önermem. Bunun yerine sudo yetkisi olan bir kullanıcıyla girin, gerektiğinde “Administrative access” butonuyla yetkiyi yükseltin.
Arayüzün sol menüsünde şunları göreceksiniz:
- System: CPU, RAM, disk I/O gibi genel sistem bilgileri
- Logs: journald logları, filtrelenebilir ve aranabilir
- Storage: Disk yönetimi, LVM, RAID
- Networking: Ağ arayüzleri, firewall, bond/team yapılandırması
- Accounts: Kullanıcı yönetimi
- Services: systemd servisleri
- Software Updates: dnf ile paket güncellemeleri
- Terminal: Gömülü web terminali
Terminal modülü başlı başına bir kurtarıcı. Tarayıcı üzerinden tam yetkili bir terminal açabiliyorsunuz. Bir müşteriye uzak destek verirken bu özelliği çok kullanıyorum.
Gerçek Dünya Senaryosu 1: Disk Dolmadan Uyarmak
Bir müşterim vardı, e-ticaret sitesi çalıştırıyor, log dosyaları /var’ı dolduruyordu ve sistemi her seferinde manuel kontrol etmek gerekiyordu. Cockpit’in Storage modülünü kullanarak şunu yaptık:
Önce mevcut durumu kontrol ettik:
# Cockpit terminal uzerinden veya SSH ile
df -hT
lsblk -f
Sonra Cockpit arayüzünden Storage bölümüne geçtim. Buradan yeni bir LVM volume oluşturmak için önce mevcut volume group’u görüntüledik. Cockpit, pvdisplay, vgdisplay, lvdisplay komutlarının çıktısını görsel olarak sunuyor.
Yeni bir logical volume eklemek için:
# Cockpit terminal uzerinden LVM genisletme
sudo lvextend -L +10G /dev/mapper/rl-var
sudo xfs_growfs /var
Bu işlemi Cockpit arayüzünden de yapabilirsiniz: Storage > Volume Groups > Logical Volumes > Resize. Ama ben kritik değişikliklerde yine de terminali tercih ederim, tam olarak ne yaptığımı görmek isterim.
Gerçek Dünya Senaryosu 2: Servis Yönetimi ve Troubleshooting
Geçen ay bir web sunucusunda Apache ayakta gözüküyordu ama isteklere cevap vermiyordu. Cockpit Services modülü bu tür durumlarda hızlı bir ilk bakış sağlar.
# Cockpit terminal veya SSH
sudo systemctl status httpd
sudo journalctl -u httpd -n 50 --no-pager
Cockpit’in Logs modülüne geçtiğimde “httpd” filtresiyle son hataları gördüm. Sorun, bir konfigürasyon dosyasındaki syntax hatasıydı. Apache başlıyordu ama hemen çöküyordu. journald logları bunu net gösterdi.
Cockpit üzerinden servis yönetimi şöyle işliyor:
- Services menüsünden ilgili servisi bulun
- Start/Stop/Restart butonları direkt orada
- “Logs” sekmesinden servise özel journald çıktısını görebilirsiniz
- Enable/Disable ile boot davranışını değiştirebilirsiniz
Çoklu Sunucu Yönetimi: Dashboard Genişletme
Cockpit’in en güçlü özelliklerinden biri, birden fazla sunucuyu tek arayüzden yönetebilme kapasitesi. Bunun için cockpit-dashboard veya Rocky Linux 9’da cockpit-machines değil, uzak host ekleme özelliğini kullanıyoruz.
Ana sunucunuza (yönetim makinesi) Cockpit kurulduktan sonra:
# Ana sunucuda
sudo dnf install cockpit -y
# Yonetilecek uzak sunucularda da cockpit olmali
# Uzak sunucuya SSH key ile baglanti kurun once
ssh-keygen -t ed25519 -C "cockpit-admin"
ssh-copy-id -i ~/.ssh/id_ed25519.pub kullanici@uzak-sunucu-ip
Cockpit arayüzünden sol üstteki sunucu adına tıklayın, “Add new host” seçeneği çıkar. Uzak sunucunun IP adresini ve SSH portunu girin. Artık o sunucuya tek tıkla geçiş yapabilirsiniz.
Ben bu yapıyı 8 sunuculu bir müşteri ortamında kurdum. Her sabah kahvemi yaparken bir göz atıp tüm sunucuların sağlığını kontrol edebiliyorum.
SSL Sertifikası: Self-Signed’dan Kurtulma
Prodüksiyonda self-signed sertifika kullanmak profesyonel durmuyor ve tarayıcı uyarıları can sıkıcı. Let’s Encrypt veya kurumsal CA sertifikanızı Cockpit’e tanıtabilirsiniz.
Let’s Encrypt için önce sertifikayı alın:
sudo dnf install certbot -y
sudo certbot certonly --standalone -d cockpit.firmam.com
Sertifikayı Cockpit’e tanıtmak için:
# Sertifika dosyalarini Cockpit dizinine kopyala
sudo cp /etc/letsencrypt/live/cockpit.firmam.com/fullchain.pem
/etc/cockpit/ws-certs.d/cockpit.firmam.com.cert
sudo cp /etc/letsencrypt/live/cockpit.firmam.com/privkey.pem
/etc/cockpit/ws-certs.d/cockpit.firmam.com.key
# Dosya izinlerini ayarla
sudo chmod 640 /etc/cockpit/ws-certs.d/cockpit.firmam.com.key
sudo chown root:cockpit-ws /etc/cockpit/ws-certs.d/cockpit.firmam.com.key
# Cockpit'i yeniden baslat
sudo systemctl restart cockpit
Sertifika yenileme için de bir cron veya systemd timer ayarlayabilirsiniz:
# /etc/cron.d/cockpit-cert-renew dosyasi
0 3 1 * * root certbot renew --quiet &&
cp /etc/letsencrypt/live/cockpit.firmam.com/fullchain.pem
/etc/cockpit/ws-certs.d/cockpit.firmam.com.cert &&
systemctl restart cockpit
Güvenlik Sıkılaştırma
Cockpit’i internete açacaksanız birkaç şeyi mutlaka yapın.
Erişimi IP ile kısıtlama:
# /etc/cockpit/cockpit.conf dosyasini olustur veya duzenle
sudo nano /etc/cockpit/cockpit.conf
[WebService]
Origins = https://cockpit.firmam.com wss://cockpit.firmam.com
ProtocolHeader = X-Forwarded-Proto
AllowUnencrypted = false
[Session]
IdleTimeout = 15
Firewall ile sadece belirli IP’lere izin verme:
# Mevcut cockpit servisini kaldir
sudo firewall-cmd --permanent --remove-service=cockpit
# Sadece yonetim IP'sine izin ver
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4"
source address="192.168.1.100/32"
port port="9090" protocol="tcp" accept'
sudo firewall-cmd --reload
Root girişini engelleme:
Cockpit varsayılan olarak root girişine izin verir ama bunu kapatabiliriz:
# /etc/cockpit/cockpit.conf icine ekle
[Session]
Banner = /etc/cockpit/login-banner.txt
# PAM konfigurasyonu ile root girisi engelle
# /etc/pam.d/cockpit dosyasini duzenle
sudo sed -i 's/^auth.*pam_succeed_if.*/auth required pam_succeed_if.so uid >= 1000 quiet/'
/etc/pam.d/cockpit
Ayrıca fail2ban ile brute force koruması eklemek için:
sudo dnf install fail2ban -y
# /etc/fail2ban/jail.local
sudo bash -c 'cat >> /etc/fail2ban/jail.local << EOF
[cockpit]
enabled = true
port = 9090
filter = cockpit
logpath = /var/log/secure
maxretry = 5
bantime = 3600
EOF'
sudo systemctl enable --now fail2ban
KVM/QEMU Sanal Makine Yönetimi
Rocky Linux üzerinde KVM kullanıyorsanız Cockpit ile sanal makineleri de yönetebilirsiniz. Bu benim favorim.
# Gerekli paketleri yukle
sudo dnf install cockpit-machines virt-install qemu-kvm libvirt -y
sudo systemctl enable --now libvirtd
sudo systemctl restart cockpit
Cockpit arayüzünde “Virtual Machines” menüsü belirecek. Buradan:
- Yeni VM oluşturabilirsiniz (ISO ile veya cloud image ile)
- Mevcut VM’leri start/stop/pause yapabilirsiniz
- VM konsoluna tarayıcı üzerinden bağlanabilirsiniz (VNC/SPICE)
- Network ve disk yapılandırmasını değiştirebilirsiniz
Yeni bir VM oluşturmak için CLI ile de destekleyebilirsiniz:
# Cockpit uzerinden olusturacaginiz VM icin hazirlik
sudo mkdir -p /var/lib/libvirt/images
# Cloud image indirme ornegi
sudo curl -o /var/lib/libvirt/images/rocky9-base.qcow2
https://download.rockylinux.org/pub/rocky/9/images/x86_64/Rocky-9-GenericCloud.latest.x86_64.qcow2
Cockpit’ten “Create VM” seçeneğine gidin, indirdiğiniz cloud image’ı seçin ve birkaç tıkla VM hazır.
Paket Yönetimi ve Otomatik Güncellemeler
Cockpit’in cockpit-packagekit modülü ile yazılım güncellemelerini arayüzden takip edebilirsiniz. Ama dikkat edin: prodüksiyon sunucularda otomatik güncelleme genellikle tercih edilmez.
# Packagekit modulunu yukle (Rocky 9'da genellikle hazir gelir)
sudo dnf install cockpit-packagekit -y
sudo systemctl restart cockpit
Software Updates menüsünden bekleyen güncellemeleri görebilir, güvenlik güncellemelerini filtreyebilir ve zamanlanmış güncelleme ayarlayabilirsiniz. Ben genellikle müşterilerime şunu öneriyorum: security güncellemeleri için haftalık otomatik güncelleme açık olsun, major paket güncellemeleri manuel yapılsın.
Log Analizi ile Cockpit
Cockpit’in Logs modülü aslında oldukça güçlü. journald’ın tüm yapısına web arayüzünden erişim sağlıyor.
Pratik filtreler:
- Priority: Emergency, Alert, Critical, Error, Warning, Notice, Info, Debug
- Service: Belirli bir servisin logları
- Time: Son 1 saat, 24 saat, 7 gün veya özel aralık
- Text Search: Log içeriğinde arama
Cockpit terminal üzerinden daha detaylı analiz için:
# Son 1 saatteki kritik hatalar
sudo journalctl -p err --since "1 hour ago" --no-pager
# Belirli bir boot'un loglari
sudo journalctl -b -1 --no-pager | grep -i error
# Disk I/O ile ilgili loglar
sudo journalctl -k | grep -i "I/O error"
Nginx Reverse Proxy Arkasında Cockpit
Cockpit’i 9090 portu yerine standart HTTPS (443) portu üzerinden sunmak isteyebilirsiniz. Nginx reverse proxy ile bu mümkün:
sudo dnf install nginx -y
# /etc/nginx/conf.d/cockpit.conf
sudo bash -c 'cat > /etc/nginx/conf.d/cockpit.conf << EOF
upstream cockpit {
server 127.0.0.1:9090;
}
server {
listen 443 ssl;
server_name cockpit.firmam.com;
ssl_certificate /etc/letsencrypt/live/cockpit.firmam.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/cockpit.firmam.com/privkey.pem;
location / {
proxy_pass https://cockpit;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket destegi
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
EOF'
sudo systemctl enable --now nginx
WebSocket desteği kritik: Cockpit terminal ve gerçek zamanlı metrikler WebSocket üzerinden çalışır.
Yaygın Sorunlar ve Çözümleri
Cockpit açılmıyor, port 9090 cevap vermiyor:
sudo systemctl status cockpit.socket
sudo journalctl -u cockpit.socket -n 20
# Genellikle firewall veya SELinux sorunu
sudo ausearch -c 'cockpit-ws' --raw | audit2allow -M cockpit-custom
sudo semodule -i cockpit-custom.pp
Tarayıcıda “Connection timeout” hatası:
# Firewall kurallarini kontrol et
sudo firewall-cmd --list-all
# cockpit servisinin listede oldugundan emin ol
“Not authorized” hatası alıyorsanız:
# Kullanicinin sudo grubunda oldugundan emin ol
sudo usermod -aG wheel kullanici_adi
# Cockpit icin polkit kurallarini kontrol et
sudo cat /usr/share/polkit-1/rules.d/
SELinux ile ilgili sorunlar:
# SELinux loglarini kontrol et
sudo ausearch -m avc -ts recent
# Cockpit icin gerekli boolean'lari aktif et
sudo setsebool -P nis_enabled 1
Monitoring Entegrasyonu: Cockpit + PCP
Rocky Linux 9’da Cockpit, Performance Co-Pilot (PCP) ile entegre çalışarak tarihsel performans verileri sunabilir. Bu çok değerli bir özellik.
sudo dnf install cockpit-pcp pcp pcp-system-tools -y
sudo systemctl enable --now pmcd pmlogger
sudo systemctl restart cockpit
Kurulumdan sonra Cockpit’in “Overview” veya “Metrics” bölümünde geçmiş CPU, RAM ve disk verilerini görebilirsiniz. Bir müşterim “Gece 3’te sistem yavaşlıyor” demişti, PCP loglarıyla tam o saatte memory pressure arttığını ve bir cron job tetiklendiğini gösterdim. Sorun 10 dakikada çözüldü.
Sonuç
Cockpit, Rocky Linux ekosistemiyle neredeyse kusursuz uyumlu çalışan, kurulumu ve bakımı kolay bir araç. “Web arayüzü gereksiz, her şeyi CLI’dan yaparım” diyenleri anlıyorum, ben de öyle düşünürdüm. Ama birkaç senaryo var ki Cockpit gerçekten öne çıkıyor: ekip yönetimi, hızlı troubleshooting, müşteri erişimi ve çoklu sunucu gözetimi.
Şunu net söyleyeyim: Cockpit, komut satırının yerini almaz ve almaya çalışmaz. Ama yanında güçlü bir yardımcı olarak duruyor. Özellikle gece alarmı geldiğinde telefonunuzdan tarayıcıyı açıp bir servisi restart etmek, SSH bağlantısı kurmaya çalışmaktan çok daha hızlı olabiliyor.
Prodüksiyona almadan önce şu kontrol listesini gözden geçirin: SSL sertifikası, firewall kısıtlaması, root girişini engelleme, fail2ban ve idle session timeout. Bu beş adımı tamamlarsanız Cockpit güvenli ve kullanışlı bir araç haline gelir.
Rocky Linux topluluğu Cockpit’i aktif geliştirmeye devam ediyor, yeni modüller çıkıyor. Cockpit-navigator gibi dosya yöneticisi eklentilerini de denemenizi öneririm. Sysadmin işi zor iş, doğru araçlarla biraz kolaylaştırmak elimizde.