Otomasyon etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Otomasyon etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

25 Eylül 2026 Cuma

Yapay Zekâ Ajanlarıyla Kendi Kendine Çalışan Bir YouTube Müzik Kanalı Kurdum: Nereden Başladım, Nerelerde Tökezledim, Sonunda Ne Çıktı?

 Uzun zamandır aklımda olan bir fikir vardı: Bir YouTube müzik kanalını, benim her gün başında oturmama gerek kalmadan, yapay zekâ ajanlarının yönettiği bir "stüdyo" gibi çalıştırmak. Şarkı sözünü biri yazsın, müziği biri üretsin, kapağı biri çizsin, videoyu biri hazırlasın, YouTube'a biri yüklesin. Ben de sabah kahvemi içerken gelen bildirime bakıp "tamam, yayınla" diyeyim.

Kâğıt üzerinde basit duruyor. Pratikte ise ilk kez "gerçek" bir ajan tabanlı sistem kurduğumda, işin asıl zor kısmının yapay zekâya bir şey ürettirmek değil, ürettiği şeye güvenebilmek olduğunu öğrendim.

Bu yazıda sistemi sıfırdan nasıl kurduğumu, hangi araçları neden seçtiğimi, nerelerde duvara tosladığımı ve sonunda ortaya çıkan üretim hattının nasıl çalıştığını anlatacağım. Benzer bir şey kurmayı düşünüyorsanız, benim yaptığım hataları tekrar etmemeniz için elimden geleni yazdım.


Hedef: Ne istiyordum?

Başlangıçta kendime birkaç net kural koydum:

  1. İnsan müdahalesi minimum olacak. Benim tek işim, gizli olarak yüklenen videoyu kontrol edip "herkese açık" yapmak.
  2. Token (yani yapay zekâ maliyeti) kontrol altında olacak. Ajan sistemlerinin en sinsi tarafı, fark etmeden faturayı şişirmeleri. Bu benim bir numaralı önceliğimdi.
  3. Mümkün olan her şey yerelde çalışacak. Evde 8 GB ekran kartı olan bir Linux makinem var; müzik ve görsel üretimini mümkünse orada yapmak istedim.
  4. İçerik güvenli olacak. Kanal bir futbol taraftar kanalı. Siyaset, din, şiddet, rakip takıma hakaret gibi konular kesinlikle girmemeli. Bir tane yanlış video kanalı yakabilir.
  5. Çok kanala ölçeklenebilecek. İlk kanal tek, ama hedef 7-8 kanal.

İlk kanal olarak bir taraftar şarkıları kanalı seçtim. Konusu belli, kitlesi belli, test etmek için ideal.


Mimari: Bir "şirket" gibi düşünmek

Ajanları organize etmek için Paperclip kullandım. Paperclip, yapay zekâ ajanlarını bir şirketin çalışanları gibi yapılandırmanıza izin veren bir orkestrasyon aracı: Ajanların rolleri var, onlara "görev" (issue) atanıyor, görevleri yapıp yorum yazıyorlar, kapatıyorlar, gerekirse onay istiyorlar. Yerelde bir panel üzerinden her şeyi izleyebiliyorsunuz.

Şirketimin kadrosu şöyle:

Rol Ne yapar Model
Stüdyo Müdürü (CEO) Haftada bir kontrol yapar, denetim sonuçlarına bakar, istatistikleri okur, iyileştirme önerir Claude Haiku 4.5
Prodüktör Şarkı sözünü yazar, denetimden geçirir, müziği, kapağı ve videoyu üretir Claude Sonnet 5
Suno Çalışanı Tarayıcıyı kullanarak Suno'da şarkının "asıl" versiyonunu üretir Claude Sonnet 5
Zamanlayıcılar ve scriptler Görev açma, yükleme, sağlık kontrolü, temizlik Token harcamaz

Burada verdiğim belki de en önemli tasarım kararı şu oldu: Yapay zekâya sadece yapay zekâ gerektiren işleri yaptır, geri kalan her şeyi deterministik scriptlere bırak.

Görev açmak için ajan uyandırmaya gerek yok; bir systemd zamanlayıcısı bunu yapar. YouTube'a yüklemek için ajana gerek yok; bir Python scripti yapar. Ajan ne kadar az "düşünürse", o kadar az token harcar ve o kadar az saçmalar.


Üretim hattı: Bir şarkının yolculuğu

Sistem oturduktan sonraki akış şöyle:

00:10 Zamanlayıcı → O gün üretim sırası gelen kanal(lar) için Prodüktör'e görev açar
Prodüktör → Sözler + metadata yazar
→ İçerik denetimi (geçmezse düzelt, en fazla 2 tur, sonra "blocked")
→ ACE-Step ile yerelde yedek şarkı üretir
→ FLUX ile kapak görseli çizer
→ ffmpeg ile video hazırlar
→ İşi Suno kuyruğuna ekler
00:47 Suno Çalışanı → Kuyruğu kontrol eder (saat başı, sabaha kadar)
→ Tarayıcıda Suno'yu açar, şarkıyı üretir, indirir
→ Videoyu Suno versiyonuyla yeniden oluşturur
→ YouTube'a GİZLİ yükler
09:07 Sabah kontrolü → Bugünün videosu yüklenmediyse "üretim takıldı" bildirimi
18:37 Son tur → Suno gelmediyse yedek (ACE-Step) sesle yükler
19:00 Sağlık kontrolü → Tüm bileşenleri kontrol eder, sorun varsa telefona bildirim
Cuma İstatistik + Müdür'ün haftalık raporu
Pazar Disk temizliği

Şimdi bu parçaları tek tek, karşılaştığım sorunlarla birlikte anlatayım.


1. Söz yazımı: Prompt'lar ve "yaratıcı karakterler"

Her kanalın kendi klasörü var: kanal profili (channel.md), prompt'lar, yasaklı kelime listesi, üretim geçmişi ve bir "playbook" (zamanla öğrenilenlerin not edildiği dosya).

Müzik kanalı için 4 farklı prompt yazdım. Bunlar birbirinin devamı değil, aynı işin 4 farklı "yaratıcı karakteri":

  • Klasik prodüktör: Bir ana stil, destekleyici etiketler, BPM, autotune vb.
  • Zıtlıklar matrisi: Birbirine zıt iki müzikal dünya + sürpriz bir dil
  • Tür çarpıştırma: 2-3 zıt türü, dili ve enstrümanı çarpıştırıp beklenmedik yapı değişiklikleri
  • Beni şaşırt: Zıtlıkların daha cesur versiyonu

Her üretimde sıradaki prompt kullanılıyor. Ajan ayrıca son 8 şarkının başlığını, türünü ve sürpriz dilini tekrar etmemek zorunda. Böylece kanal monotonlaşmıyor.

Önemli bir detay: Çıktı formatını çok katı tanımlamak zorunda kaldım. Sözler doğrudan Suno'ya yapıştırılacağı için başlık, markdown, italik, açıklama satırı olmamalı. Her bölüm [Verse 1 – (enstrümanlar) yönlendirme] şeklinde tek satırlık bir etiketle başlamalı. channel.md içine birebir örnek koydum ve ajana "formatı bu örnekle BİREBİR aynı yap" dedim. İlk denemelerde format sürekli bozuluyordu; örnek koymak, uzun kurallar yazmaktan çok daha etkili oldu.


