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

29 Ağustos 2026 Cumartesi

3,5 Saat ve Bir iPhone 6S: postmarketOS ile Eski Dönüşüm Maliyet Analizi

Eski Donanımın Yeni Bir Amacı: Maliyet Versus Emek

2026 yılında akıllı telefon sektöründe donanım yenileme döngüsü sürerken, köşede paslanmaya bırakılmış cihazların potansiyeli gözden kaçırılmamalı. XDA ve MakeUseOf yazarı Simon Batt, 28 Ağustos 2026 tarihli bir analizde, eski bir iPhone 6S üzerine postmarketOS adlı Linux dağıtımını kurma sürecini masaya yatırıyor. Bu işlem, teknolojiyi yalnızca hobi olarak ele alanlar için değil, maliyet odaklı bir perspektiften bakıldığında da eski donanımı yenilemenin ne kadar emek gerektirdiğini açıkça ortaya koyuyor. Güncel bir telefon satın almak yerine yıllar önce piyasaya sürülmüş bir modeli kurtarmak, sıfır maliyeti olmasa da yüksek bir zaman yatırımı gerektiriyor.

Kurulum Süreci ve Zaman Maliyeti

Linux camiasında internette dolaşan bu projenin arkasında, Available_System_401 adlı bir Reddit kullanıcısı bulunuyor. Kullanıcı, sıkıcı bir anında aklına takılan fikirle ailesinin veya kendi depolarında yatan iPhone 6S cihazını yeniden canlandırmaya çalıştı. Bu işlemin başarıya ulaşması yaklaşık 3,5 saat sürdü. Fiyat/performans dengesindeki bu 3,5 saatlik süreç, daha önce hiç benzer bir işlem yapmadıysanız öğrenme eğrisi olarak da değerlendirilmeli. Zaten elinizde olan ve kullanmadığınız bir cihaz için bu zaman harcamak, sıfır bir cihaz almana göre çok daha ekonomik bir durum; ancak aynı cihazı satıp başka bir şey almak pazardaki değişim oranına göre hesaplanmalı.

Android’den Farklı: Saf Bir Linux Deneyimi

Bu deneyim sıradan bir Android telefonu kurmakla karşılaştırılamaz. Android tabanlı olmayan ve tamamen bağımsız bir Linux çekirdeği üzerine kurulu olan postmarketOS, telefonunuza PC’ye kurduğunuz herhangi bir Linux sürümü gibi bir sistem yükler. Bu, iPhone 6S’in Apple’ın kapalı ekosisteminden koparak kendi kontrolünüzde olan, açık kaynaklı bir cihaz haline geldiği anlamına gelir. Teknik olarak bu, işletim sistemi seviyesinde tamamen farklı bir yapıyı ifade eder ve cihazın yapabileceği ile yapamayacağı şeyler açısından net bir ayrım yaratır.

Uygulama Eksikliği ve GUI Gerçeküstü Görünümü

Linux kurulumunun ardından gelen en büyük dezavantaj, uygulama desteğinin son derece sınırlı olmasındadır. Simon Batt’in de belirttiği gibi, bazı servisler ve uygulamalar çalışmayacaktır. Bu durum, cihazı bir günlük sürücü olarak kullanmayı planlayanlar için ciddi bir maliyet oluşturur. Ekran karşısında görünen Linux GUI arayüzü, iPhone’e alışkın gözler için “gerçeküstü” bir etki yaratıyor. Ancak bu arayüz, herhangi bir sürükle-bırak yerleşimi yerine tamamen Linux üzerine inşa edildikinden geleneksel yüzeylerle tam anlamıyla uyumlu değildir.

Doğru Kaynakları Kullanmak ve Diğer Seçenekler

Bu tür kurulumları denerken en önemli adım, doğru bilgiye dayanmaktır. Kullanıcı, postmarketOS Wiki sayfasını ve desteklenen cihazların listesi olan devices sayfasını detaylıca kontrol etmelidir. Bu adımları atlayarak kurulum denemek, hem cihazın hem de zamanının boşa gitmesine neden olabilir. Aynı zamanda Simon Batt, OnePlus 6 üzerinde daha iyi bir deneyim için Fedora Atomic tabanlı Pocketblue dağıtımını da alternatif olarak listeye ekliyor. Bu alternatif, daha modern bir yapı sunarak farklı cihazlarda farklı maliyet-performans dengeleri yaratabilir.

Eski bir platformu kurtarmak, teknik merakın ötesinde bir yatırım stratejisi de olabilir. iPhone 6S üzerinde yapılan bu canlandırma işleminin teknik detayları ve zaman alışı göz önüne alındığında, bu işlem yalnızca küçük bir deneyim olarak kalmıyor; açık kaynak dünyasının, cihazın sıyırdığımız zaman ve emeğe ne kadar değer verdiğini de ortaya koyuyor.

Kaynak: xda-developers.com

11 Ağustos 2026 Salı

COSMIC Masaüstü: Linux'ta Yeni Bir Deneyim

Linux dünyasında GNOME tabanlı bir masaüstü ortamı olarak ortaya çıkan COSMIC, kullanıcıların sistem kontrolünü daha doğrudan ve sade bir şekilde yönetebilmesine olanak tanıyor. Menü çubuğunda güç, ses ve görüntü gibi temel sistem bileşenlerini gösteren birden fazla applet bulunuyor; bu sayede ayarlar tek bir menüde toplanıyor ve erişim hızlanıyor.

Arch Linux deneyimimden sonra KDE'yi tercih etmiştim, ancak COSMIC'in sunduğu hafif yapı ve özelleştirilebilir kontrol seçenekleri beni bu ortamı denemeye yönlendirdi. GNOME üzerine inşa edilmiş olmasına rağmen geliştiriciler, arayüzü daha az müdahaleci ve daha hızlı bir hale getirmek için çeşitli iyileştirmeler yaptı. Özellikle uygulama başlatıcı ve tam ekran deneyimi, çoklu görevlerde rahatlık sağlıyor.

COSMIC, uygulama listesi ve klavye tabanlı arama özellikleriyle GNOME'den farklı bir deneyim sunuyor. Kullanıcılar, istedikleri programa birkaç tuşla ulaşabiliyor; bu da çalışma verimliliğini artırıyor. Ayrıca, pencere yönetiminde “tırtıl” ve “süzme” modları bulunuyor. Bu modlar, birden fazla pencereyi aynı anda düzenlemeye ve hızlı geçiş yapmaya imkan tanıyor. Özellikle çoklu uygulama kullananlar için pencere gruplama ve birleştirme işlevi büyük kolaylık sağlıyor.

Bir diğer dikkat çeken özellik, Windows 10’da test edilmiş ancak iptal edilen “Sets” işlevinin COSMIC tarafından hayata geçirilmiş olması. Sets, birden fazla uygulamayı tek bir pencere içinde birleştirerek çalışma alanını daha düzenli hale getiriyor. Bu sayede, masaüstü üzerindeki karmaşa azalıyor ve odaklanma kolaylaşıyor.

Temalar ve görünüm ayarları da KDE’ye kıyasla daha basit bir yapı sunuyor. Tema ayarları birden fazla sayfada detaylı olarak bulunuyor; bu da kullanıcıların istedikleri görsel düzeni zahmetsizce uygulamasına olanak tanıyor. Hata mesajlarıyla karşılaşma riski düşük olduğu için tema değişiklikleri sorunsuz gerçekleşiyor.

Kurulum süreci ise desteklenen bir Linux dağıtımında birkaç komutla tamamlanabiliyor. Çoğu dağıtım deposunda paket mevcut olduğundan, paket yöneticisi üzerinden cosmic-desktop paketi kuruluyor ve oturum açma ekranında COSMIC seçilebiliyor. Kurulum genellikle birkaç dakika sürüyor; ardından masaüstü ortamı otomatik olarak başlatılıyor.

Kurulum sırasında varsayılan masaüstü olarak ayarlama seçeneği bulunuyor. İsterseniz aynı sistemde birden fazla kullanıcı hesabı için farklı masaüstü ortamları da yapılandırabilirsiniz. Deneyimli kullanıcılar, terminal üzerinden ek ayarları ve uzantıları yükleyerek ortamı daha da özelleştirebilir.

COSMIC'in sunduğu doğrudan kontrol seçenekleri, özellikle sistem ayarlarını sık sık değiştiren kullanıcılar için büyük avantaj sağlıyor. Ses, ekran parlaklığı ve güç yönetimi gibi temel işlevler menü çubuğunda tek bir dokunuşla erişilebilir. Bu yapı, GNOME’in daha katmanlı menü sistemine göre daha hızlı bir etkileşim sunuyor.

Arayüz tasarımı sade ve anlaşılır; yeni başlayanlar bile kısa sürede temel işlevleri kavrayabiliyor. Menü çubuğu, uygulama başlatıcı ve sistem appletleri arasında net bir ayrım bulunuyor, bu da öğrenme eğrisini kısaltıyor. Kullanıcı geri bildirimlerine göre sürekli güncellenen COSMIC, topluluk tarafından desteklenen bir proje olarak gelişimini sürdürüyor.

Sonuç olarak, COSMIC masaüstü ortamı GNOME tabanlı olmasına rağmen hafifliği, doğrudan kontrol seçenekleri ve yenilikçi pencere yönetimiyle Linux kullanıcılarına farklı bir deneyim sunuyor. KDE ve GNOME arasında bir köprü görevi gören bu ortam, özellikle çoklu görev ve verimlilik odaklı çalışanlar için cazip bir alternatif oluşturuyor.

