Eski Laptopu Ubuntu Sunucuya Çevirmek: İlk Saatte Yaptığım Güvenlik Ayarları

Evin köşesinde yıllardır duran eski bir HP laptop var. Uzun süre içinde aaPanel kuruluydu ve hosting işlerim için kullandım. Yapay zekâ sayesinde artık hosting panellerine ihtiyacım kalmadı; ben de laptopa yeni bir görev verdim: panelsiz, saf bir sunucu. Bu yazı, "Evdeki Laptoptan Yapay Zekâ Ekibine" adlı 9 bölümlük dizinin ilk bölümü ve eski bir laptopu Ubuntu sunucuya çevirdikten sonraki ilk saatte hangi güvenlik ayarlarını yaptığımı anlatıyor.
Bu dizide ne anlatacağım?
Plan şu: önce Ubuntu kurulumu ve ilk güvenlik ayarları (bu yazı), sonra portlar ve güvenlik duvarı, ardından Docker ile blog (Next.js + Payload). Sonra bu sunucuda çalışan Hermes yapay zekâ ekibine, onu yöneten kanban düzenine, güvenlik tarafına ve Telegram bağlantısına geçeceğiz. Son bölümde de başıma gelenleri, yani işlerin ters gittiği yerleri anlatacağım. Başarı hikâyesi değil, deneme yanılma günlüğü olacak.
İletişim tarafında da net bir ayrım yaptım. Sunucuyu ve yapay zekâ ajanlarını Telegram'dan, Telegram botlarıyla yönetiyorum; günlük işlerin çoğu oradan yürüyor. Daha karmaşık takım işleri için Slack'i bağladım. WhatsApp'ı da bağlamıştım, ama bağlantı resmi WhatsApp API'si üzerinden değil, gayriresmi bir köprüyle çalıştığı için oradan yazma işini iptal ettim. Bunlara ek olarak, yine Telegram'dan yönettiğim ve root yetkisi olan ayrı bir ajanım var. Sunucunun kök seviyesindeki işleri o yapıyor; Hermes ajanlarının root yetkisi yok, böyle bir iş gerektiğinde ya o ajana kalıyor ya da benim onayımı bekleyen sınırlı bir köprüden geçiyor.
Bir dürüstlük notu: Kurulumu tek başıma, ezbere yapmadım. Claude Code ile birlikte yaptım. Kritik adımları tek tek ben onayladım, rutin işleri auto modda Claude Code'a bıraktım. Bence yapay zekâyla sunucu kurmanın doğru yolu bu: o hızlı yazar, siz neyi onayladığınızı anlayarak bakarsınız. Onay istediğim adımlarda pratik şuna benziyor: önerilen komutu okuyorum, ne yaptığını anlamadığım satırı sorduruyorum, ancak ondan sonra onaylıyorum. Bu biraz yavaş görünebilir, ama bir şey bozulduğunda neyi neden yaptığınızı bilmek, o yavaşlıktan çok daha değerli.
Format günü: Yedek aldım mı?