2. İçerik denetimi: Ajana güvenmeyi bıraktığım an

Burası projenin en öğretici kısmıydı.

İlk başta maliyet düşük olsun diye tüm ajanları en küçük model olan Haiku ile çalıştırdım. Sonuç: Prodüktör üç denemeden ikisinde dini ifadeler kullandı. Prompt'ta "sürpriz dil" kullan dediğim için, Arapça bir dize eklerken "Ya Ghani", "Ya Aziz" gibi ifadeler yazdı. Bir futbol şarkısında bu, kesinlikle istemediğim bir şey.

Bunun üzerine bir içerik politikası yazdım ve bunu otomatik bir denetim aracına bağladım. Denetim üç katmanlı:

  1. Format kontrolü: Sözler Suno formatına uygun mu? (Token harcamaz)
  2. Yasaklı ifade taraması: Kelime listesiyle basit tarama; rakip takım adları, gerçek kişi isimleri vs. (Token harcamaz)
  3. Bağımsız inceleme: Ayrı bir Haiku çağrısı, sadece politikayı ve içeriği görüp pass veya fail verir. (Çok az token)

Denetim geçmezse müzik üretimine geçilemiyor. Ajan en fazla iki kez düzeltmeye çalışıyor, olmazsa görevi "blocked" yapıp bana bırakıyor.

Buraya kadar güzel. Ama sonra asıl şok geldi.

Ajan denetim sonucunu uydurdu

Bir üretimde denetim aracı hata verdi. Prodüktör ne yaptı dersiniz? Denetim sonucunu içeren review.json dosyasını kendisi elle yazdı, içine de "verdict": "pass" koydu. Ve yoluna devam etti.

Benzer bir şey Müdür'de de oldu: Haftalık özet görevinde, görevi gerçekten yapmak yerine, olmayan kontrolleri yapmış gibi gösteren uydurma bir rapor yazıp commit etti. O commit'i geri almak zorunda kaldım.

Bu, ajan sistemleri hakkında öğrendiğim en önemli ders oldu: Ajan "bitti" dediğinde bu, işin bittiği anlamına gelmiyor. Doğrulayabileceğin şeyleri talimatla değil, kodla doğrula.

Çözüm olarak şunları yaptım:

  • review.json artık içeriğin bir parmak izini (hash) içeriyor. Dosya elle yazılırsa veya sözler denetimden sonra değişirse parmak izi tutmuyor.
  • Suno adımı ve YouTube yükleme adımı, işe başlamadan önce denetimi kendileri yeniden doğruluyor. Parmak izi tutmazsa denetimi baştan çalıştırıyorlar.
  • Ajan talimatlarına en üste büyük harflerle "Asla uydurma. Rapora yazdığın her şeyin kanıtını gör (dosya, araç çıktısı)" kuralını ekledim. Ama asıl güvenceyi kod sağlıyor; talimat sadece destekleyici.

Bir de model tarafında karar değiştirdim: Prodüktör'ü Haiku'dan Sonnet'e yükselttim. İlk bakışta bu, token önceliğime ters gibi görünüyor. Ama Haiku'nun her hatası bir düzeltme turu, yani ek token demekti. Daha güçlü modelle ilk seferde doğru yapmak, toplamda daha ucuza geliyor. Bu değişiklikleri tarih, gerekçe ve sonuçla birlikte bir model-log.md dosyasında tutuyorum; bir hafta sonra verilere bakıp Haiku'ya geri dönmeyi değerlendireceğim.


3. Müzik üretimi: Suno'nun API'si yok, ElevenLabs ücretli

Müzik tarafında kafamdaki sıralama şuydu: Suno (en kaliteli) → ElevenLabs → yerel model.

ElevenLabs: Entegrasyonu yazdım, test ettim, 402 paid_plan_required hatası aldım. Ücretsiz planda Music API yokmuş. Zincirden çıkardım; ileride ücretli plana geçersem tek satırla açılacak şekilde bıraktım.

ACE-Step 1.5 (yerel): Açık kaynaklı bir müzik üretim modeli. 8 GB ekran kartı için önerilen ayarlarla (turbo DiT modeli + küçük dil modeli) kurdum ve yerel bir API servisi olarak çalıştırdım. Kota yok, maliyet yok, kalitesi Suno kadar olmasa da gayet kullanılabilir. Bu, sistemin yedek sağlayıcısı oldu.

Suno: İşte asıl mesele. Suno'nun resmî bir API'si yok. Tek yol tarayıcıdan kullanmak. Bunun için Claude'un Chrome eklentisiyle tarayıcıyı kontrol etmesini planladım.

Ama bir sorun vardı: Paperclip'in arka planda çalıştırdığı ajanlar tarayıcı kullanamıyor. Tarayıcı kontrolü yalnızca etkileşimli bir Claude Code oturumunda çalışıyor.

Çözüm olarak bir kuyruk sistemi kurdum:

  1. Prodüktör şarkıyı önce ACE-Step ile üretiyor, ardından işi Suno kuyruğuna ekliyor.
  2. Ayrı bir terminal oturumunda (tmux içinde) sürekli açık duran etkileşimli bir Claude oturumu var: Suno Çalışanı. Bu oturum gece saat başı kuyruğa bakıyor.
  3. Kuyrukta iş varsa Chrome'da Suno'yu açıyor, sözleri ve stili giriyor, şarkıyı üretiyor, indiriyor ve finish komutuyla sonucu teslim ediyor.
  4. finish komutu videoyu Suno sesiyle yeniden oluşturuyor ve anında YouTube'a yüklüyor.

Böylece Suno bir nedenle çalışmazsa bile elimde her zaman ACE-Step versiyonu hazır oluyor. Akşam 18:37'deki son turda hâlâ Suno versiyonu gelmemişse, sistem yedek sesle yükleyip Suno işini iptal ediyor. Video her koşulda çıkıyor.

Tarayıcı otomasyonunun küçük cehennemleri

Suno arayüzünü otomatikleştirirken karşılaştığım sorunlar, "yapay zekâ her şeyi halleder" düşüncesinin ne kadar naif olduğunu gösterdi:

  • Sözleri tek seferde yazmak zaman aşımına uğruyor. Bölüm bölüm yazmak gerekiyor.
  • Söz editöründe JavaScript'in klasik insertText yöntemi çalışmıyor.
  • Stil alanına tıklama gerçekleşmezse, stil metni sözlerin sonuna ekleniyor. Yazmadan önce odağın doğru yerde olduğunu doğrulamak gerekiyor.
  • Liste görünümündeki indirme butonu güvenilmez: Tıklanıyor ama dosya inmiyor. Şarkının kendi sayfasına gidip oradan indirmek gerekiyor.
  • Suno'nun CDN'indeki mp3'ü doğrudan indirmeye çalışınca 403 hatası alınıyor.
  • Ücretsiz planda indirme hakkı sınırlı; iki versiyondan sadece en üsttekini indirmek gerekiyor.
  • Her çalışmada açılan sekmeler birikiyor. Çalışanın her turun başında kendi artık sekmelerini (sadece kendi grubundakileri, benimkilere dokunmadan) temizlemesini sağladım.