Kaynak: xda-developers.com

14 Temmuz 2026 Salı

Advanced Linux Kernel Tuning & Performance: Maksimum Verimlilik İçin Teknik Rehber

Linux kernel, işletim sisteminin temel bileşenidir ve sistem performansını doğrudan etkiler. Advanced Linux Kernel Tuning & Performance, sistem yöneticileri ve geliştiriciler için kritik öneme sahip bir konudur. Bu rehberde, Linux kernel'inin performansını optimize etmek için çekirdek ayarları, önyükleyici ayarları ve sistem izleme araçları gibi teknik konuları ele alacağız.

Çekirdek Ayarları

Çekirdek ayarları, sistem performansını önemli ölçüde etkileyen bir faktördür. sysctl aracı, çekirdek ayarlarını değiştirmek için kullanılan bir komuttur. Örneğin, net.ipv4.tcp_tw_recycle ayarını değiştirerek TCP bağlantlarının geri dönüşünü hızlandırabilirsiniz. Ayrıca, vm.swappiness ayarını değiştirerek sistemdeki bellek kullanımını optimize edebilirsiniz.

Önyükleyici Ayarları

Önyükleyici ayarları, sistem başlangıcında çekirdek yüklenmesinde önemli bir rol oynar. GRUB önyükleyicisi, yaygın olarak kullanılan bir önyükleyicidir. GRUB ayarlarını değiştirerek, çekirdek yüklenme hızını artırabilirsiniz. Örneğin, GRUB_TIMEOUT ayarını değiştirerek önyükleyici zaman aşımını ayarlayabilirsiniz.

Sistem izleme araçları, sistem performansını izlemek ve sorunları tespit etmek için kullanılır. top, htop ve mpstat gibi araçlar, sistem kaynaklarının kullanımını izlemek için kullanılabilir. Ayrıca, sysdig gibi araçlar, sistem çağrılarını izlemek ve performans sorunlarını tespit etmek için kullanılabilir.

Sonuç

Advanced Linux Kernel Tuning & Performance, sistem yöneticileri ve geliştiriciler için kritik öneme sahip bir konudur. Çekirdek ayarları, önyükleyici ayarları ve sistem izleme araçları gibi teknik konuları anlamak, sistem performansını optimize etmek için gerekli adımları atmaya yardımcı olur. Bu rehber, Linux kernel'inin performansını optimize etmek için teknik bir bakış açısı sunmaktadır.

9 Haziran 2026 Salı

Advanced Linux Kernel Tuning & Performance: Yüksek Performanslı Sistemler için İleri Düzey Ayarlar

Linux çekirdeği, işletim sisteminin kalbidir ve sistem performansını doğrudan etkiler. İleri düzey Linux çekirdeği ayarları, yüksek performanslı sistemler oluşturmak için kritik öneme sahiptir. Bu makalede, çekirdek ayarlarını optimize etmek, performansı artırmak ve sistem stabilitasını sağlamak için gerekli adımları ele alacağız.

Çekirdek Ayarlarına Giriş

Linux çekirdeği, modüler bir yapıya sahiptir ve çeşitli ayarlarla özelleştirilebilir. /proc/sys dizini, çekirdek ayarlarına erişim sağlamaktadır. Bu dizin altında, çekirdek parametrelerini değiştirebilir ve sistem performansını optimize edebilirsiniz.

Önemli Çekirdek Ayarları

Bazı önemli çekirdek ayarları, sysctl komutu kullanılarak değiştirilebilir. Örneğin, net.ipv4.tcp_syncookies ayarı, SYN flood saldırılarına karşı korumayı sağlar. Benzer şekilde, vm.swappiness ayarı, sanal bellek kullanımını etkiler.

Çekirdek ayarlarını değiştirmeden önce, mevcut ayarları yedeklemek önemlidir. Bu, çekirdek ayarlarının yanlış değiştirilmesi durumunda sistem stabilitasını sağlamak için gereklidir.

Performansı Artırmak için İpuçları

Çekirdek ayarlarını optimize etmek, yüksek performanslı sistemler oluşturmak için önemlidir. Aşağıdaki ipuçları, çekirdek performansını artırmak için uygulanabilir:

  • Ön bellek kullanımını optimize edin: Ön bellek, sık erişim yapılan verilerin depolandığı bir alandır. Ön bellek boyutunu doğru şekilde ayarlamak, sistem performansını etkiler.
  • Sanal bellek kullanımını sınırlandırın: Sanal bellek, fiziksel belleğin yetersiz olduğu durumlarda kullanılır. Sanal bellek kullanımını sınırlandırmak, sistem performansını artırmaya yardımcı olur.
  • İşlemci kullanımını optimize edin: İşlemci kullanımını optimize etmek, sistem performansını doğrudan etkiler. İşlemci kullanımını dengelemek için çekirdek ayarlarını değiştirebilirsiniz.

Çekirdek ayarlarını değiştirmeden önce, sistem performansını izlemek önemlidir. Sistem performansını izlemek için sysdig veya systemd-journald gibi araçlar kullanılabilir.

2 Mayıs 2026 Cumartesi

Raspberry Pi 5: Endüstriyel Kullanım Alanları ve Teknik İnceleme

Raspberry Pi 5'in Endüstriyel Kullanım Alanları

Raspberry Pi 5, endüstriyel otomasyon, IoT uygulamaları ve gömülü sistemler için tasarlanmış bir tek kartlı bilgisayardır. Bu rehberde, Raspberry Pi 5'in teknik özellikleri, endüstriyel kullanım alanları ve olası uygulamaları hakkında bilgi vereceğiz.

Teknik Özellikler

Raspberry Pi 5, quad-core Cortex-A72 işlemci, 4GB veya 8GB RAM ve USB 3.0 bağlantı noktalarına sahiptir. Ayrıca, Wi-Fi 6 ve Bluetooth 5.0 gibi kablosuz bağlantı seçenekleri de mevcuttur.

Endüstriyel Kullanım Alanları

Raspberry Pi 5, endüstriyel otomasyon, IoT uygulamaları, gömülü sistemler, robotik ve görüntü işleme gibi birçok alanda kullanılabilecek bir cihaza sahiptir. Linux ve Windows 10 IoT gibi işletim sistemlerini destekler.

Olası Uygulamalar

Raspberry Pi 5, endüstriyel sensörler, motor kontrolü ve görüntü işleme gibi birçok alanda kullanılabilecek bir cihaza sahiptir. Ayrıca, bulut tabanlı uygulamalar ve big data gibi alanlarda da kullanılabilecek bir potansiyele sahiptir.

Raspberry Pi 5, geliştiriciler ve mühendisler için bir prototip geliştirme aracı olarak da kullanılabilir. Python, C++ ve Java gibi programlama dillerini destekler.

1 Mayıs 2026 Cuma

Advanced Linux Kernel Tuning & Performance: Yüksek Performanslı Sistemler için Gelişmiş Ayarlar

2026 yılında, Linux işletim sistemi masih en yaygın kullanılan ve tercih edilen sistemlerden biri olmaya devam ediyor. Özellikle sunucu ve yüksek performanslı sistemlerde Linux'un esnekliği ve özelleştirilebilirliği, sistem yöneticileri ve geliştiriciler için büyük avantajlar sağlıyor.

Linux Kernel Tuning Nedir?

Linux Kernel, işletim sisteminin çekirdeğini oluşturan ve donanım kaynaklarını yöneten temel bileşendir. Kernel tuning, bu çekirdeğin performansını ve verimliliğini artırmak amacıyla yapılan ayarlamaları ifade eder. Bu ayarlamalar, sistem yöneticilerinin donanım kaynaklarını daha efektif bir şekilde kullanmasını ve sistem performansını optimize etmesini sağlar.

Önemli Ayarları

Advanced Linux kernel tuning için beberapa önemli ayar yapılabilir. Bunlar arasında sysctl ayarları, kernel parametresi ve donanım ayarları bulunur. Sysctl ayarları, sistem yöneticilerinin kernel parametrelerini değiştirmesine olanak tanır. Kernel parametresi, sistem başlatıldığında kernel'e geçirilen ayarları ifade eder. Donanım ayarları ise, sistem donanımının performansını optimize etmek için yapılan ayarlamaları içerir.

Örneğin, net.core.somaxconn parametresi, aynı anda açık olan bağlantı sayısını belirler. Bu parametreyi artırarak, sistem yöneticileri bağlantı sayısını artırmaya ve performansı iyileştirmeye çalışabilir. Benzer şekilde, net.ipv4.tcp_max_syn_backlog parametresi, aynı anda açık olan bağlantı sayısını etkiler.

Uygulama ve Sonuçlar

Advanced Linux kernel tuning, sistem yöneticileri ve geliştiriciler için büyük avantajlar sağlar. Yüksek performanslı sistemlerde, kernel tuning sayesinde donanım kaynakları daha efektif bir şekilde kullanılabilir. Bu, sistem performansını optimize eder ve verimliliği artırır.

Örnek olarak, bir web sunucusu için kernel tuning yapıldığında, bağlantı sayısını artırmak ve performansı iyileştirmek mümkün olabilir. Bu, web sunucusunun daha fazla kullanıcıya hizmet vermesini sağlar ve sistem verimliliğini artırır.

Sonuç olarak, Advanced Linux kernel tuning, sistem yöneticileri ve geliştiriciler için önemli bir araçtır. Yüksek performanslı sistemlerde, kernel tuning sayesinde donanım kaynakları daha efektif bir şekilde kullanılabilir ve sistem performansını optimize edilebilir.