7 Kasım 2026'da sunucuyu sıfırdan kurmaya karar verdim. Hedefim netti: Hermes Agent, Claude Code ve diğer yapay zekâ ajanları için gereken altyapıyı kurmak. Bunun için sistemi sıfırdan, en iyi disiplinle kurup kafamdaki yapıyı hatasız uygulamak istedim. Üzerine yama yapılmış eski bir kurulum bu iş için doğru zemin değildi. Yeni düzende panel yok: saf terminal, yalnız istediğim programlar ve her şey Docker'da, en temiz haliyle. Sistem çekirdeğe yakın ve sade; önceliğim performans ve maliyet.
Ama format atmadan önce her sistem yöneticisinin kendine sorduğu o soru var: "Yedek aldım mı?" Bu soruyu o gün kendime birkaç kez sordum, her seferinde "evet" dedim ve her seferinde yine de bir kez daha baktım. O küçük gerilimi tahmin edersiniz.
Yaptığım şey basitti: verileri şifreli bir yedek olarak ve ayrıca klasör kopyası olarak aldım; yedekler şifreli, iki ayrı yerde duruyor: biri Google Drive'da, biri evdeki kişisel laptopumda. Yedek derken "dosyalar orada görünüyor" demiyorum; geri yükleyebildiğinizi görmeden yedeğe güvenmeyin.
Format gününün akışı üç adım olmalı. Önce yedeği alın. Sonra yedekten rastgele birkaç dosyayı açıp gerçekten okunduğunu kontrol edin. En son kuruluma geçin. Bu adımı atlamak istesem de atlayamazdım: Claude Code, geri yükleme denemesi yapılmadan formata geçmeyeceğini söyledi. Haklıydı. Yedeği gerçekten geri yükleyen bir simülasyon yaptık, dosyaların eksiksiz geri geldiğini gördüm. O deneme yaklaşık 30 dakika sürdü ve gönül rahatlığıyla kurulum ekranına geçmemi sağladı. Bu sıra önemli: yedeği doğrulamadan kurulum ekranına geçmeyin, çünkü disk bölümlendirme adımından sonra geri dönüş yok. Süre olarak şöyle oldu: Google Drive'a ve laptopuma iki yedek almak yaklaşık 30 dakika, geri yükleme denemesi 30 dakika, kurulumun kendisi de bir saat kadar sürdü.
Bir de küçük bir ipucu: Ubuntu Server kurulumunda OpenSSH sunucusunu kurma seçeneği çıkıyor. Uzaktan yöneteceğiniz bir makine için bunu işaretleyin; ilk açılıştan itibaren başka bir bilgisayardan bağlanabilirsiniz ve sunucunun başında ekran-klavyeyle beklemek zorunda kalmazsınız.
Neden Ubuntu 24.04 LTS?
Sunucudan beklentim heyecan değil, sıkıcılık. Sürpriz istemiyorum. Ubuntu 24.04 LTS'i seçmemin nedenleri:
- Uzun süreli destek: Sunucuyu her yıl yeniden kurmak istemiyorum.
- Sürpriz yok: Köşede sessizce çalışan bir sunucu ideal sunucudur.
- Docker ve belgelerin bolluğu: Sonraki bölümlerin çoğu Docker üzerinde dönecek.
- Cevabı hazır internet: Bir sorun çıktığında aynı hatayı yaşayan biri büyük ihtimalle çözümünü yazmıştır.
Donanım kutusu:
- Cihaz: HP laptop
- İşlemci: 4 çekirdek
- RAM: 10 GB
- Disk: ~107 GB
- Sistem: Ubuntu 24.04.5 LTS
Bu bir güç canavarı değil, ama oldukça yeterli: bir blog, birkaç konteyner ve yapay zekâ ekibi rahatça çalışıyor. Aşırı güç gereken işlerde ise ya bir API kullanıyorum ya da GPU'lu bir makine kiralayıp işi orada çözüyorum.
İlk saat: Sertleştirme
Kurulum biter bitmez internete bakan bir makinede ilk yapılacak iş, kapıları kilitlemek. Sırayla anlatıyorum.
1. SSH yalnız anahtarla

Parolayla SSH'a izin vermek, kapıyı açık bırakıp "bu mahallede hırsız olmaz" demeye benzer. Bir süre doğru çıkar, sonra çıkmaz. İnternete açık bir SSH kapısını botlar sürekli yoklar; parola ne kadar güçlü olursa olsun, hiç denenmeyecek bir kapı en iyisi.
Bu yüzden SSH'ı yalnız anahtarla çalışacak şekilde ayarladım:
- Parolayla giriş kapalı
- Klavye etkileşimli giriş kapalı
- Root ile giriş kapalı
- Yalnız tek bir kullanıcı girebilir
/etc/ssh/sshd_config içinde genel hatla şunlara denk gelir:
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin no
AllowUsers <tek-kullanici>Önemli uyarı: Bunu yapmadan önce anahtarla girişin çalıştığını başka bir oturumda test edin, mevcut oturumu kapatmayın. Kendinizi kendi kapınızın dışında bulmak komik değil.
Test adımını somut yazayım. Eski oturumu açık bırakıp yeni bir terminal penceresi açın ve oradan anahtarla bağlanmayı deneyin. Bağlandıysanız işin yarısı tamam. Diğer yarısı, parola girişinin gerçekten kapandığını görmek: anahtarı kullanmadan bağlanmayı deneyin, sunucu sizi parola bile sormadan reddetmeli. İkisini de gördükten sonra eski oturumu kapatabilirsiniz. Dosyayı kaydetmeden önce sshd -t komutuyla sözdizimini denetlemek de iyi bir alışkanlık; sonra SSH servisini yeniden başlatmayı unutmayın, yoksa değişiklik devreye girmez ve siz girdi sanırsınız.
2. fail2ban: kapıyı zorlayanı içeri almayan fedai

Anahtar zorunluyken bile kapıyı zorlayan botlar log dosyasını şişirir. fail2ban bunları izler; çok sayıda başarısız deneme yapan adresi bir süreliğine içeri almaz. Kapıda kollarını kavuşturmuş bir fedai gibi: kavga etmez, yalnızca "bugün olmaz" der.
sudo apt update
sudo apt install fail2banBen varsayılanlara bırakmadım, kuralları /etc/fail2ban/jail.local içine açıkça yazdım:
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
backend = systemd
[sshd]
enabled = trueYani 10 dakika içinde 5 kez yanlış deneyen adres 1 saat kapıda bekliyor. Engeli nftables uyguluyor, giriş denemelerini de systemd günlüğünden okuyor. Durumu sudo fail2ban-client status sshd ile görebilirsiniz.
3. Otomatik güvenlik güncellemeleri