Bunların hepsini bir suno.md kılavuzuna yazdım. Ajan her çalışmada bu kılavuzu takip ediyor. Burada Haiku yerine Sonnet kullanıyorum, çünkü tarayıcıda başarısız olan her deneme Suno kredisi yakıyor. Haftada birkaç şarkı için bu maliyete değer.

Bir de şunu fark ettim: Claude Code'un zamanlanmış görevleri 7 gün sonra otomatik siliniyor. Çalışan, belirli aralıklarla kendi zamanlayıcısını silip yeniden kuruyor ki sistem bir hafta sonra sessizce durmasın.


4. Kapak görseli: FLUX ile yerelde

Kapak görselleri için FLUX.1-schnell kullandım, yine yerelde. Bu kısımda da birkaç engel çıktı:

  • Orijinal model deposu erişime kapalıydı (gated). Apache-2.0 lisanslı aynalardan indirdim.
  • 8 GB kartta çalışsın diye stable-diffusion.cpp üzerinden, sıkıştırılmış (GGUF, Q4) model kullandım.
  • Metin kodlayıcısının (T5) fp8 versiyonu işlemcide segfault verdi. GGUF Q8 versiyonuna geçince düzeldi.
  • ACE-Step ve FLUX aynı anda ekran kartına sığmıyor. Kapak aracı, ACE-Step servisi ekran kartını tutuyorsa servisi yeniden başlatıp belleği boşaltıyor. ACE-Step tarafında da bellek hatası (OOM) olursa servis yeniden başlatılıp bir kez daha deneniyor.
  • FLUX görsellere yazı yazmayı beceremiyor, harfler bozuk çıkıyor. Ayrıca kulüp arması telifli. Bu yüzden kural koydum: Kapakta yazı ve logo yok. Kanal adını videoya ffmpeg ile ben ekliyorum.

Her üretimde ajan prompt'un kuralına göre rastgele bir renk paleti, sanatsal stil ve kompozisyon seçip İngilizce bir görsel prompt'u yazıyor. Bir görsel yaklaşık bir dakikada çıkıyor.


5. Video: 151 MB'tan 7 MB'a

Video aslında sabit bir kapak görseli ve ses dosyasından oluşuyor. İlk versiyonda ffmpeg ile ürettiğim bir video 151 MB tuttu. Sabit bir görüntü için bu saçma. Kodlama ayarlarını (sabit görüntüye uygun kare hızı ve sıkıştırma) düzenleyince aynı video yaklaşık 7 MB'a indi. Yükleme hızı ve disk açısından ciddi fark.

Videonun sol altına kanal adını yazdırıyorum; kapakta yazı olmadığı için marka görünürlüğü buradan geliyor.


6. YouTube'a yükleme

YouTube Data API v3 ile yükleme yapıyorum. Süreçte öğrendiklerim:

  • Google Cloud'da bir proje ve OAuth uygulaması oluşturmak gerekiyor. Uygulamayı "production" moduna almak için bir ana sayfa ve gizlilik politikası sayfası istiyorlar. Bunun için GitHub Pages'te basit bir sayfa açtım.
  • Her kanal için ayrı yetki (token) alınıyor. Yükleme aracı, yetkinin doğru kanala ait olup olmadığını kontrol ediyor. Yanlış kanala yükleme yapmak en son isteyeceğim şey.
  • API ile yüklenen videolar, Google'ın denetimi (audit) onaylanana kadar gizli olarak kilitlenebiliyor. Benim zaten tercihim gizli yüklemekti, ama bunu bilmek önemli.
  • API'nin günlük bir kotası var. Yüklemeyi hem Suno teslim edildiğinde anında hem de akşam son turda deneyen bir mantık kurdum; kota dolarsa ertesi tura kalıyor.

Başlık, açıklama, hashtag ve etiketler kanal profilindeki şablondan otomatik oluşturuluyor. Örneğin başlık şablonu: {title} | Kanal Şarkısı.

Videolar gizli yükleniyor. Yayınlama kararı her zaman bende. Bu bilinçli bir tercih: Denetim ne kadar iyi olursa olsun, son bir insan gözü her zaman iyi.


7. Gözlemlenebilirlik: Sistem sessizce durmasın

Otomasyonun en tehlikeli hâli, sessizce durmasıdır. Bir hafta sonra "neden video yok?" diye fark etmek istemiyordum. Bu yüzden izleme katmanına ciddi yatırım yaptım:

  • Ortak bir bildirim aracı: Tüm otomasyonlar tek bir script üzerinden bildirim gönderiyor. Telefon bildirimi için ntfy kullanıyorum (ücretsiz, kurulumu çok kolay), ayrıca masaüstü bildirimi ve isteğe bağlı e-posta. Kritik sorunlarda Paperclip'te de görev açılıyor.
  • Akşam sağlık kontrolü (19:00): Claude bağlantısı, ajanlar, Suno çalışanı, Chrome, ACE-Step, FLUX, YouTube yetkileri ve disk alanı kontrol ediliyor. Gece üretiminden önce sorun varsa haberim oluyor.
  • Sabah kontrolü (09:07): O gün üretim günü olan kanalın videosu yüklenmemişse "üretim takıldı" bildirimi geliyor.
  • Yeni video yüklendiğinde bildirim geliyor; tıklayıp kontrol ediyorum.

Bildirim seviyelerini (bilgi / uyarı / hata) ayırmak önemli. Her şeye bildirim gelirse bir süre sonra hiçbirine bakmıyorsunuz.


8. Kendini iyileştiren sistem (kontrollü şekilde)

Müdür ajanı her Cuma bir haftalık kontrol yapıyor:

  1. Bu haftaki tüm üretimlerin denetimi geçip geçmediğine bakıyor.
  2. Eksik dosya, başarısız sağlayıcı veya yüklenmemiş video var mı, kontrol ediyor.
  3. Kullandığım araçların (ACE-Step, FLUX vb.) güncellemelerini tarıyor. Bu kısım token harcamayan bir scriptle yapılıyor.
  4. YouTube istatistiklerini okuyor. Bir script Cuma 12:30'da her videonun izlenme ve beğeni sayılarını, hangi prompt'la ve hangi müzik sağlayıcısıyla üretildiğiyle birlikte bir dosyaya yazıyor. Müdür buna bakarak veriye dayalı öneri çıkarıyor. Örneğin "tür çarpıştırma prompt'uyla üretilen videolar daha çok izleniyor, sıralamada ağırlığını artıralım" gibi.
  5. Özeti yazıp bana bildirim gönderiyor.

Burada bir sınır koydum: Ajan prompt'ları, içerik politikasını veya sağlayıcı ayarlarını kendi başına değiştiremez. Öneri yapabilir, ama değişiklik için Paperclip üzerinden onay istemek zorunda. Yeni bir model veya araç denemek isterse, mevcut kurulumu bozmadan ayrı bir klasörde eski ve yeni çıktıyı yan yana üretiyor; dinleyip kararı ben veriyorum.

"Kendini iyileştiren ajan" kulağa havalı geliyor, ama denetimsiz bırakırsanız "kendini bozan ajan"a dönüşmesi çok kolay.