8 Nisan 2026 Çarşamba

Advanced Linux Kernel Tuning & Performance: Yüksek Performanslı Sistemler için Gelişmiş Ayarlar

Linux kernel, işletim sisteminin kalbidir ve sistem performansını büyük ölçüde etkiler. Gelişmiş Linux kernel tuning, yüksek performanslı sistemler oluşturmak için kritik öneme sahiptir. Bu rehberde, Linux kernel'i optimize etmek ve performansını artırmak için gerekli adımları ve teknikleri inceleyeceğiz.

Linux Kernel'i Anlamak

Linux kernel, donanım ve yazılım arasında bir arabirim görevi görür. Kernel, donanım kaynaklarını yönetir, süreçleri çalıştırır ve sistem çağrılarını işler. Kernel'in performansı, sistem genelindeki performans için kritik öneme sahiptir.

Kernel Ayarları

Linux kernel, çeşitli ayarlarla yapılandırılabilir. Bu ayarları değiştirerek, sistem performansını optimize edebilirsiniz. sysctl komutu, kernel ayarlarını değiştirmek için kullanılan bir araçtır. Örneğin, sysctl -w net.core.somaxconn=1024 komutu, en fazla gleichzeitig bağlantı sayısını 1024 olarak ayarlar.

Kernel modüllerini yüklemek ve kaldırmak da sistem performansını etkileyebilir. modprobe komutu, kernel modüllerini yüklemek ve kaldırmak için kullanılır. Örneğin, modprobe -r ipv6 komutu, ipv6 modülünü kaldırır.

Performans İzleme Araçları

Sistem performansını izlemek için çeşitli araçlar mevcuttur. top ve htop komutları, sistem kaynaklarını izlemek için kullanılan popüler araçlardır. sysdig ve systemtap gibi araçlar, sistem çağrılarını ve süreçleri izlemek için kullanılır.

Örnek Uygulama

Örneğin, bir web sunucusu için yüksek performanslı bir sistem oluşturmak istiyorsunuz. İlk olarak, kernel ayarlarını optimize edebilirsiniz. Örneğin, sysctl -w net.core.somaxconn=1024 komutu, en fazla gleichzeitig bağlantı sayısını 1024 olarak ayarlar. Ardından, kernel modüllerini yükleyerek veya kaldırarak sistem performansını optimize edebilirsiniz.

Sonuç olarak, Advanced Linux kernel tuning, yüksek performanslı sistemler oluşturmak için kritik öneme sahiptir. Bu rehberde, Linux kernel'i optimize etmek ve performansını artırmak için gerekli adımları ve teknikleri inceleyerek, sistem performansını optimize edebilirsiniz.

31 Mart 2026 Salı

Linux Çekirdek Ayarlarını Mükemmelleştirme: Performans ve Güvenliği Artırma

Linux çekirdek ayarlarını mükemmelleştirmek, sistem performansını ve güvenliğini artırma açısından kritik bir adımdır. Çekirdek ayarları, sistem kaynaklarının nasıl yönetileceği, önbellek ve sanal bellek gibi önemli bileşenlerin optimizasyonu gibi konularda önemli bir rol oynar.

Linux Çekirdek Ayarlarına Giriş

Linux çekirdeği, işletim sisteminin temel bileşenidir ve sistem kaynaklarının yönetimini sağlar. Çekirdek ayarlarını değiştirmek, sistem performansını artırma ve kaynak kullanımını optimize etme açısından önemlidir. sysctl komutu, çekirdek ayarlarını değiştirmek için kullanılan bir araçtır.

Önbellek ve Sanal Bellek Ayarları

Önbellek (cache) ayarları, sistem performansını önemli ölçüde etkiler. vm.swappiness parametresi, önbellek ve sanal bellek arasındaki dengeyi ayarlar. Bu parametrenin değeri, önbellek kullanımının ne kadar öncelikli olacağını belirler. vm.vfs_cache_pressure parametresi, önbellek baskı değerini ayarlar ve sistem kaynaklarının nasıl yönetileceğini belirler.

Ağ Ayarları

Ağ ayarları, sistem performansını ve güvenliğini etkiler. net.ipv4.tcp_syncookies parametresi, SYN flooding saldırılarına karşı koruma sağlar. net.ipv4.tcp_tw_recycle parametresi, TCP bağlantılarının geri dönüştürülmesini sağlar ve sistem kaynaklarının daha verimli kullanılmasını sağlar.

Çekirdek Ayarlarını Değiştirmek

Çekirdek ayarlarını değiştirmek, sysctl komutu kullanılarak yapılabilir. Değişiklikler, /etc/sysctl.conf dosyasına kaydedilerek kalıcı hale getirilebilir. sysctl -p /etc/sysctl.conf komutu, değişiklikleri uygulamaya yarar.

Özetle, Linux çekirdek ayarlarını mükemmelleştirmek, sistem performansını ve güvenliğini artırma açısından önemlidir. Çekirdek ayarlarını değiştirmek, sistem kaynaklarının daha verimli kullanılmasını sağlar ve sistem performansını artırır.

22 Şubat 2026 Pazar

Linux'ta Sudoers Mantığını Anlamak: Şifresiz Yetkilendirme

Bugün Linux sistemlerinde yetki yönetiminin kalbi olan sudoers dosyasını ve bir kullanıcının şifre girmeden nasıl işlem yapabileceğini pratik ederek öğrendim. İşte teknik blogum için hazırladığım notlar:

Sudoers Dosyası Nedir?

Linux'ta hangi kullanıcının, hangi makinede, hangi yetkilerle komut çalıştırabileceğini belirleyen dosyadır. Genellikle /etc/sudoers yolunda bulunur ancak ek yapılandırmalar güvenlik ve düzen amacıyla /etc/sudoers.d/ klasörü altındaki dosyalarda tutulur.

Kritik Komutun Anatomisi

Örnek olarak şu satırı inceleyelim:

ubuntu ubuntu=(ALL) NOPASSWD:ALL
  • ubuntu (Kullanıcı): Komutu tetikleyen kişi.
  • ubuntu (Host): Makinenin adı (hostname). Buraya ALL yazılırsa her makinede geçerli olur, spesifik bir isim yazılırsa sadece o makinede çalışır.
  • (ALL): Kullanıcının hangi hedef kullanıcı (root vb.) yetkisine bürünebileceğini gösterir.
  • NOPASSWD:ALL: En kritik kısım! İşlem sırasında şifre sormamasını ve tüm komutlara izin verilmesini sağlar.

Önemli Bir Teknik Detay

Sistem sudo komutunu aldığında önce kullanıcı adını, ardından makinenin hostname bilgisini kontrol eder. Eğer dosyadaki tanımla gerçek makine adı (hostname) eşleşmezse kural geçersiz sayılır ve yetki verilmez.


Siber güvenlik ve sistem yönetimi üzerine öğrenme sürecimi paylaşmaya devam edeceğim!

4 Şubat 2026 Çarşamba

Rancher Üzerinde Uygulama Yönetimi: Nginx Test ve Operasyon Günlüğü

K3s üzerine kurulu Rancher panelimizde bir uygulamanın nasıl ayağa kaldırıldığını, dış dünyaya nasıl açıldığını ve kaynak yönetimi için nasıl durdurulduğunu adım adım inceliyoruz.

1. Helm Reposu Ekleme (Bitnami)

Rancher'ın standart marketinde bulunmayan uygulamalara erişmek için popüler Bitnami kütüphanesini sistemimize ekledik. İsimlendirme yaparken küçük harf kuralına (RFC 1123) dikkat ettik.

  • İşlem: Apps > Repositories > Create
  • İsim: bitnami (Büyük harf hata verir!)
  • URL: https://charts.bitnami.com/bitnami

2. Uygulama Kurulumu (Nginx)

Sistemi test etmek için Bitnami üzerinden hafif bir Nginx web sunucusu seçtik.

  • İşlem: Apps > Charts > Nginx
  • Detay: Default ayarlarla kurulumu başlattık ve uygulamanın Deployed olmasını bekledik.

3. Servis ve Port Yapılandırması