Ben uyurken güvenlik yamalarını uygulayan bir gece bekçisi istiyorum. Bunun adı unattended-upgrades.
sudo apt install unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgradesYalnız güvenlik güncellemeleri otomatik gelsin, büyük sürüm atlamaları elle yapılsın; sunucuda sürpriz istemiyoruz. Kurup unutmayın: birkaç gün sonra güncelleme günlüklerine bakıp servisin gerçekten çalıştığını görün. Bazı yamalar yeniden başlatma isteyebilir; bunu da kendi takviminize göre, bilerek yapın.
4. Laptop'a özel dert: kapak kapanınca uyumasın

Sunucu olarak kullanılan laptopun klasik sorunu şu: kapağı kapatınca uykuya geçer. Sunucunun uyuması, sunucunun yokluğu demek. Çözüm systemd-logind ayarında:
HandleLidSwitch=ignoreBu satır /etc/systemd/logind.conf içine yazılıyor; ardından systemd-logind servisi yeniden başlatılıyor. Sonuç: kapağı kapalı sunucu, gözü kapalı ama kulağı açık.
Bu ayarı da denemeden güvenmeyin. Servisi yeniden başlattıktan sonra başka bir bilgisayardan bağlı kalın, kapağı kapatın ve bağlantının kopmadığını, sunucuya hâlâ ulaşabildiğinizi doğrulayın. Bir not daha: kapağı kapalı çalışan laptop ısınabilir. Havalanabilen bir yere koymak akıllıca. Bende kapak kapalıyken bir sorun çıkmadı. Asıl derdim tozdu: ekranı streç filmle kapladım, kapağı kapattım ve laptopu fanları hava alacak şekilde konumlandırdım. Laptopun kendi ekranına zaten ihtiyacım yok: kapak kapalıyken HDMI ile yanındaki büyük bir monitöre bağlı duruyor. Çoğu zaman ona da bakmıyorum; kendi laptopumdan kısa bir SSH komutuyla bağlanıp her şeyi terminalden yapıyorum.
5. Yapay zekâ ajanları için ayrı, yetkisiz kullanıcı
Dizinin ilerleyen bölümlerinde sunucuda yapay zekâ ajanları çalışacak. Onları kendi hesabımla çalıştırmak yerine ayrı bir kullanıcı açtım ve bu kullanıcıya sudo vermedim. Mantık basit: bir ajan yanlış bir şey yaparsa, zarar o kullanıcının alanıyla sınırlı kalsın. Ayrıntıları 4. ve 6. bölümde anlatacağım.
Ne öğrendim?
- Yedek, geri yükleyebildiğiniz yedektir. Format öncesi "aldım mı?" gerilimini bir kez yaşayınca ritüel olur.
- SSH'ta parola kapısını en baştan kapatın. Sonradan kapatmak hep ertelenir.
- Her ayarı bir testle bitirin. Anahtarla giriş, kapak kapanınca bağlantı, güncelleme günlüğü: "yaptım" demek ile "çalışıyor" demek farklı şeyler.
- Otomasyon sizin yerinize uyanık kalır. fail2ban ve otomatik güvenlik güncellemesi, bir saatlik yatırımın en uzun süre geri dönen kısmı.
- Yapay zekâyla kurulumda onay sizde kalsın. Kritik adımları onaylayıp rutini auto moda bırakmak sizi yavaşlatmaz, neyin neden yapıldığını bilmenizi sağlar.
Beni en çok şaşırtan şey süre oldu. Eskiden bu ayarları tek tek yapmak bana bir güne mal oluyordu. Bu kez, yedek ve kurulum dahil, aynı işi birkaç saatte bitirdim.
Sonuç
Eski laptop şimdi köşede kapağı kapalı, kulağı açık çalışıyor. Emekli olmadı, terfi etti. Bu ayarlar bir sunucuyu "dokunulmaz" yapmaz; ama internete açılmadan önce yapılması gereken temizlik ve kilitleme işini görür.
Kısa kontrol listesi olarak özetleyeyim: yedeği doğrulayın, SSH'ı yalnız anahtara çevirin ve yeni oturumdan test edin, fail2ban'ı kurun, güvenlik güncellemelerini otomatikleştirin, laptopsa kapak ayarını yapın, ajanlar için yetkisiz ayrı kullanıcı açın.
Bir sonraki bölümde: hiç kapı açmadan siteyi nasıl yayına aldım? (UFW, Docker'ın güvenlik duvarını sessizce delmesi, Cloudflare Tunnel.) Yakında yayında.
FAQ
Eski laptop sunucu olur mu? Olur; 4 çekirdek ve 10 GB RAM'li bir laptop blog ve birkaç konteyner için yeterli oldu. Kapak kapanınca uykuya geçmemesi için ayar gerekir.
Ubuntu sunucuda SSH'ı nasıl güvenli yaparım? Parola, klavye etkileşimli giriş ve root girişini kapatıp yalnız anahtarla ve tek kullanıcıyla girişe izin verin.
fail2ban ne işe yarar? Çok sayıda başarısız giriş deneyen adresleri bir süreliğine engeller.
Kapağı kapanınca laptop uyumasın diye ne yapılır? systemd-logind içinde HandleLidSwitch=ignore ayarlanır.