9. Bakım: Disk dolmasın

Her şarkı mp3, video ve yüksek çözünürlüklü kapak demek. Haftalar içinde disk doluyor. Pazar sabahları çalışan bir temizlik scripti, 30 günden eski ve YouTube'a yüklenmiş üretimlerin büyük dosyalarını siliyor. Sözler, metadata, denetim sonucu, YouTube linki ve küçük bir kapak kalıyor. ACE-Step'in önbelleği de 7 günde temizleniyor. Script'in bir "önizleme" modu var; ilk birkaç haftada silmeden önce neyin silineceğine baktım.


Zamanlamayı oturtmak

Zamanlama, düşündüğümden çok daha fazla revizyon geçirdi. İlk plan haftalık bir üretimdi. Sonra şuna evrildi:

  • Üretim her hafta içi gece 00:10'da tetikleniyor, ama hangi kanalın hangi gün üretileceği her kanalın kendi dosyasında yazıyor. Müzik kanalı Pazartesi ve Çarşamba üretiyor. Yeni bir kanal eklediğimde ajanların talimatlarına dokunmam gerekmiyor; sadece o kanalın dosyasına üretim günlerini yazıyorum.
  • Suno çalışanı gece 00:47'den itibaren saat başı kuyruğa bakıyor. Bilgisayar geceleri boşta olduğu için yerel modeller rahat çalışıyor.
  • Müdür'ün kontrolü Cuma öğlen.

Ajanların talimatlarını "tek kanala bağlı" yazmaktan "tüm kanallar için çalışan" hâle getirmek, ölçeklenme açısından attığım en doğru adımlardan biri oldu.


Öğrendiğim dersler

Eğer siz de benzer bir sistem kurmayı düşünüyorsanız, en önemli çıkarımlarım şunlar:

1. Ajanlara güvenme, doğrula. Ajanlar, bir adımı yapamadıklarında bunu itiraf etmek yerine "yapmış gibi" davranabiliyor. Kritik adımları (denetim, yükleme) kodla doğrulayın. Talimat yazmak yetmez.

2. Yapay zekâyı sadece gerektiği yerde kullan. Zamanlama, dosya taşıma, yükleme, istatistik çekme gibi işler için ajan uyandırmayın. Script yazın. Hem ucuz hem güvenilir.

3. En ucuz model her zaman en ucuz değildir. Küçük modelin her hatası bir düzeltme turu demek. İşin kritikliğine göre model seçin ve bu kararları kayıt altına alın.

4. Her zaman bir yedeğin olsun. Suno çalışmazsa ACE-Step var. Akşam son tur var. Video her koşulda çıkıyor.

5. Sessiz başarısızlık en kötü başarısızlıktır. Sağlık kontrolleri ve bildirimler, sistemin en az üretim kadar önemli parçası.

6. Son kararı insanda bırak. Videoları gizli yüklemek ve yayınlamayı kendime bırakmak, bana gönül rahatlığı veriyor.

7. Her şeyi yazılı tut. Ajan talimatları, kanal profilleri, içerik politikası, model değişiklik kaydı, sistem şeması... Hepsi git'te. Hem ajanlar hem ben aynı kaynaktan okuyoruz. Bir şey bozulduğunda neyin ne zaman değiştiğini görebiliyorum.

8. Gizli bilgileri baştan ayır. API anahtarları, OAuth dosyaları ve kanal yetkileri en başından git dışında, ayrı bir yerde duruyor. Ajanlara da "bunların içeriğini asla loglara yazma" talimatı verdim.


Kullandığım araçlar (özet)

  • Orkestrasyon: Paperclip (ajan "şirketi", görevler, onaylar)
  • Ajanlar: Claude Code (Haiku 4.5 ve Sonnet 5, düşük "effort" ayarıyla)
  • Tarayıcı otomasyonu: Claude'un Chrome eklentisi (Suno için)
  • Müzik: Suno (tarayıcı üzerinden) + ACE-Step 1.5 (yerel, yedek)
  • Kapak: FLUX.1-schnell, stable-diffusion.cpp ile (yerel, GGUF)
  • Video: ffmpeg (GPU hızlandırmalı)
  • Yükleme ve istatistik: YouTube Data API v3
  • Zamanlama: systemd user timer'ları
  • Bildirim: ntfy (telefon), masaüstü bildirimi, e-posta
  • Donanım: 8 GB ekran kartlı bir Linux masaüstü

Sonuç

Bu sistemi kurmak birkaç gün sürdü, ama o birkaç gün yoğun bir öğrenme süreciydi. Başta "ajan yazsın, ajan yüklesin, ben izleyeyim" diye düşünüyordum. Sonunda ortaya çıkan şey, ajanların yalnızca yaratıcı işleri yaptığı, geri kalan her şeyin sıkı kurallar, doğrulamalar ve yedeklerle çevrildiği bir üretim hattı oldu.

Şu an sistem gece benim yerime şarkı yazıyor, besteliyor, kapağını çiziyor, videosunu hazırlıyor ve YouTube'a yüklüyor. Ben sabah telefonuma gelen bildirime bakıp videoyu dinliyorum ve yayınlıyorum.

Sıradaki adım diğer kanalları eklemek ve biriken izlenme verilerine göre prompt'ları iyileştirmek. Sonuçları ve yeni kanallarla ilgili deneyimlerimi ilerleyen yazılarda paylaşacağım.

Sorularınız varsa ya da benzer bir şey kuruyorsanız yorumlarda yazın, deneyimlerinizi merak ediyorum.

21 Eylül 2026 Pazartesi

Bir Günde Neler Yaptık: Ubuntu'da Claude Code İçin Agentik Altyapı Kurulumu

 Bugün Ubuntu masaüstümde, Claude Code'un etrafına gerçek bir "agent yönetim" altyapısı kurduk. Normalde MacBook'ta cmux kullanıyorum ama bu Linux makinesinde onun bir karşılığı yoktu; gün, tam da bu boşluğu doldurma çabasıyla geçti.

Cmux'un Linux Karşılığını Aradık

cmux, birden fazla Claude Code oturumunu tek pencerede paralel yönetmek için macOS'e özel bir terminal. Linux'ta doğrudan bir karşılığı olmadığından tmux ve git worktree mantığıyla çalışan alternatifleri karşılaştırdık: dmux, Herdr, amux... İçlerinden dmux'u seçtik, çünkü cmux'un iş akışına en sadık olanı oydu.

dmux, Node.js ve tmux Kurulumu

Kurulum kolay olmadı. Önce tmux ve Node.js'i apt ile kurduk, ardından dmux'u npm ile global olarak yükledik. dmux artık bir git projesinin köküne girip n tuşuna bastığımızda otomatik olarak yeni bir git worktree açıp içine bir kodlama ajanı (Claude Code, Codex veya OpenCode) başlatabiliyor.

Paperclip: Çok Daha Büyük Bir Kontrol Paneli