Uygulamanın cluster içinde bir IP alması için Cluster IP servisi oluşturduk. Bitnami Nginx'in iç portu olan 8080'i kullandık.

  • Service Type: Cluster IP
  • Ports: Listening & Target Port = 8080
  • Selector: app.kubernetes.io/name = nginx (Servisin hangi pod'a gideceğini belirler)

4. Ingress ve Dış Dünyaya Erişim (DNS Çözümü)

Uygulamayı nginx.rancher.local ismiyle dışarı açtık. En büyük engel olan DNS sorununu hosts dosyasını düzenleyerek aştık.

⚠️ Kritik Çözüm: Bilgisayarımızın DNS kayıtlarında bulunmayan bu isimler için C:\Windows\System32\drivers\etc\hosts dosyasına şu satırı ekledik:
10.10.10.13 nginx.rancher.local

5. Uygulamayı Durdurma (Scaling to Zero)

Kullanılmayan uygulamaların RAM ve CPU tüketmesini engellemek için uygulamayı silmek yerine "uyutma" yöntemini kullandık.

  • İşlem: Workloads > Deployments > Edit Config
  • Scaling: Replicas sayısını 1'den 0'a indirdik.
  • Sonuç: Pod'lar kapandı, kaynak tüketimi durdu ama tüm ayarlar (Service, Ingress) korundu. Tekrar açmak için değeri 1 yapmak yeterli.

3 Şubat 2026 Salı

Ubuntu K3s Üzerine Rancher Kurulumu: A'dan Z'ye Tam Rehber

Bu yazıda, Ubuntu sunucular üzerinde çalışan K3s (Lightweight Kubernetes) cluster'ınıza Rancher panelini nasıl kuracağınızı, kurulum sırasında karşılaşabileceğiniz "timeout" ve yazım hatalarını nasıl çözeceğinizi adım adım anlatıyorum.

1. Sistem Yapısı ve Hazırlık

Kurulumu yaptığımız Ubuntu yapısı şu şekildedir:

  • OS: Ubuntu 24.04 LTS
  • Cluster: 1 Master (10.10.10.13), 2 Worker (10.10.10.14-15)
  • Donanım: Intel i7 İşlemci, 16GB RAM

2. Cert-Manager Kurulumu (Kritik Adım)

Rancher, SSL sertifikalarını yönetmek için cert-manager'a ihtiyaç duyar. Bu adım eksik olursa Rancher podları asla "Ready" konumuna geçmez.

# Helm repolarını ekleyin
sudo helm repo add jetstack https://charts.jetstack.io
sudo helm repo update

# Cert-manager kurulumu
sudo helm install cert-manager jetstack/cert-manager \
  --namespace cert-manager \
  --create-namespace \
  --set installCRDs=true \
  --kubeconfig /etc/rancher/k3s/k3s.yaml

3. Rancher Kurulumu ve Karşılaşılan Hatalar

Burada en sık yapılan hata, kurulumun hızlı biteceğini düşünmektir. Rancher, arka planda büyük "git" depolarını klonladığı için sabırlı olmalısınız.

💡 Çözülen Sorun 1: "Udo" Komutu Hatası
Terminalde sudo yazarken yanlışlıkla udo yazmak, sistemin alakasız paketler yüklemesine neden olabilir. Bu durumda CTRL + C ile işlemi durdurup sudo apt remove udo ile temizlik yapmalısınız.
# Rancher Stable reposunu ekleyin
sudo helm repo add rancher-stable https://releases.rancher.com/server-charts/stable
sudo helm repo update

# Dikey Kurulum Komutu (Performans Odaklı)
sudo helm upgrade --install rancher rancher-stable/rancher \
  --namespace cattle-system \
  --set hostname=rancher.local \
  --set bootstrapPassword=admin \
  --set replicas=1 \
  --create-namespace \
  --kubeconfig /etc/rancher/k3s/k3s.yaml \
  --wait --timeout 15m

4. Sorun Giderme: "Context Deadline Exceeded"

Eğer kurulum 15 dakikayı aşarsa Helm hata verebilir. Bu durumda podların durumunu kontrol etmek gerekir:

# Pod durumuna bakın
sudo kubectl get pods -n cattle-system --kubeconfig /etc/rancher/k3s/k3s.yaml

Eğer podlar 0/1 Running ise ve loglarda "Restoring git repositories" görüyorsanız, podları şu komutla tazeleyerek döngüden çıkarabilirsiniz:

sudo kubectl delete pod -l app=rancher -n cattle-system --kubeconfig /etc/rancher/k3s/k3s.yaml

5. Panele Erişim

Podlar 1/1 READY olduğunda, bilgisayarınızın hosts dosyasına şu satırı ekleyin:

10.10.10.13 rancher.local

Tarayıcıdan https://rancher.local adresine giderek belirlediğiniz şifre ile giriş yapabilirsiniz.

Sonuç: Artık tüm Kubernetes cluster'ınızı görsel bir panel üzerinden yönetmeye hazırsınız!

10 Ocak 2026 Cumartesi

Docker’da Rootless Mod ile Güvenli Konteyner Çalıştırma: Adım Adım Kurulum ve İpuçları

Rootless Docker Nedir ve Neden Önemlidir?

Konteyner teknolojileri üretim ortamlarında standart hâline gelirken, güvenlik tarafında hâlâ sık yapılan bir hata var: Docker’ı kök kullanıcı (root) yetkileriyle çalıştırmak. Varsayılan Docker kurulumunda dockerd servisi root ayrıcalıklarıyla çalışır ve Docker grubuna eklediğiniz kullanıcılar fiilen root’a yakın yetkiler kazanır. Bu, yanlış yapılandırılmış bir konteyner veya zayıf bir imaj üzerinden sistemin tamamına sıçrama riskini artırır.

İşte burada Rootless Docker devreye girer. Rootless mod, Docker daemon’ını ve konteynerleri root olmadan çalıştırır. Böylece olası bir güvenlik açığında saldırganın erişimi kullanıcı alanıyla sınırlı kalır. Özellikle çok kullanıcılı sunucularda, CI/CD ajanlarında veya geliştiricilerin kendi makinelerinde güvenliği artırmak için oldukça iyi bir yaklaşımdır.

Kimler Rootless Docker Kullanmalı?

Rootless mod her senaryoya birebir uymaz; ancak pek çok kullanımda ciddi avantaj sağlar. Paylaşımlı geliştirme sunucuları, kurumsal dizüstüler, “konteyner çalıştırıyorum ama root yetkisi istemiyorum” yaklaşımı olan ekipler ve saldırı yüzeyini küçültmek isteyenler için idealdir. Öte yandan bazı ağ senaryolarında (örneğin düşük portlara doğrudan bind etmek) ekstra ayar gerekir. Bu yazıda temel kurulumun yanında pratik kısıtları ve çözüm yollarını da ele alacağım.

Ön Koşullar (Linux)

Rootless Docker en sorunsuz şekilde modern Linux dağıtımlarında çalışır. Bu rehberde Ubuntu/Debian çizgisini baz alıyorum; ancak Fedora/Arch tarafında da mantık aynı. Gerekli olanlar: güncel bir Docker kurulumu, kullanıcı bazlı servisleri yönetmek için systemd (çoğu dağıtımda var) ve kullanıcı namespace’lerinin düzgün ayarlanması.

Öncelikle Docker’ın kurulu olduğunu doğrulayın. Kurulu değilse dağıtımınızın resmi yönergelerini izleyin. Rootless mod için ayrıca Docker’ın sunduğu kurulum betiğini kullanacağız.

Adım Adım Rootless Docker Kurulumu

1) Kullanıcı namespace eşlemelerini kontrol edin
Rootless çalışabilmek için sistemde subuid ve subgid atamaları gerekir. Çoğu sistemde otomatik gelir; ancak kontrol etmekte fayda var. Aşağıdaki dosyalarda kullanıcı adınıza ait satır olmalı:

/etc/subuid ve /etc/subgid içinde kullanıcı adınızın karşısında bir aralık görmelisiniz (ör. kullanici:100000:65536). Yoksa yönetici yetkisiyle bu aralığı tanımlamak gerekir.

2) Rootless kurulum betiğini çalıştırın
Docker, rootless kurulumu kolaylaştıran bir betik sunar. Terminalde kendi kullanıcınızla şu komutu çalıştırın:

dockerd-rootless-setuptool.sh install

Kurulum sonunda size iki kritik bilgi verir: Docker soketinin yolu ve ortam değişkenleri. Genellikle DOCKER_HOST için kullanıcı dizini altında bir socket yolu tanımlanır.

3) Ortam değişkenlerini kalıcı hâle getirin
Terminal her açıldığında rootless daemon’a bağlanmak için genelde şu satır gerekir:

export DOCKER_HOST=unix:///run/user/1000/docker.sock

Kendi kullanıcı ID’nize göre yol değişebilir. Bunu ~/.bashrc veya ~/.zshrc dosyanıza ekleyin. Ardından yeni bir terminal açıp docker ps ile test edin.

4) Servisi kullanıcı olarak başlatın
Systemd kullanan sistemlerde rootless Docker genellikle kullanıcı servisi olarak yönetilir. Kurulum betiği çoğu zaman bunu ayarlar. Elle kontrol etmek isterseniz:

systemctl --user status docker

Servis aktif değilse başlatıp etkinleştirebilirsiniz:

systemctl --user enable --now docker

Sık Karşılaşılan Kısıtlar ve Pratik Çözümler

1) 1024 altı portlara bind etme
Rootless modda düşük portlara (80, 443 gibi) doğrudan bind etmek kısıtlıdır. Çözüm olarak 8080/8443 gibi yüksek portları kullanabilir, ters vekil (reverse proxy) ile yönlendirebilir veya sistemde ilgili capability ayarlarıyla çalışabilirsiniz. Üretimde en temiz yaklaşım genellikle Nginx/Traefik gibi bir ters vekilin 80/443’ü dinlemesi ve konteynerlere yüksek porttan trafik iletmesidir.

2) Ağ performansı ve uyumluluk
Rootless, ağ tarafında çoğunlukla kullanıcı alanı çözümlerine dayanır. Bu, bazı ortamlarda küçük bir performans maliyeti veya farklı davranışlar doğurabilir. Ancak geliştirici makinelerinde ve birçok CI işinde bu fark pratikte sorun yaratmaz.

3) Dosya izinleri ve bind mount
Konteyner içine bağladığınız (bind mount) dizinlerde izin problemleri görebilirsiniz. Rootless mod, host tarafındaki kullanıcı izinleriyle daha “doğal” çalışır; yine de UID/GID uyumsuzluğu olan imajlarda ek ayar gerekebilir. Bu noktada user direktifini kullanmak, uygulamayı konteyner içinde root yerine belirli bir kullanıcıyla çalıştırmak ve volume izinlerini netleştirmek işleri kolaylaştırır.

Güvenlik İçin Ek İpuçları