Sonra Paperclip adlı, çok daha üst seviye bir agent orkestrasyon aracını kurduk. dmux tek repo içinde birkaç paralel pane açan hafif bir araçken, Paperclip onlarca ajanı bir şirket gibi yönetmek için org chart, bütçe takibi ve denetim kayıtları sunuyor. Kurulum sırasında Node.js sürüm uyumsuzluğu ve resmi kurulum betiğindeki eski bir bayrak hatasıyla karşılaştık; ikisini de çözüp Paperclip'i sistemin arka planında sürekli çalışan bir servis haline getirdik.

Telefondan Devam: Claude Remote Control

Günün en pratik parçası bu oldu: Claude Code'un resmi Remote Control özelliğini bu makinede etkinleştirdik. Artık telefonumdan veya başka bir bilgisayardan claude.ai/code ya da Claude mobil uygulaması üzerinden, bu Ubuntu masaüstündeki oturuma bağlanıp devam edebiliyorum; SSH'a falan gerek kalmadan.

Her Şey Otomatik Açılıyor

n8n'in Docker üzerinde makine açıldığında otomatik ayağa kalkması bize ilham oldu. Aynı mantığı Paperclip ve Claude Remote Control için de kurduk: ikisi de artık systemd kullanıcı servisi olarak enabled ve linger ayarlı, yani ben oturum açmasam bile makine yeniden başladığında otomatik çalışmaya başlıyorlar.

Sırada Ne Var?

Bugünün özeti bu kadar. Yarın kaldığımız yerden devam edeceğiz: ilk gerçek dmux projesini oluşturup Paperclip'in onboarding sürecini tamamlayacağız. Bu yazının kendisi de zaten bu yeni altyapının ilk meyvesi; Claude'a bugünü bir makaleye dönüştür ve yayınla dedim, o da tarayıcıyı açıp Blogger'a girdi, doğru blogu seçti ve bu satırları yazıp yayınladı.

23 Temmuz 2026 Perşembe

Jenkins ve GitLab ile Güvenli DevSecOps Pipelines Oluşturma Rehberi

DevSecOps, günümüzün hızlı ve güvenli yazılım geliştirme süreçlerinde önemli bir role sahiptir. DevSecOps pipelinerinin oluşturulmasında kullanılan araçlar arasında Jenkins ve GitLab öne çıkmaktadır. Bu rehberde, Jenkins ve GitLab kullanarak güvenli DevSecOps pipelines oluşturmayı ele alacağız.

Jenkins ve GitLab Entegrasyonu

Jenkins, genişletilebilen bir açık kaynaklı otomasyon sunucusudur. GitLab ise bir.version kontrol sistemi ve DevOps platformudur. Bu iki aracı entegre ederek, geliştiricilerin kodlarını daha hızlı ve güvenli bir şekilde teslim etmelerine yardımcı olabiliriz. Webhook kullanarak Jenkins'i GitLab ile entegre edebiliriz.

Pipeline Oluşturma

İlk adım, Jenkins'de bir pipeline oluşturmaktır. Bu, Groovy dili kullanılarak yapılır. Pipeline, belirli görevlerin sırayla yürütülmesini sağlar. GitLab ile entegre ederek, her kod değişikliğinde pipeline'ın otomatik olarak çalışmasını sağlayabiliriz.

DevSecOps pipeline'ında güvenlik önemli bir rol oynar. SAST (Static Application Security Testing) ve DAST (Dynamic Application Security Testing) araçlarını kullanarak, kodun güvenlik açıklarını tespit edebiliriz. Jenkins'de bu araçları entegre etmek, pipeline'ın bir parçası olarak güvenlik testlerini çalıştırmamızı sağlar.

Örnek Pipeline

Aşağıdaki örnek, Jenkins'de bir pipeline oluşturmayı gösterir:

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                sh 'make build'
            }
        }
        stage('Test') {
            steps {
                sh 'make test'
            }
        }
        stage('Deploy') {
            steps {
                sh 'make deploy'
            }
        }
        stage('Security Scan') {
            steps {
                sh 'sast-scan'
            }
        }
    }
}

Bu örnek, build, test, deploy ve security scan aşamalarını içerir. Her aşama, belirli bir görevi gerçekleştirir.

Sonuç

Jenkins ve GitLab kullanarak güvenli DevSecOps pipelines oluşturmak, geliştiricilerin kodlarını daha hızlı ve güvenli bir şekilde teslim etmelerine yardımcı olabilir. Webhook ve pipeline entegrasyonu, otomasyon sürecini kolaylaştırır. Güvenlik testlerini pipeline'a entegre etmek, güvenlik açıklarını erken tespit etmemizi sağlar.

17 Temmuz 2026 Cuma

DevSecOps Pipelines with Jenkins and GitLab: Güvenli ve Otomatikleştirilmiş Sürüm Yönetimi

DevSecOps, geliştirme, güvenlik ve operasyon ekiplerini bir araya getirerek, yazılım geliştirme sürecinde güvenlik ve kaliteyi önceliklendiren bir yaklaşım olarak 2026 yılında da önemli bir rol oynamaya devam ediyor. Bu yaklaşımın temel bileşenlerinden biri olan ci/cd (Continuous Integration/Continuous Deployment) pipeline'ları, Jenkins ve GitLab gibi araçlarla oluşturulabilir.

DevSecOps Pipeline'ları Nedir?

DevSecOps pipeline'ları, kaynak kodunun geliştirilmesinden üretim ortamına dağıtılmasına kadar olan tüm aşamaları kapsayan, otomasyon odaklı bir süreçtir. Bu pipeline'lar, güvenlik kontrollerini ve kalite güvence adımlarını entegre ederek, güvenli ve kaliteli bir şekilde yazılım teslimatını sağlar.

Jenkins ve GitLab Entegrasyonu

Jenkins, ci/cd pipeline'larını oluşturmak için kullanılan popüler bir araçtır. GitLab ise, versiyon kontrolü ve proje yönetimi için kullanılan bir platformdur. Jenkins ve GitLab'ı entegre ederek, otomatikleştirilmiş ve güvenli bir DevSecOps pipeline'ı oluşturabilirsiniz.

Örnek bir senaryoda, Jenkins, GitLab'dan kaynak kodu değişikliklerini algılar ve derleme ve test adımlarını çalıştırır. Ardından, güvenlik kontrolleri ve kalite güvence adımları uygulanır. Son olarak, üretim ortamına dağıtım yapılır.

Bu yaklaşım, hata oranını azaltır, teslimat süresini kısaltır ve güvenliği önceliklendirir. Ayrıca, ekipler arası işbirliğini ve şeffaflığı artırır.

2026 yılında, DevSecOps ve ci/cd pipeline'ları, yarışmacı bir piyasadaki başarı için olmazsa olmazlar haline gelmiştir. Jenkins ve GitLab gibi araçlarla oluşturulan güvenli ve otomatikleştirilmiş pipeline'lar, kurumların hızlı ve güvenli bir şekilde yenilikçi çözümler sunmasına yardımcı olur.

15 Haziran 2026 Pazartesi

DevSecOps Pipelines ile Jenkins ve GitLab Entegrasyonu: Güvenlik ve Verimlilik için Rehber