Rootless kullanıyor olsanız bile güvenlik katmanlarını çoğaltmak iyi bir alışkanlıktır. İmajları mümkünse resmi kaynaklardan çekin, gereksiz paketleri içermeyen minimal imajları tercih edin, gizli anahtarları imaj içine gömmeyin. Konteyner çalıştırırken read-only dosya sistemi, sınırlı yetkiler ve kaynak kotaları gibi seçenekler de saldırı yüzeyini küçültür.

Son olarak, rootless Docker’ı “tek başına her şeyi çözen” bir sihir gibi görmek yerine, doğru senaryoda güçlü bir güvenlik hamlesi olarak değerlendirin. Özellikle paylaşımlı sistemlerde, geliştirici ortamlarında ve otomasyon sunucularında rootless yaklaşımı çoğu zaman daha rahat uyumanızı sağlar.

Sonuç

Rootless Docker, konteyner ekosisteminde güvenliği pratik biçimde artıran modern bir yöntem. Kurulumu birkaç adımda tamamlanıyor; en önemli nokta kullanıcı namespace eşlemeleri ve doğru DOCKER_HOST ayarı. Eğer bugüne kadar Docker’ı “Docker grubuna al, tamam” mantığıyla kullanıyorsanız, rootless moda geçmek özellikle güvenlik hassasiyeti olan ortamlarda ciddi bir iyileştirme sunar.

9 Ocak 2026 Cuma

Proxmox Ubuntu Master Template Hazırlık Rehberi V2

Proxmox Ubuntu Master Template Hazırlık Rehberi V2

Bu rehberde, Proxmox üzerinde saniyeler içinde yeni makineler oluşturabilmek için optimize edilmiş, her şeyiyle hazır bir Ubuntu Altın Şablon (Master Template) oluşturmayı öğreneceğiz.

1. Sistem Güncelleme ve Temel Araçlar

Sistemi güncel tutmak ve yönetim araçlarını yüklemek ilk adımımız:

# Sistem güncelleme
sudo apt update && sudo apt upgrade -y

# Temel araçları (İsviçre Çakısı) yükle
sudo apt install -y curl wget vim net-tools htop tree unzip git software-properties-common bash-completion

2. Bağlantı ve Güvenlik Ayarları

SSH erişimini garantilemek ve Firewall engellerini kaldırmak için:

# SSH kurulumu ve aktif edilmesi
sudo apt install openssh-server -y
sudo systemctl enable --now ssh

# UFW Güvenlik Duvarını kapatma ve maskeleme
sudo ufw disable
sudo systemctl mask ufw

3. Proxmox Entegrasyonu ve Saat Ayarı

Proxmox paneli üzerinden makineyi yönetebilmek için QEMU Guest Agent kritiktir:

QEMU

# QEMU Guest Agent kurulumu
sudo apt install -y qemu-guest-agent
sudo systemctl enable --now qemu-guest-agent

# Zaman dilimi ayarı (Türkiye)
sudo timedatectl set-timezone Europe/Istanbul

4. Kritik Adım: Machine-ID Sıfırlama

Klonlanan makinelerin ağda aynı IP'yi alıp çakışmaması için benzersiz kimliği temizliyoruz:

sudo truncate -s 0 /etc/machine-id
sudo rm /var/lib/dbus/machine-id
sudo ln -s /etc/machine-id /var/lib/dbus/machine-id

5. Final: Mühürleme ve Template Dönüşümü

Makineyi kapatıp şablona dönüştürmeden önceki son temizlik:

# Temizlik ve Kapatma
sudo apt autoremove -y && sudo apt clean
history -c && history -w
sudo poweroff
Son Adım: Proxmox arayüzünde makineye sağ tıklayın ve "Convert to Template" seçeneğini seçin. Artık bu şablondan "Linked Clone" oluşturarak saniyeler içinde yeni Ubuntu sunucuları ayağa kaldırabilirsiniz!
Son olarak yeni bir makine ayağa kaldırıldığında yapılması gereken adımlar sadece bunlardır: 
Hostname'in değiştirilmesi : sudo hostnamectl set-hostname newname
Yeni IP adresinin verilmesi: sudo vi /etc/netplan/50-cloud-init.yaml
sudo netplan apply
Kontrol amaçlı: cat /etc/machine-id veya sadece hostnamectl çalıştırılır.

6 Ocak 2026 Salı

Proxmox ve Ubuntu Laboratuvar Kurulum Rehberi (Uçtan Uca)

A'dan Z'ye Proxmox & Ubuntu Sanallaştırma Laboratuvarı

Bu rehber, fiziksel sunucunun Wi-Fi ile internete bağlanmasından, izole ağ yapılandırmasına ve sanal makinelerin benzersizleştirilmesine kadar tüm teknik adımları içerir.

1. Proxmox Host: Wi-Fi ve İnternet Erişimi (CLI)

Sunucuyu kablosuz ağ üzerinden internete çıkarmak için Shell üzerinden uygulanan adımlar:

# Wi-Fi araçlarını yükle ve şifreyi yapılandır
apt install wpasupplicant
wpa_passphrase "SSID_ADINIZ" "SIFRENIZ" >> /etc/wpa_supplicant/wpa_supplicant.conf

# Arayüzü ayağa kaldır ve IP al
ip link set wlp4s0 up
dhclient wlp4s0

2. Proxmox Sanal Ağ ve NAT Yapılandırması

Sanal makinelerin internete çıkabilmesi için 10.10.10.0/24 bloğunun `vmbr1` üzerinden tanımlanması:

# nano /etc/network/interfaces dosyasına ekle:
auto vmbr1
iface vmbr1 inet static
    address 10.10.10.1/24
    bridge-ports none
    bridge-stp off
    bridge-fd 0

İnternet Paylaşımı (NAT) Komutları:

  • IP Forwarding: echo 1 > /proc/sys/net/ipv4/ip_forward
  • NAT Kuralı: iptables -t nat -A POSTROUTING -s '10.10.10.0/24' -o wlp4s0 -j MASQUERADE

3. 1 TB Disk Yönetimi (LVM-Thin CLI)

wipefs -a /dev/sdb
pvcreate /dev/sdb
vgcreate depo1tb /dev/sdb
lvcreate -L 920G -T depo1tb/thinpool_depo
pvesm add lvmthin DEPO_ALANI --vgname depo1tb --thinpool thinpool_depo --content rootdir,images

4. Ubuntu Master Template Hazırlığı

Şablon oluşturmadan önce ana makinede yapılan erişim ayarları:

  • SSH Enable: sudo apt install openssh-server -y && sudo systemctl enable --now ssh
  • Ubuntu Firewall Disable: sudo ufw disable
  • Proxmox Firewall Off: VM Donanım -> Network -> Firewall: Off

5. Klon Sonrası Benzersizleştirme (Kritik)

Klonlanan makinede çakışmaları önlemek için terminalden uygulanan adımlar:

# 1. Hostname Değiştir
sudo hostnamectl set-hostname yeni-sunucu

# 2. IP Güncelle (Netplan)
sudo nano /etc/netplan/00-installer-config.yaml (IP: 10.10.10.11)
sudo netplan apply

# 3. Machine-ID Sıfırla ve Yeniden Başlat
echo "" | sudo tee /etc/machine-id && sudo systemd-machine-id-setup && sudo reboot

6. Dış Erişim (Windows Route)

Kendi bilgisayarınızdan 10.10.10.x ağına ulaşmak için Windows CMD (Yönetici) üzerinden:

route add 10.10.10.0 mask 255.255.255.0 192.168.1.50

Laboratuvar Altyapısı Tamamlandı. Zabbix Kurulumuna Hazır!

28 Aralık 2025 Pazar

Windows 11’de WSL2 ile Docker Desktop’sız Geliştirici Ortamı Kurulumu (Adım Adım)

Docker Desktop olmadan neden Docker?

Windows 11’de Docker kullanmanın en popüler yolu Docker Desktop. Ancak özellikle kurumsal cihazlarda lisans politikaları, performans beklentisi veya daha “hafif” bir kurulum isteği nedeniyle alternatif arayan çok kişi var. Bu yazıda, WSL2 (Windows Subsystem for Linux) üzerinde Docker Engine kurarak, Docker Desktop’a ihtiyaç duymadan konteyner tabanlı bir geliştirme ortamını nasıl oluşturabileceğinizi adım adım anlatacağım. Hedefimiz: Windows’ta terminalden yönetilen, güncel ve performanslı bir Docker deneyimi.

Ön koşullar: Neler gerekli?

Bu rehber için Windows 11 kullanmanız önerilir (Windows 10’da da çalışır). Yönetici yetkisine sahip olmanız, PowerShell’i açabilmeniz ve Microsoft Store’dan bir Linux dağıtımı kurabilmeniz yeterli. Ayrıca BIOS/UEFI’de sanallaştırmanın açık olması gerekir. Kurulum sırasında komutları kopyalayıp yapıştırmanız işleri hızlandırır.

1) WSL2’yi etkinleştirme ve Ubuntu kurma

Önce WSL2’yi açalım. PowerShell’i Yönetici olarak çalıştırın ve şu komutu girin:

wsl --install

Bu komut genellikle WSL bileşenlerini etkinleştirir ve varsayılan dağıtım olarak Ubuntu’yu kurar. Eğer sisteminizde WSL zaten kuruluysa, sürümü kontrol etmek için:

wsl -l -v

Listede dağıtımınızın sürümü 2 görünmelidir. Değilse şu komutla yükseltebilirsiniz:

wsl --set-version Ubuntu 2