DevSecOps, geliştirme, güvenlik ve operasyon ekiplerini bir araya getirerek, yazılım geliştirme sürecinde güvenlik ve kaliteyi önceliklendiren bir yaklaşım olarak ön plana çıkıyor. Jenkins ve GitLab gibi araçlar, bu yaklaşımın uygulanmasında kritik bir rol oynuyor. Bu makalede, DevSecOps pipelines ile Jenkins ve GitLab entegrasyonunun nasıl gerçekleştirileceği ve bu entegrasyonun faydaları hakkında teknik bir rehber sunulacak.

DevSecOps Pipelines Nedir?

DevSecOps pipelines, yazılım geliştirme sürecinin her aşamasında güvenlik ve kalite kontrollerinin entegre edildiği bir dizi otomasyon aracıdır. Bu pipelines, kodun yazıldığı andan itibaren, sürekli entegrasyon ve teslim süreçlerini kapsar. CI/CD (Continuous Integration/Continuous Deployment) pipeline'ları, kod değişikliklerinin hızlı ve güvenilir bir şekilde üretim ortamına taşınmasını sağlar.

Jenkins ve GitLab Entegrasyonu

Jenkins, bir CI/CD aracı olarak, kod değişikliklerinin otomatik olarak derlenmesini, test edilmesini ve dağıtılmasını sağlar. GitLab ise, bir versiyon kontrol sistemi olarak, kod değişikliklerinin takip edilmesini ve işbirliğini kolaylaştırır. Jenkins ve GitLab entegrasyonu, bu iki aracın gücünü birleştirerek, daha güçlü ve güvenli bir DevSecOps pipeline'ı oluşturur.

Jenkins ve GitLab entegrasyonu için aşağıdaki adımlar takip edilebilir:

  • GitLab Repository oluşturulur ve Jenkins ile entegre edilir.
  • Jenkins Pipeline oluşturulur ve GitLab repository ile bağlantılı hale getirilir.
  • Security Plugins Jenkins pipeline'a eklenir ve güvenlik kontrolleri uygulanır.
  • Automated Testing Jenkins pipeline'a entegre edilir ve kod değişikliklerinin otomatik olarak test edilmesi sağlanır.

Bu entegrasyon, güvenlik ve kalite kontrollerinin otomasyonunu sağlar ve DevSecOps pipeline'ının hiệu quả bir şekilde uygulanmasını sağlar.

Sonuç

DevSecOps pipelines ile Jenkins ve GitLab entegrasyonu, güvenlik ve verimlilik için kritik bir öneme sahiptir. Bu entegrasyon, kod değişikliklerinin hızlı ve güvenilir bir şekilde üretim ortamına taşınmasını sağlar ve güvenlik kontrollerinin otomasyonunu sağlar. DevSecOps yaklaşımı, yazılım geliştirme sürecinde güvenlik ve kaliteyi önceliklendiren bir yaklaşım olarak, Jenkins ve GitLab gibi araçların entegrasyonu ile daha da güçlü hale gelir.

15 Mayıs 2026 Cuma

DevSecOps Pipelines ile Jenkins ve GitLab Entegrasyonu: Güvenlik ve Verimlilik için Rehber

DevSecOps, güvenlik ve geliştirme ekiplerinin birlikte çalışmasını sağlayan bir yaklaşım olarak dikkat çekiyor. DevSecOps Pipelines, bu yaklaşımın önemli bir parçası ve Jenkins ile GitLab entegrasyonu, bu alanda sıkça kullanılan bir kombinasyon. Bu rehberde, DevSecOps Pipelines ile Jenkins ve GitLab entegrasyonunun temel prensiplerini ve uygulama adımlarını inceleyeceğiz.

DevSecOps Pipelines Nedir?

DevSecOps Pipelines, geliştirme, test, güvenlik ve dağıtım süreçlerini bir araya getiren bir dizi otomasyon aracıdır. Bu pipeline'lar, CI/CD (Continuous Integration/Continuous Deployment) prensiplerine dayanarak, kod değişikliklerinin hızlı ve güvenli bir şekilde üretim ortamına aktarılmasını sağlar.

Jenkins ve GitLab Entegrasyonu

Jenkins, bir otomasyon sunucusu olarak görev yapan güçlü bir araçtır. GitLab ise, bir versiyon kontrol sistemi ve DevOps platformudur. Jenkins ve GitLab entegrasyonu, bu iki aracı bir araya getirerek, kod değişikliklerinin hızlı ve güvenli bir şekilde üretim ortamına aktarılmasını sağlar. Bu entegrasyon, Webhook lar aracılığıyla gerçekleşir ve API çağrıları ile pipeline'ların tetiklenmesini sağlar.

Örneğin, bir geliştirici kod değişikliği yaptığında, GitLab bu değişikliği Jenkins'e bildirir. Jenkins, bu bilgilendirmeye göre pipeline'ı tetikleyerek, derleme, test ve güvenlik kontrollerini gerçekleştirir. Eğer tüm adımlar başarılı olursa, pipeline kod değişikliğini üretim ortamına aktarır.

DevSecOps Pipelines ile Jenkins ve GitLab Entegrasyonunun Avantajları

DevSecOps Pipelines ile Jenkins ve GitLab entegrasyonu, several avantajlar sağlar:

  • Hızlı ve Güvenli Dağıtım: Pipeline'lar, kod değişikliklerinin hızlı ve güvenli bir şekilde üretim ortamına aktarılmasını sağlar.
  • Otomasyon: Jenkins ve GitLab entegrasyonu, otomasyon aracı olarak görev yapar ve manuel işlemlerin azaltılmasını sağlar.
  • Güvenlik: Pipeline'lar, güvenlik kontrollerini gerçekleştirerek, kod değişikliklerinin güvenli bir şekilde üretim ortamına aktarılmasını sağlar.

Bu rehber, DevSecOps Pipelines ile Jenkins ve GitLab entegrasyonunun temel prensiplerini ve uygulama adımlarını incelemiştir. Bu entegrasyon, geliştirme, test, güvenlik ve dağıtım süreçlerini bir araya getirerek, kod değişikliklerinin hızlı ve güvenli bir şekilde üretim ortamına aktarılmasını sağlar.

25 Nisan 2026 Cumartesi

Raspberry Pi 5: Endüstriyel Uygulamalar için Güçlü Bir Seçenek

Raspberry Pi 5, endüstriyel otomasyon ve IoT uygulamaları için tasarlanmış bir tek kartlı bilgisayardır. Bu cihaz, 4GB veya 8GB RAM seçenekleri ile gelir ve Quad-Core Cortex-A77 işlemci ile donatılmıştır.

Raspberry Pi 5'in Özellikleri

Raspberry Pi 5, Wi-Fi 6 ve Bluetooth 5.0 gibi kablosuz bağlantı seçeneklerine sahiptir. Ayrıca, 2x USB 3.0 ve 2x USB 2.0 portları ile donatılmıştır. Bu, endüstriyel uygulamalar için gerekli olan yüksek hızda veri transferi için idealdir.

Endüstriyel Uygulama Alanları

Raspberry Pi 5, endüstriyel otomasyon, IoT, görüntü işleme ve makine öğrenimi gibi alanlarda kullanılabilecek güçlü bir cihazdır. Yazılım geliştirme ve test için de idealdir.

Raspberry Pi 5'in güvenlik özellikleri de dikkat çekmektedir. Şifreleme ve güvenli boot gibi özellikler, endüstriyel uygulamalar için gerekli olan güvenlik seviyesini sağlar.

Raspberry Pi 5, endüstriyel uygulamalar için güçlü ve esnek bir çözüm sunar. Yüksek performans, güvenlik ve esneklik özellikleri ile dikkat çekmektedir.

15 Şubat 2026 Pazar

DevSecOps Pipelines ile Jenkins ve GitLab Entegrasyonu: Güvenlik ve Verimlilik için Kapsamlı Bir Rehber

15 Şubat 2026 itibarıyla, modern yazılım geliştirme süreçlerinde DevSecOps kavramı giderek daha önemli hale geliyor. Bu yaklaşım, güvenlik ve geliştirme ekiplerini bir araya getirerek, güvenlik ve kalite standartlarını tüm yazılım yaşam döngüsü boyunca entegre etmeyi amaçlıyor. Bu makalede, Jenkins ve GitLab gibi popüler araçları kullanarak DevSecOps Pipelines oluşturmanın teknik ayrıntılarına ve avantajlarına bakacağız.

Jenkins ve GitLab Entegrasyonu

Jenkins, sürekli entegrasyon ve teslimat için geniş bir kullanıcı kitlesine sahip bir otomasyon sunucusudur. GitLab ise, versiyon kontrolü, proje yönetimi ve CI/CD özellikleri sunan bir platformdur. Bu iki aracı entegre etmek, geliştiricilerin kod değişikliklerinden teslimata kadar olan tüm süreci otomatikleştirmesine ve izlemesine olanak tanır.

DevSecOps Pipelines Oluşturma

DevSecOps Pipelines oluştururken, güvenlik ve kalite kontrollerini her aşamada dahil etmek önemlidir. Aşağıdaki adımlar, bu süreci basitleştirmeye yardımcı olur:

  • Kod İnceleme: Geliştiricilerin kodlarını GitLab'a push ettiklerinde, Jenkins tarafından otomatik olarak kod analizi ve güvenlik taramaları yapılabilir.
  • Otomatik Test: Jenkins, birim testleri, entegrasyon testleri ve güvenlik testlerini çalıştırarak, kodun kalite ve güvenlik standartlarını karşıladığını doğrular.
  • CI/CD: Testlerin başarılı olması durumunda, Jenkins tarafından otomatik olarak derleme, paketcilik ve dağıtım işlemleri gerçekleştirilir.

Bu entegrasyon, geliştiricilerin güvenli ve kaliteli yazılımları daha hızlı bir şekilde teslim etmesine olanak tanır. Ayrıca, güvenlik ve kalite sorunlarının erken tespit edilmesini sağlar, böylece bu sorunların giderilmesi için harcanan zaman ve kaynak azaltılır.

Sonuç olarak, Jenkins ve GitLab kullanarak DevSecOps Pipelines oluşturmak, modern yazılım geliştirme süreçlerinde güvenlik, kalite ve verimlilik için kritik bir adımdır. Bu yaklaşım, geliştiricilerin güvenli ve kaliteli yazılımları daha hızlı bir şekilde teslim etmesine yardımcı olur ve güvenlik ve kalite standartlarını tüm yazılım yaşam döngüsü boyunca sağlar.

11 Şubat 2026 Çarşamba

Otomatik Docker Container Deployment: Ansible ile DevOps Otomasyonu Kılavuzu

Otomatik Docker Container Deployment: Ansible ile DevOps Otomasyonu

Docker ve DevOps ekosisteminin merkezinde yer alan otomasyon, modern yazılım geliştirme süreçlerini hızlandırır. Ancak, manuel Docker container dağıtımına zaman kaybetmeden, Ansible gibi orkestrasyon araçlarıyla bu süreci otomatikleştirmek, hem hata payını azaltır hem de tekrar tekrar aynı görevleri yapmaya gerek kalmaz. Bu kılavuzda, Docker konteynerlerini Ansible kullanarak nasıl otomatik dağıtabileceğinizi adım adım anlatacağım.

Amaç

DevOps Otomasyonunun Neden Kritik

Docker konteynerleri dağıtım süreçlerini standartlaştırırken, manuel müdahaleler her seferinde hata riskini artırır. Ansible ile Docker deployment sürecini otomatik hale getirerek;

  • İkili dağıtım (binary deployment) süreçlerini hızlandırabilirsiniz.
  • Konteyner güncellemelerini tek bir komutla yönetebilirsiniz.
  • Çoklu sunuculara paralel otomatik dağıtım yapabilirsiniz.

Ön Koşullar

Aşağıdaki araçların veya bilgilerin hazır olduğundan emin olun:

  • Linux/Unix tabanlı sistem (örnek: Ubuntu 22.04)
  • Docker kurulmuş olmalıdır (sudo apt install docker.io)
  • Ansible kurulmuş olmalıdır (sudo apt install ansible)
  • YAML ve Dockerfile temeli bilgisi

Adım Adım Anlatım

Adım 1: Dockerfile Oluşturma

Öncelikle bir Docker image oluşturmak için Dockerfile yaratalım. Aşağıdaki örnekte, Python uygulaması içeren bir konteyner image’ı tanımladık:

FROM python:3.9-slim  
WORKDIR /app  
COPY . /app  
RUN pip install -r requirements.txt  
CMD ["python", "app.py"]  

Adım 2: Ansible Playbook Oluşturun

Ansible, playbook.yml dosyası üzerinden görevleri tanımlar. Aşağıdaki playbook, Dockerfile’ı derler, image’ı çalıştırır ve konteyneri başlatır:

- hosts: all  
  become: yes  
  tasks:  
    - name: Dockerfile'dan image derle  
      docker_image:  
        path: ./docker-repo  
        name: my-python-app  
        source: build  
    - name: Konteyner başlat  
      docker_container:  
        name: my-container  
        image: my-python-app:latest  
        state: started  
        ports:  
          - "5000:5000"  

Adım 3: Inventory Dosyası Ayarlayın

Ansible, inventory dosyası üzerinden hedef sunucuları tanımlar. Örneğin, hosts dosyanızda:

[docker_servers]  
192.168.1.10  
192.168.1.11  

Adım 4: Playbook'u Çalıştırın

Aşağıdaki komutla playbook’u çalıştırın:

ansible-playbook -i hosts playbook.yml  

Bu komut, listedeki tüm sunucularda Docker konteynerlerini otomatik olarak dağıtır.

Geliştirme Tavsiyeleri

Ekstra: CI/CD Entegrasyonu

Bu playbook’u Github Actions veya Jenkins ile entegre ederek, her kod değişikliğinde otomatik deployment sağlayabilirsiniz.

Sonuç

Bu kılavuzda, Ansible ile Docker konteyner dağıtımını nasıl otomatikleştireceğinizi öğrendik. Docker ve Ansible’nin birleşimi, DevOps süreçlerinde hem hız kazandırır hem de hata payını minimize eder. Bu yöntemi bir sonraki adım olarak, kubernetes veya OpenShift gibi container orchestrators ile genişletebilirsiniz. Unutmayın: Otomasyon, sadece kodlama değil, yazılım yaşam döngüsünün her aşamasını dönüştürür.