2) Ubuntu içinde temel güncellemeler

Başlat menüsünden Ubuntu’yu açın ve paket listesini güncelleyin:

sudo apt update && sudo apt upgrade -y

Bu adım, Docker kurulumu sırasında bağımlılık sorunlarını azaltır. Ardından gerekli yardımcı paketleri yükleyelim:

sudo apt install -y ca-certificates curl gnupg lsb-release

3) Docker Engine kurulumu (Ubuntu/WSL2)

WSL2 üzerinde en sağlıklı yöntem, Docker’ı Docker’ın resmi deposundan kurmaktır. Önce anahtar ve depo ekleyelim:

sudo install -m 0755 -d /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

sudo chmod a+r /etc/apt/keyrings/docker.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Şimdi Docker paketlerini kuralım:

sudo apt update

sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

4) Docker’ı root’suz (daha rahat) kullanma

Varsayılan olarak Docker komutları root yetkisi ister. Sürekli sudo yazmamak için kullanıcıyı docker grubuna ekleyin:

sudo usermod -aG docker $USER

Ardından Ubuntu oturumunu kapatıp tekrar açın (WSL penceresini kapatmak yeterli). Not: Bazı sistemlerde değişikliğin etkinleşmesi için Windows tarafında şu komutla WSL’yi yeniden başlatmak gerekebilir:

wsl --shutdown

5) Docker servisinin WSL2’de başlatılması

WSL dağıtımlarında systemd her zaman varsayılan olmayabilir. Windows 11’de güncel WSL sürümleri systemd desteği sunuyor. Eğer kullanmak isterseniz Ubuntu içinde /etc/wsl.conf dosyasını oluşturup şu satırları ekleyin:

[boot]
systemd=true

Sonra Windows’ta wsl --shutdown çalıştırıp Ubuntu’yu yeniden açın. Ardından Docker servis durumunu kontrol edin:

systemctl status docker

Aktif değilse başlatın:

sudo systemctl enable --now docker

6) Kurulum testi: İlk konteynerinizi çalıştırın

Şimdi her şeyin çalıştığını doğrulamak için klasik testi yapalım:

docker run --rm hello-world

Çıktıda Docker’ın başarıyla çalıştığını belirten bir mesaj görmelisiniz. Ardından Compose eklentisini test etmek için sürüme bakabilirsiniz:

docker compose version

7) Windows ile dosya performansı: Küçük ama kritik bir ipucu

WSL2 ile Docker kullanırken en çok performans kaybı, proje dosyalarını /mnt/c altında (Windows dosya sistemi) tutunca yaşanır. Özellikle Node.js, PHP veya Python gibi çok sayıda küçük dosya okuyan projelerde fark dramatiktir. En iyi pratik: projeyi Ubuntu dosya sisteminde (ör. /home/kullanici/proje) tutmak ve editörü (VS Code gibi) WSL eklentisiyle oradan açmak. Böylece I/O gecikmeleri düşer, konteyner build süreleri kısalır.

Sonuç: Hafif, hızlı ve kontrol sizde

Bu yöntemle Docker Desktop kullanmadan, WSL2 üzerinde güncel bir Docker Engine kurmuş oldunuz. Avantajları net: daha az arka plan servisi, daha yalın bir kurulum ve Linux’a daha yakın bir çalışma ortamı. Dezavantaj olarak ise bazı GUI odaklı Desktop özellikleri (tek tıkla Kubernetes, bazı entegrasyonlar) sizden ek kurulum isteyebilir. Yine de terminal seven geliştiriciler için bu kurulum, Windows 11 üzerinde konteyner tabanlı geliştirme yapmanın en pratik yollarından biri.

24 Eylül 2025 Çarşamba

Ansible 101 - Uygulamalı Başlangıç Rehberi

    Bir master, üç tane de worker olmak üzere 4 ubuntu'dan oluşan basit bir lab kurdum. Master ubuntu makineme ansible yükledim ve ssh public keyleri worker makinelerime kopyaladım. Böylelikle ansible workerlar ile şifresiz doğrudan iletişim kurabilecek. 


SSH key oluşturduğum komut:
ssh-keygen -t rsa -b 4096

Anahtarı worker'lara kopyaladım:
cat ~/.ssh/id_rsa.pub | ssh [email protected] "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Multipass tarafı için aşağıdaki adımları uygulamadım: worker'de aşağıdaki kodlar çalıştırılır ve ubuntu user ile master makinede oluşturulan key içeriği manuel eklenir:

ssh key cat

worker ssh key ekleme


Lab için Ansible dizini oluşturdum:
mkdir -p ~/ansible-lab && cd ~/ansible-lab

İlk denemeler için bir envanter dosyası oluşturdum:
vi hosts

Bu dosyanın içeriğini worker'larıma göre doldurdum:
[web]
192.168.1.110

[db]
192.168.1.111

[prod]
192.168.1.112

[all:vars]
ansible_user=ubuntu
ansible_ssh_private_key_file=~/.ssh/id_rsa

İlk ansible komutumu denedim:
ansible all -i hosts -m ping

Bu komut, hosts envanter dosyasında tanımlı tüm sunuculara SSH ile bağlanır ve Ansible’ın ping modülünü çalıştırarak bağlantıyı test eder. Başarılıysa her sunucudan "pong" cevabı döner.

Ansible Ping


Bu komutu bir .sh dosyasına yazıyorum ve sh dosyasını çalıştırarak daha hızlı bir şekilde yanıt almak istiyorum:
vi pingle.sh

Dosya içeriği:
#!/bin/bash
ansible all -i hosts -m ping

Dosyaya çalıştırma izni: 
chmod +x pingle.sh

Test:
./pingle.sh

Worker'larda sudo yetkisi gerektiren komutları çalıştırmak istediğimde ya şifre sormasını sağlamamız gerekiyor yada şifresiz sudo yetkisini her bir workerda tanımlamak gerekiyor. (test ortamı için çok uygun) Örnek üzerinden bakalım. Tüm worker'larıma htop paketini yüklemek istiyorum, şifre sormasını istiyorsam bu komuttan yararlanabilirim:
ansible all -i hosts -m apt -a "name=htop state=present" --become --ask-become-pass

Ancak şifre sormadan doğrudan komutu koşmak için bir kerelik sudo şifresiz yetkisini workerlara tek tek tanımlamam gerekiyor.
echo "ubuntu ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ubuntu
sudo chmod 440 /etc/sudoers.d/ubuntu

Böylece şimdi koşacağım komutu şifre yazmadan veya girmeden doğrudan worker'larıma gönderebilirim:
ansible all -i hosts -m apt -a "name=htop state=present" --become

Ve aynı anda tüm makinelerime htop kurulumunu yapabildim:

htop

Bunu paket kurulumu adı altında bir .sh dosyasına da dönüştürebiliriz:


package_install.sh dosyası oluşturdum ve içeriğini bu şekilde doldurdum:
#!/bin/bash

# Kurulacak paketin adı (örnek: htop, curl, nginx, vs)
PAKET_ADI="htop"

# Ansible komutu
ansible all -i hosts -m apt -a "name=$PAKET_ADI state=present" --become

Böylece kurmak istediğim farklı paketler olduğunda içerisine girip paket adını güncellemem yeterli olabilir.

Dosyaya çalıştırma izni vermeyi de unutmuyoruz:
chmod +x paket_kur.sh

Şimdi ise ilk Playbook'umuzu deneyelim, birden fazla paket kurulumunu bir yml dosyası ile host'larımıza gönderelim.


vi package_install.yml dosyasını oluşturdum ve aşağıdaki bilgileri ekledim:

---
- name: Paket kurulumları
  hosts: all
  become: yes

  tasks:
    - name: htop kur
      apt:
        name: htop
        state: present

    - name: curl kur
      apt:
        name: curl
        state: present

    - name: git kur
      apt:
        name: git
        state: present

Ardından playbook dosyamı koşmak için bu komutu kullanıyorum:
ansible-playbook -i hosts package_install.yml

Playbook - Package Installation

    Ve böylece tek bir yml dosyasını çalıştırarak ansible sayesinde tüm hosts makinelerime aynı anda birden fazla uygulama kurulumunu gerçekleştirmiş oldum. Makinelere tek tek bağlanmadım, paketleri tek tek kurmayı denemedim ve zaman kaybı yaşamadım.


Tüm makineleri kapatmak için bir .sh dosyası
#!/bin/bash

# Ansible inventory dosyasını belirt
INVENTORY_FILE="hosts"

# Tüm makineleri anında kapat
ansible all -i "$INVENTORY_FILE" -a "/sbin/shutdown now" --become

chmod +x shutdown-all.sh

Tüm makinelerde bir klasör oluşturmak için: create_folder.sh
#!/bin/bash

# Ansible inventory dosyası
INVENTORY_FILE="hosts"

# Uzak makinelerde klasör oluştur
ansible all -i "$INVENTORY_FILE" -m file -a "path=/tmp/yeni_klasor state=directory mode=0755"
chmod +x create_folder.sh

Bir istisna, tüm hostlara değil, özel bir gruba işlem yapmak için ek bir parametre kullanılır:
ansible-playbook -i hosts package_install.yml --limit web

Command modülü ile uptime bilgisini öğrenme:
ansible all -i hosts -m command -a "uptime"

Copy komutu ile dosyaları hostlara kopyalamak:
ansible all -i hosts -m copy -a "src=dosya.txt dest=/tmp/dosya.txt"

uptime

Şimdi ise bir playbook ile hem paket kurulumu hem de bir dosya oluşturarak içerisine veri yazmayı deneyelim:


Playbook 2

- name: Paket kur ve dosya kopyala
  hosts: all
  become: yes
  tasks:
    - name: htop paketini kur
      apt:
        name: htop
        state: present

    - name: Bilgi dosyasını kopyala
      copy:
        content: "Bu dosya Ansible tarafından oluşturulmuştur\n"
        dest: /tmp/ansible_bilgi.txt
        owner: ubuntu
        group: ubuntu
        mode: '0644'

Sırada bir servis kurmak ve o servisin çalışıp çalışmadığını check etmek var:


apache_setup.yml dosyasını oluşturuyorum ve içeriğini aşağıdaki gibi yapıyorum:

- name: Apache kurulumu ve servisi yönetimi
  hosts: all
  become: yes
  tasks:
    - name: Apache2 paketini kur
      apt:
        name: apache2
        state: present
        update_cache: yes

    - name: Apache servisini başlat
      service:
        name: apache2
        state: started
        enabled: yes

Bu servisi sadece web hostlarıma kurmak istedim, o yüzden bu şekilde bir komut koşuyorum:
ansible-playbook -i hosts apache_setup.yml --limit web

Ve servislerin durumunu check etmek istiyorum:

apache2 ansible service check


When kullanarak bir yml dosyasının içerisine koşul ekleyebiliriz. Ancak bunu zaten --limit komutu ile de yapabilyoruz:


- name: Koşullu görev örneği
  hosts: all
  become: yes
  tasks:
    - name: Sadece worker1'de bu dosyayı oluştur
      copy:
        content: "Bu dosya sadece worker1 içindir\n"
        dest: /tmp/worker1_ozel.txt
      when: inventory_hostname == "worker1"

Gruplamayı yml dosyasının içerisinde de yapabiriz, böylelikle when koşulu veya --limit kullanmadan birden fazla görevi aslında yml dosyasında tek tek host gruplarına atamak mümkün:


Yeni bir yml dosyası oluşturdum: group_specific_tasks.yml 
Bu yml dosyası sadece web ve db makinelerime işlem yapacak ve bu işlem örnekteki gibi bir file oluşturma işlemi olacağı gibi, app kurulumu, güncellemesi vs. gibi herhangi bir işlem olabilir:

- name: Web grubuna özel görev
  hosts: web
  become: yes
  tasks:
    - name: Web makinesine özel bilgi dosyası
      copy:
        content: "Bu worker bir WEB sunucusudur.\n"
        dest: /tmp/web_bilgi.txt

- name: DB grubuna özel görev
  hosts: db
  become: yes
  tasks:
    - name: DB makinesine özel bilgi dosyası
      copy:
        content: "Bu worker bir VERİTABANI sunucusudur.\n"
        dest: /tmp/db_bilgi.txt

Ansible Roles Yapısının Kullanımı

    Ansible'da roles, yapılandırmaları görev, değişken, şablon, handler gibi mantıksal klasörlere ayırır.
Gerçek projelerde playbook'lar roles kullanılarak kurulur.

Örneğin webserver için bir role oluşturmak istiyorum, bu durumda aşağıdaki komutu çalıştırıyorum:
ansible-galaxy init roles/webserver

Ansible bu role için kendi özel yapısını oluşturur:


Ansible Roles

Tasks/main.yml içerisine aşağıdaki konfiği girdim:

- name: Apache kur
  apt:
    name: apache2
    state: present
    update_cache: yes

- name: Apache2 servis başlasın ve aktif kalsın
  service:
    name: apache2
    state: started
    enabled: yes

- name: Özel hoşgeldiniz sayfası
  copy:
    content: "Merhaba Hakan! Apache başarıyla çalışıyor.\n"
    dest: /var/www/html/index.html
    owner: root
    group: root
    mode: '0644'

Projeyi çalıştırabilmek için ana dizinimde (benim için ansible lab çalışmalarını yaptığım ve diğer hosts dosyamın bulunduğu yer) site.yml isimli bir dosya oluşturuyorum ve aşağıdaki gibi konfig giriyorum:

- name: Web makinelerine apache kur, servisi başlat, aktif kalsın ve özel hoşgeldin sayfası oluştur.
  hosts: web
  become: yes
  roles:
    - webserver

 Böylelikle site.yml dosyasını playbook ile koştuğumda webserver rolünde daha önce tanımladığım tüm işlemler gerçekleştiriliyor. Daha işlevsel bir yapıya kavuşmuş oluyorum. Her şey tek bir yml dosyasında olmaktansa görev ve sorumluluklara göre yani rollere göre yml dosyalarını aslında ayırmış oluyorum.

ansible-playbook -i hosts site.yml

sudo systemctl status apache2
sudo systemctl restart apache2
ss -tuln | grep :80
sudo ufw allow 80
sudo ufw allow 443
sudo ufw reload
sudo ufw status

    Ve ardından kendi ana bilgisayarımın tarayıcısını kullanarak http://192.168.1.110:80 bağlantısına gitmeyi çalıştığımda worker1 isimli makinemde çalışan apache2 üzerindeki sayfaya ulaşabildim. Ansible ile gönderilen ve sayfa girişine eklenen yazı da karşıma çıkmış oldu. Böylece çalışmayı başarıyla tamamladım.

Apache2 Main Page

Handlers Kullanımına Örnek

    Bu deneme için init komutunu tekrar koştum ve ikinci bir dizin oluşmasını sağladım, ikinci bir role gibi. ansible-galaxy init roles/webroles2-handlers ve ilgili rolü koşmak için yeni bir yml dosyası oluşturarak ilerledim.

Ansible Handlers


    Handlers, bir görev değişiklik algılandığında tetiklenen özel görevlerdir. Genellikle servisleri yeniden başlatmak, yeniden yüklemek gibi işlemler için kullanılır. Bizde Apache web sayfamızın içeriğinde bir değişiklik algılandığında örnek olması için bir tetikleyici kurgulayacağız ve sistem bu değişikliği algılayarak otomatik olarak apache servisini restart edecek. Bu sadece basit bir örnek, ihtiyaca göre buradaki handlers yeteneklerinden farklı şekillerde yararlanılabilir.


roles/webroles2-handlers/tasks/main.yml içerisine bir ekleme yapıyorum, daha önce eklediğimiz görevlere ek olarak:

---
- name: Apache web sunucusunun kurulu olduğundan emin olun
  ansible.builtin.apt:
    name: apache2
    state: present
    update_cache: yes
  become: yes
  notify: restart_apache_service

- name: Ana sayfa içeriğini değiştirin
  ansible.builtin.copy:
    content: "<html><body><h1>Ansible Handler Pratiği Başarılı!</h1></body></html>"
    dest: /var/www/html/index.html
  become: yes
  notify: restart_apache_service

Şimdi ise Handler dosyasını oluşturarak içerisine tetikleyicimizi ekliyoruz:

vi roles/webroles2-handlers/handlers/main.yml

---
- name: restart_apache_service
  ansible.builtin.service:
    name: apache2
    state: restarted
  become: yes

Şimdi ise Playbook'u oluşturalım: vi 11-handlers-web-webroles.yml

---
- name: Web server rolünü çalıştırma
  hosts: web
  roles:
    - webroles2-handlers

Şimdi ise tetikleyiciyi test edebiliriz:
ansible-playbook -i hosts 11-handlers-web-webroles.yml

Handler Ornek


    Bu çıktı bize şunu söylüyor: Ansible, web sayfasının içeriğinin değiştiğini algıladı. Bu değişiklik nedeniyle, playbook'taki diğer görevler tamamlandıktan sonra, tanımladığınız restart_apache_service handler'ını çalıştırdı. Handler başarılı bir şekilde çalışarak Apache'yi yeniden başlattı ve playbook'unuzu hatasız bir şekilde tamamladı.

Jinja2 Şablon Kullanımına Örnek


Öncelikle yeni bir role oluşturuyorum, bu 12. yml file'ım olmuş olacak.

#ansible-galaxy init info_creator

/roles/info_creator/templates/ dizini altında bilgi.txt.j2 isimli bir dosya oluşturdum ve içeriğini aşağıdaki gibi güncelledim:

Burada toplanan verilere aynı zamanda Ansible Facts ismi verilir.

Bu sunucuya ait bilgiler: Hostname: 
{{ ansible_hostname }} 
IP Adresi: {{ ansible_host }} 
İşletim Sistemi: {{ ansible_distribution }} {{ ansible_distribution_version }} 
Tarih: {{ ansible_date_time.iso8601 }}

/tasks/main.yml içerisine de ilgili ana görevimi ekliyorum:

---
- name: Dinamik bilgi dosyasını oluşturun
  ansible.builtin.template:
    src: bilgi.txt.j2
    dest: /home/ubuntu/bilgi.txt
    owner: ubuntu
    group: ubuntu
    mode: '0644'
  become: yes

ve artık playbook'u oluşturup koşabilirim:

#vi 12-create_info_jinja2_file.yml

ve içerisine:

---
- name: Dinamik bilgi dosyasını oluşturma
  hosts: web
  roles:
    - info_creator

Artık playbook'u koştuktan sonra ilgili makinenin /home/ubuntu/ dizininde yeralan bilgi.txt dosyasını kontrol edebilir ve dinamik bir şekilde bu belgenin güncellendiğini görebilirim:

jinja2


    Jinja2 şablonları, statik dosyaları olduğu gibi kopyalamak yerine, dinamik olarak oluşturmanızı sağlar. Bu şablonlar, her sunucuya özel bilgileri (IP adresi, hostname, port gibi) kullanarak yapılandırma dosyalarını otomatik olarak doldurabilir. Örneğin, bir web sunucusu için Apache sanal host yapılandırma dosyası oluştururken ServerName ve DocumentRoot gibi değerleri sunucunun hostname'ine göre dinamik olarak ayarlayabilirsiniz. Bu sayede, farklı sunucular için ayrı ayrı dosyalar oluşturmak yerine tek bir şablonu kullanabilir ve kod tekrarını önleyebilirsiniz. Aynı zamanda veritabanı yapılandırma dosyalarında bellek ayarları gibi değerleri, sunucunun özelliklerine göre belirlemek için de Jinja2 şablonlarından yararlanabilirsiniz.

    Diyelimki zabbix server'ınız var ve zabbix agentları onlarca makineye kurdunuz ve konfigüre ettiniz. Çeşitli nedenlerle zabbix server IP'ni değişti. Gidip tek tek makinelerinizdeki zabbix conf dosyasını düzenlemenize gerek yok, bunu bir yml file ile ansible kullanarak kolaylıkla halledebilirsiniz.

    Bir başka örnek, makinelerinize cronjob ekleyebilirsiniz. Hatta düzenli cronjoblarınız varsa, envanterinize yeni eklenen bir makine olduğunda crontab'ına ilgili jobların eklenmesini de otomatikleştirebilirsiniz. Cronjob yml dosyanızı bir scriptin içerisine yazarsınız ve ilgili scripti de ansible kurulu makinenizin crontab'ine istediğiniz zaman aralığına göre eklerseniz. Bundan böylelikle sadece envanter dosyanızı yani hosts file'ı güncellemeniz yeterli olacaktır. Crontab otomatik zamanı geldiğinde eklenecek.

    Veya farklı bir örnek, NTP sunucusu kurmak istediniz. Bunu elbette Crony ile yapabilirsiniz. Hem kurulumarı hem de ilgili konfigürasyonu ansible ile koşmanız mümkün. Birkaç dakikada tüm makinelerinizin baktığı NTP sunucusunu güncellenir. Ansible bu ve benzeri birden fazla esneklik ve kolaylık sağlıyor. Zaman zaman bazı örnekler paylaşmaya devam edeceğim, şimdilik bu yazıyı burada sonlandırıyorum.

8 Eylül 2025 Pazartesi

Dizüstünüzde Yerel Yapay Zeka: Ollama ile LLM Çalıştırma ve API Entegrasyonu (Güncel Rehber)

Giriş

Yerel olarak çalışan büyük dil modelleri (LLM), gizlilik, gecikme süresi ve maliyet açısından bulut tabanlı çözümlere güçlü bir alternatif sunuyor. Özellikle geliştiriciler, veri güvenliği kritik olan kurumlar ve offline çalışması gereken uygulamalar için yerel LLM’ler ciddi avantaj sağlıyor. Bu rehberde, açık kaynak odaklı Ollama ile Windows, macOS ve Linux üzerinde LLM çalıştırmayı, ilk model indirme ve etkileşim, API entegrasyonu ve performans ipuçlarını adım adım anlatıyorum.

Neden Yerel LLM?

Gizlilik ve kontrol: Veriniz makinenizden çıkmaz. Hassas dokümanlar, müşteri bilgileri veya fikri mülkiyet içerikleri buluta gönderilmeden işlenir.

Düşük gecikme: İnternet bağlantısı ve servis yoğunluğundan bağımsız, tutarlı yanıt süreleri elde edilir.

Maliyet: Deney, prototip ve düşük trafikli senaryolarda API maliyetleri olmadan ilerleme şansı sağlar.

Özelleştirme: Modeli ve çalışma parametrelerini dilediğiniz gibi ayarlayabilir, hatta kendi verilerinizle yerelde ince ayar (LoRA) yapabilirsiniz.

Önkoşullar ve Donanım Notları

- RAM: 8 GB minimum; 16 GB ve üzeri rahat bir deneyim sunar. Büyük bağlam pencereleri (context) için daha fazla RAM yararlıdır.

- GPU/VRAM: GPU hızlandırma şart değil, ancak 6–8 GB VRAM orta boy modellerde belirgin hız kazandırır. Apple Silicon (M1/M2/M3) cihazlarda Metal hızlandırma iyi sonuç verir.

- Disk: Modellerin boyutu kuantizasyona göre değişir. 4–10 GB arası tek bir model için tipik bir aralıktır; birden fazla model planlıyorsanız boş alanı buna göre düşünün.

Ollama Kurulumu

macOS: Homebrew kullanıyorsanız brew install ollama komutuyla kurulum yapabilirsiniz. Alternatif olarak resmi sitedeki yönergeleri izleyebilirsiniz.

Windows: Resmi yükleyiciyi indirip çalıştırın. Kurulumdan sonra Ollama hizmeti arka planda çalışmaya başlar.

Linux: Dağıtımınıza uygun olarak resmi kurulum komutunu kullanın. Tipik kurulum için: curl -fsSL https://ollama.com/install.sh | sh. Ardından servisi başlatın: ollama serve.

İlk Modeli Çalıştırma

Ollama, “komut ver, model çekilsin ve çalışsın” deneyimi sunar. Örneğin:

ollama run mistral

Komut, ilgili modeli indirir ve etkileşimli bir kabuk açar. Alternatif olarak bir başka popüler seçenek:

ollama run llama3

İlk mesajınızı yazıp Enter’a basmanız yeterli. Çıkmak için /bye kullanabilirsiniz.

Model Yönetimi ve Faydalı Komutlar

ollama list — İndirilen modelleri ve boyutlarını listeler.

ollama pull MODEL_ADI — Modeli önceden indirir (ör. ollama pull llama3).

ollama show MODEL_ADI — Parametreler ve etiketler hakkında bilgi verir.

ollama rm MODEL_ADI — İlgili modeli diskten kaldırır.

API ile Entegrasyon

Ollama yerelde bir HTTP API sunar. Varsayılan uç nokta: http://localhost:11434. Basit bir üretim (generate) çağrısı için:

curl http://localhost:11434/api/generate -d '{ "model": "mistral", "prompt": "Merhaba! Bugün hava nasıl?" }'

Streaming yanıt almak için istemcinizde chunk’ları işleyebilir veya HTTP/2 ile daha pürüzsüz bir akış sağlayabilirsiniz. Çoğu dilde basit bir fetch/requests ile entegrasyon dakikalar içinde tamamlanır. Parametreler (ör. temperature, top_p, num_ctx) aynı JSON içinde belirtilebilir.

Performans İpuçları

Kuantizasyon seçimi: Küçük disk izi ve hızlı ilk token için Q4 serisi (ör. q4_k_m) iyi bir başlangıçtır; kalite gerekirse Q5/Q6 düşünebilirsiniz. Ollama çoğu model için mantıklı bir varsayılan indirir.

Bağlam penceresi (num_ctx): Daha büyük bağlam, daha çok RAM/VRAM kullanır. İhtiyacınıza göre 4K–16K aralığında deneyin.

GPU kullanımı: Uygunsa GPU hızlandırmayı etkinleştirin. NVIDIA için sürücü/CUDA tarafı düzenli; Apple Silicon’da Metal otomatikleşmiştir. Çalışma anında performans farkını kolayca hissedersiniz.

İlk token süresi: Soğuk başlangıçta üst seviye modeller birkaç saniye geç yanıt verebilir. Sık kullanılan modelleri “sıcak” tutmak için servis açık kalsın.

Kaliteyi Artırma: İpuçları ve Prompt Tasarımı

Sistem talimatı: Yanıtı kısıtlamayan, görev odaklı net bir sistem mesajı üretim kalitesini yükseltir.

Yapılandırılmış çıktı: JSON şema, maddeler veya adım adım çözüm isteyin. Örneğin: “Lütfen JSON döndür: {title, summary, keywords}”.

Kısa bağlamlar: Gereksiz detayları azaltıp örnek odaklı içerik verin; yerel modellerde bağlam ekonomisi fark yaratır.

Güvenlik ve Kurumsal Kullanım

Yerelde çalışma, veri sızıntısı riskini doğal olarak azaltır. Yine de uygulama düzeyinde giriş/çıkış filtreleri, PII maskeleme ve log politikasını konumlandırın. Paylaşılan iş istasyonlarında model dizinlerinin erişim izinlerini düzenlemek iyi bir fikirdir.

Sorun Giderme

Model indirme yavaş: Ayna (mirror) seçeneklerini kullanın ya da indirmeyi önceden planlayın. Ağ kesintilerinde indirme tekrar başlatılabilir.

Yüksek bellek kullanımı: Daha agresif kuantizasyon seçin, num_ctx değerini düşürün veya daha küçük bir model deneyin.

Yanıt kalitesi yetersiz: Talimatı netleştirin, örnek verin, gerekirse farklı bir model ailesi (mistral, llama, phi, qwen) deneyin.

Sonuç

Ollama, yerel LLM çalıştırmayı basit bir komutla mümkün kılıyor. Geliştirici bilgisayarında hızlı prototip, kurum içinde gizli veriyle güvenli deneme veya offline asistan gibi senaryolarda verimli bir temel sunuyor. Kurulumu tamamlayıp ilk modeli koşturduktan sonra, API üzerinden uygulamanıza entegre etmek yalnızca birkaç satır kod. Doğru kuantizasyon ve bağlam ayarıyla, oldukça akıcı ve ekonomik bir yapay zeka deneyimi elde edebilirsiniz.