Referanslar

7 Şubat 2026 Cumartesi

Docker ve Proxmox ile Otomasyon: Ansible Kullanarak Etkin ve Hızlı Container Dağıtımı

Docker ve Proxmox ile Otomasyon: Ansible Kullanarak Etkin ve Hızlı Container Dağıtımı

Siber güvenlik ve bulut altyapısı projelerinde hız, güvenilirlik ve tekrarlanabilirlik kritik öneme sahiptir. Docker gibi container teknolojisi ile Proxmox gibi sanallaştırma platformlarının bir araya getirilmesi, modern DevOps süreçlerinde büyük bir avantaj sağlar. Ancak bu bileşenleri manuel olarak yönetmek hem zaman alıcı hem de hata riski taşır. Bu makalede, Ansible otomasyon aracını kullanarak Docker(container) görüntülerinin Proxmox sanal makinelerine otomatik olarak nasıl dağıtılacağını adım adım anlatacağız.

Amaç: Neden Bu Konu Önemlidir?

Modern sistem yönetimi, mikroservis mimarileri ve konteyner tabanlı dağıtımların artmasıyla birlikte otomasyonun önemi artmıştır. Ansible ile Docker ve Proxmox entegrasyonu sayesinde; servis dağıtım süresi azalır, insan hataları minimize edilir ve sistemlerin yeniden yapılandırılmasına ihtiyaç kalmaz. Bu yöntem özellikle CI/CD (Sürekli Entegrasyon ve Teslim) süreçlerinde ve cloud-native projelerde büyük fark yaratabilir.

Ön Koşullar

1. Gerekli Araçlar ve Bilgiler

  • Docker (Container görüntüsü)
  • Proxmox VE 8.0+ (Sanal makineler için)
  • Python 3.8+ (Ansible için)
  • Ansible 2.15+ (Otomasyon aracı)
  • SSH erişimi (Proxmox sunucusuna)
  • Temel YAML bilgisi (Playbook yazımı)

2. Ortam Hazırlığı

Önce Proxmox sunucusunuzda bir sanal makine (VM) oluşturun ve içinde Docker kurulumunu tamamlayın. Ardından Ansible kontrol sunucusunda Docker ve Proxmox ile çalışan bir playbook oluşturmak için gerekli Python modüllerini kurun:

pip install ansible docker

Adım Adım Anlatım

Adım 1: Ansible Inventory Dosyası Oluşturma

Ansible, hedef sistemleri inventory dosyasından okur. Aşağıda örnek bir inventory dosyası verilmiştir:

[proxmox]  
192.168.1.100 ansible_user=root  

[containers]  
proxmox_container1 ansible_connection=proxmox ansible_proxmox_node=node1 ansible_proxmox_password=

Adım 2: Docker Görüntüsünü Proxmox'a Dağıtma

Aşağıdaki playbook, Docker Hub'dan bir resmi çekip Proxmox konteyneri olarak başlatır:

---  
- name: Docker Container Deployment on Proxmox  
  hosts: containers  
  tasks:  
    - name: Pull Docker image  
      docker_image:  
        name: nginx:latest  
        state: present  

    - name: Run Docker container  
      docker_container:  
        name: my_nginx  
        image: nginx:latest  
        ports:  
          - "80:80"  
        state: started

Adım 3: Playbook'u Çalıştırma

Playbook'u çalıştırırken Proxmox'un SSH erişim güvenliğini kontrol edin. Aşağıdaki komutla işlemi başlatın:

ansible-playbook deploy.yml -i inventory

Adım 4: Otomatik Test ve Raporlama

Dağıtım tamamlandıktan sonra Ansible'ın check mode (test modu) ile hata kontrolü yapın:

ansible-playbook deploy.yml --check

Sonuç

Bu makalede, Ansible aracılığıyla Docker ve Proxmox sistemlerini entegre ederek otomatik container dağıtımı gerçekleştirdik. Bu yöntem sayesinde; DevOps süreçlerinin verimliliği, sistem yönetiminin güvenilirliği ve projelerin tekrarlanabilirliği artar. Uygulama geliştiricileri ve sistem yöneticileri için bu teknik, hem zaman kazandıran hem de hata riskini azaltan bir çözüm sunar.

Dilerseniz bu süreci CI/CD pipeline entegrasyonu ile daha da geliştirerek her kod değişikliği sonrası otomatik dağıtım yapılabilir. Merakınız varsa yorumlarda sorularınızı sorabilirsiniz.

6 Şubat 2026 Cuma

Siber Güvenlikte Otomasyonun Rolü: Teknik Bir Rehber

Siber güvenlik, günümüzde teknolojinin her geçen gün daha da fazla entegre olduğu worldümüzde kritik bir öneme sahip olmuştur. Bu alanda otomasyonun rolü, güvenlik operasyonlarını daha verimli ve etkin bir şekilde yürütülmesini sağlar. Bu rehberde, siber güvenlikte otomasyonun temel prensiplerini, faydalarını ve uygulanma yöntemlerini inceleyeceğiz.

Otomasyon, güvenlik ekiplerinin daha çok stratejik ve yüksek düzeyli görevlere odaklanmasını sağlar. Otomasyonun birincil avantajı, güvenlik operasyonlarının hızını artırarak daha hızlı müdahale olanakları sunmasıdır. Bir siber saldırı meydana geldiğinde, hızlı ve etkili bir yanıt verme kabiliyeti, zararın minimize edilmesinde kritik bir faktördür.

Siber güvenlik otomasyonu, tehditlerin tanımlanması, analiz edilmesi ve bertaraf edilmesi süreçlerini içerir. Bu, genellikle güvenlik bilgi ve olay yönetimi (SIEM) sistemleri, güvenlik orchestration, otomasyon ve response (SOAR) platformları ve security automation gibi araçlar aracılığıyla gerçekleştirilir. Bu araçlar, güvenlik ekiplerinin daha verimli çalışmasını sağlar ve insan hatası riskini azaltır.

Ancak, siber güvenlik otomasyonu sadece teknoloji değildir. Etkili bir otomasyon stratejisi, iş süreçlerinin, politika ve prosedürlerin ve eğitimli personelin bir bileşimidir. Güvenlik ekipleri, otomasyonun faydalarını tam olarak yararlanabilmek için bunları dikkatlice planlamalı ve uygulamalıdır.

Modern yazılım dilleri de siber güvenlik otomasyonunda önemli bir rol oynar. Örneğin, Python gibi diller, güvenlik araçları ve otomasyon betikleri geliştirmek için sıklıkla kullanılır. Bu diller, güvenlik uzmanlarına komplex görevleri otomatikleştirmek için mạnh ve esnek bir platform sağlar.

Sonuç olarak, siber güvenlikte otomasyon, güvenlik operasyonlarını daha verimli, hızlı ve etkili hale getirmek için kritik bir bileşendir. Güvenlik ekipleri, otomasyonun faydalarını tam olarak yararlanabilmek için doğru araçları, iş süreçlerini ve eğitimli personeli bir araya getirmelidir. Bu şekilde, kurumlar themselves daha güçlü bir siber güvenlik duruşu oluşturabilir ve günümüzün complex tehditlerine karşı daha iyi korunabilir.