Cloud-init ile VPS ve VDS Sunucularda Otomatik İlk Kurulum

Cloud-init ile VPS ve VDS Sunucularda Otomatik İlk Kurulum - Corelux
Paylaş:

Cloud-init ile VPS ve VDS Sunucularda Otomatik İlk Kurulum

Son Güncelleme: Eylül 2026

Cloud-init, yeni oluşturulan VPS, VDS ve bulut sunucularda ilk açılış yapılandırmasını otomatikleştiren güçlü bir araçtır. Kullanıcı oluşturma, SSH anahtarı ekleme, paket kurulumu, güvenlik ayarları ve servis başlatma gibi işlemler tek bir yapılandırma dosyasıyla standart hale getirilebilir.

Bu rehberde cloud-init mantığını, hangi senaryolarda kullanıldığını, güvenli bir ilk kurulum dosyasının nasıl hazırlanacağını ve sunucu operasyonlarında nelere dikkat edilmesi gerektiğini adım adım inceleyeceğiz.

İçindekiler

Cloud-init Nedir?

Cloud-init, Linux tabanlı sanal sunucularda ilk açılış sırasında otomatik yapılandırma yapılmasını sağlayan bir başlangıç otomasyon aracıdır. Özellikle bulut sunucu, VPS, VDS ve imaj tabanlı sunucu dağıtımlarında kullanılır. Amaç, her yeni sunucu açıldığında tekrar tekrar yapılan standart işlemleri elle yapmak yerine önceden tanımlı bir dosya üzerinden çalıştırmaktır.

Bir sunucuyu ilk kez başlattığınızda genellikle şu işlemleri yaparsınız: yeni kullanıcı oluşturma, root erişimini kısıtlama, SSH anahtarı ekleme, sistem paketlerini güncelleme, firewall kurma, saat dilimini ayarlama, temel servisleri yükleme ve izleme ajanı kurma. Cloud-init bu işlemlerin tamamını tek bir user-data dosyası ile otomatik hale getirebilir.

Cloud-init özellikle Ubuntu, Debian, CentOS türevleri, AlmaLinux ve Rocky Linux gibi dağıtımlarda yaygın olarak kullanılır. Modern sunucu operasyonlarında altyapının kod olarak yönetilmesi anlamına gelen Infrastructure as Code yaklaşımına geçişin en basit adımlarından biridir. Daha karmaşık otomasyon araçları olan Ansible, Terraform veya Puppet ile birlikte de kullanılabilir.

Cloud-init, tek başına bir kontrol paneli değildir. Sunucu üzerinde web arayüzü sağlamaz. Bunun yerine, sanal makine açılırken ilgili yapılandırmayı okur ve işletim sistemi seviyesinde gerekli değişiklikleri uygular. Bu yönüyle özellikle ilk kurulum, güvenlik tabanı oluşturma ve standartlaştırılmış sunucu teslimi için kullanılır.

Cloud-init Neden Kullanılır?

Sunucu yönetiminde en büyük sorunlardan biri, aynı işlemlerin farklı zamanlarda farklı kişiler tarafından tutarsız şekilde yapılmasıdır. Bir sunucuda SSH portu değiştirilmiş olabilir, diğerinde firewall unutulmuş olabilir, başka birinde güncelleme yapılmamış olabilir. Bu tür farklar hem güvenlik açıklarına hem de operasyonel karmaşaya neden olur.

Cloud-init kullanımı, yeni sunucuların standart bir başlangıç profiliyle açılmasını sağlar. Böylece her sunucu aynı güvenlik politikaları, aynı kullanıcı yapısı ve aynı temel paketlerle hazır hale gelir. Özellikle birden fazla sanal sunucu yöneten ekipler için bu büyük zaman tasarrufu sağlar.

  • Standart kurulum: Her yeni VPS veya VDS aynı temel yapılandırma ile başlar.
  • Zaman tasarrufu: Kullanıcı oluşturma, paket yükleme ve SSH ayarları otomatik yapılır.
  • Güvenlik: Parola ile SSH girişini kapatma, root erişimini sınırlama ve firewall kuralları ilk açılışta uygulanabilir.
  • Hata azaltma: Manuel komut girerken oluşabilecek yazım ve sıralama hataları önlenir.
  • Ölçeklenebilirlik: Onlarca sunucuyu aynı mantıkla kısa sürede hazır hale getirmek mümkündür.

Örneğin bir yazılım ekibi test ortamları için düzenli olarak yeni sunucu oluşturuyorsa, her sunucuda elle kullanıcı açmak ve paket kurmak yerine hazır bir cloud-init şablonu kullanabilir. Aynı şekilde ajanslar, müşterilerine teslim ettikleri Linux sunucuları için temel güvenlik katmanını otomatik uygulayabilir.

Corelux üzerinde Sanal Sunucu veya Bulut Sunucu altyapısı kullanıyorsanız, ilk kurulum süreçlerinizi standartlaştırmak için cloud-init mantığını kendi operasyon akışınıza dahil edebilirsiniz.

Cloud-init Nasıl Çalışır?

Cloud-init, sunucu ilk açıldığında meta veri kaynağından yapılandırma bilgilerini okur. Bu bilgiler genellikle user-data, meta-data ve bazı durumlarda vendor-data olarak ayrılır. user-data, yöneticinin sunucuya uygulamak istediği özel komutları ve ayarları içerir. meta-data ise sunucunun hostname, instance kimliği veya ağ bilgileri gibi altyapı tarafından sağlanan verilerini temsil eder.

Cloud-init işlemleri aşamalı olarak yürütülür. İlk aşamada veri kaynağı algılanır, ardından ağ yapılandırması ve disk genişletme gibi temel işlemler yapılır. Daha sonra kullanıcılar, paketler, dosyalar ve komutlar işlenir. Son aşamada ise servisler yeniden başlatılabilir veya özel scriptler çalıştırılabilir.

Cloud-init aşamaları

  • Init aşaması: Veri kaynağı algılanır, temel sistem kimliği ve ağ hazırlıkları yapılır.
  • Config aşaması: Kullanıcılar, SSH anahtarları, paket depoları ve sistem ayarları uygulanır.
  • Final aşaması: Komutlar çalıştırılır, servisler başlatılır ve kurulum tamamlanır.

Cloud-init dosyaları genellikle YAML formatındadır. YAML, girintilere duyarlı bir yapı kullandığı için boşluklara dikkat edilmelidir. Hatalı girinti, yanlış liste biçimi veya eksik iki nokta işareti cloud-init işleminin beklenen şekilde çalışmamasına neden olabilir.

Cloud-init yapılandırmasının en önemli özelliği ilk açılış mantığıdır. Çoğu modül yalnızca sunucunun ilk başlatılmasında çalışır. Bu nedenle test sırasında aynı sunucuda yapılandırmayı tekrar denemek istiyorsanız cloud-init durumunu temizlemeniz gerekebilir. Üretim ortamlarında ise bu işlem dikkatle yapılmalıdır, çünkü bazı ayarların yeniden uygulanması beklenmeyen sonuçlara yol açabilir.

Temel Cloud-init Yapılandırması

Basit bir cloud-init dosyası #cloud-config satırı ile başlar. Bu satır, dosyanın cloud-init tarafından yapılandırma dosyası olarak okunacağını belirtir. Ardından hostname, kullanıcılar, SSH anahtarları, paketler ve komutlar tanımlanabilir.

Aşağıdaki örnek, yeni bir Linux sunucuda yönetici kullanıcısı oluşturur, parola ile SSH girişini kapatır, sistem paketlerini günceller ve temel güvenlik araçlarını yükler:

#cloud-config
hostname: web-01
manage_etc_hosts: true

users:
  - name: yonetici
    groups: sudo
    shell: /bin/bash
    sudo: ALL=(ALL) NOPASSWD:ALL
    ssh_authorized_keys:
      - ssh-ed25519 AAAA_ORNEK_PUBLIC_KEY kullanici@cihaz

ssh_pwauth: false
disable_root: true

package_update: true
package_upgrade: true
packages:
  - curl
  - vim
  - ufw
  - htop
  - fail2ban

timezone: Europe/Istanbul

runcmd:
  - ufw allow OpenSSH
  - ufw --force enable
  - systemctl enable fail2ban
  - systemctl start fail2ban

Bu örnekte ssh_pwauth: false ayarı, SSH üzerinden parola ile giriş yapılmasını kapatır. disable_root: true ise root kullanıcısı ile doğrudan SSH erişimini devre dışı bırakır. Böylece ilk açılıştan itibaren daha güvenli bir erişim modeli oluşturulur.

Cloud-init dosyasında kullanılan runcmd bölümü, kurulumun son aşamasında çalıştırılacak komutları içerir. Burada firewall açma, servis başlatma veya uygulama kurulum scripti çalıştırma gibi işlemler yapılabilir. Ancak çok karmaşık kurulumlar için tüm mantığı runcmd içine yığmak yerine yapılandırmayı okunabilir modüllere ayırmak daha sağlıklıdır.

Kullanıcı oluşturma ipuçları

Üretim ortamlarında tek bir paylaşılan kullanıcı yerine kişi veya ekip bazlı kullanıcı oluşturmak daha izlenebilir bir yapı sağlar. Her kullanıcının kendi SSH anahtarı bulunmalı, ortak parola kullanılmamalı ve yönetici yetkileri kontrollü verilmelidir. Ayrıca sudo yetkisi verilen kullanıcıların kimler olduğu düzenli olarak gözden geçirilmelidir.

Güvenli İlk Kurulum İçin Öneriler

Cloud-init güçlü bir otomasyon aracıdır; ancak yanlış yapılandırılırsa güvenlik riskleri oluşturabilir. Özellikle özel anahtarların, düz metin parolaların veya hassas erişim bilgilerin user-data içinde saklanması önerilmez. Cloud-init dosyası bazı ortamlarda instance içinden okunabilir olabileceği için gizli bilgiler mümkün olduğunca harici güvenli kasalarda tutulmalıdır.

  • SSH anahtarı kullanın: Parola ile giriş yerine güçlü SSH anahtarı tercih edin.
  • Root girişini kapatın: Root kullanıcısının doğrudan SSH erişimini devre dışı bırakın.
  • Firewall etkinleştirin: İlk açılışta yalnızca gerekli portları açın.
  • Güncelleme yapın: Sistem paketlerini ilk kurulumda güncel hale getirin.
  • Gizli bilgi yazmayın: API anahtarı, veritabanı parolası ve özel SSH anahtarı gibi verileri cloud-init dosyasına eklemeyin.
  • Logları kontrol edin: Kurulum tamamlandıktan sonra cloud-init loglarını inceleyin.

Güvenli bir ilk kurulumun amacı yalnızca sunucuyu çalışır hale getirmek değildir. Aynı zamanda saldırı yüzeyini en baştan azaltmaktır. Örneğin web sunucusu olarak kullanılacak bir makinede yalnızca SSH, HTTP ve HTTPS portları açık olmalıdır. Veritabanı sunucularında dış erişim gerekmiyorsa veritabanı portu internete açılmamalıdır.

SSL ve web güvenliği tarafında yapılandırma yapacaksanız, sunucu hazır olduktan sonra SSL Sertifikası kullanarak HTTPS trafiğini etkinleştirmeniz gerekir. Cloud-init, sertifika kurulumunun ön hazırlıklarını otomatikleştirebilir; ancak sertifika yenileme, alan adı doğrulama ve web sunucusu yapılandırması ayrıca planlanmalıdır.

SSH yapılandırması örneği

Cloud-init ile SSH yapılandırmasını tamamen değiştirmek yerine, güvenli varsayımlar uygulamak daha sürdürülebilir olabilir. Örneğin parola ile girişin kapatılması, root erişiminin devre dışı bırakılması ve yalnızca gerekli kullanıcıların yetkilendirilmesi çoğu senaryo için güçlü bir başlangıç sağlar.

#cloud-config
ssh_pwauth: false
disable_root: true
users:
  - name: deploy
    groups: sudo
    shell: /bin/bash
    sudo: ALL=(ALL) NOPASSWD:ALL
    ssh_authorized_keys:
      - ssh-ed25519 AAAA_ORNEK_PUBLIC_KEY deploy@laptop

Bu yapılandırmada deploy kullanıcısı sunucuya SSH anahtarıyla erişebilir. Parola ile giriş kapalı olduğu için brute force saldırılarının başarı ihtimali önemli ölçüde azalır.

Paket ve Servis Yönetimi

Cloud-init yalnızca kullanıcı oluşturmak için kullanılmaz; aynı zamanda paket kurulumu ve servis yönetimi için de oldukça kullanışlıdır. Örneğin yeni açılan her sunucuda nginx, git, curl, ufw ve fail2ban gibi paketlerin otomatik kurulmasını sağlayabilirsiniz.

Aşağıdaki örnekte bir web sunucusu için temel paketler yüklenir, Nginx başlatılır ve firewall kuralları uygulanır:

#cloud-config
package_update: true
packages:
  - nginx
  - git
  - curl
  - ufw

runcmd:
  - systemctl enable nginx
  - systemctl start nginx
  - ufw allow OpenSSH
  - ufw allow 80/tcp
  - ufw allow 443/tcp
  - ufw --force enable

Bu yapı, ilk açılışta basit bir web sunucusunu hazır hale getirir. Ancak üretim ortamlarında yalnızca paket yüklemek yeterli değildir. Uygulama dosyaları, domain yönlendirmesi, SSL, log yönetimi, yedekleme ve izleme gibi konular da planlanmalıdır.

Eğer paylaşımlı hosting yerine uygulamanız için daha izole bir ortam istiyorsanız Linux Hosting, daha fazla kontrol gerekiyorsa Türkiye VDS Sunucu seçenekleri değerlendirilebilir. Cloud-init özellikle yönetici erişimi olan VPS, VDS ve bulut sunucu modellerinde anlamlıdır.

Dosya yazdırma

Cloud-init ile sunucuya dosya yazdırmak da mümkündür. Bu özellik, basit yapılandırma dosyaları, motd mesajları veya servis ayarları için kullanılabilir.

#cloud-config
write_files:
  - path: /etc/motd
    permissions: '0644'
    owner: root:root
    content: |
      Bu sunucu otomatik cloud-init yapılandırması ile hazırlanmıştır.
      Yetkisiz erişim denemeleri kayıt altına alınır.

write_files bölümü güçlüdür; fakat karmaşık ve uzun yapılandırma dosyaları için sürüm kontrol sistemi kullanmak daha doğru olur. Böylece değişiklik geçmişi izlenebilir ve geri dönüş kolaylaşır.

Pratik Kullanım Senaryoları

Cloud-init farklı işletme ve teknik ekip ihtiyaçlarına göre uyarlanabilir. Aşağıdaki senaryolar, gerçek hayatta sık karşılaşılan kullanım alanlarını gösterir.

1. Web uygulaması için temel sunucu hazırlama

Bir Laravel, WordPress veya özel PHP uygulaması yayınlamadan önce sunucuda web sunucusu, PHP paketleri, veritabanı istemcisi, güvenlik duvarı ve temel araçlar kurulmalıdır. Cloud-init bu temel hazırlığı otomatikleştirir. Uygulama dağıtımı daha sonra Git, CI/CD veya manuel deploy adımlarıyla yapılabilir.

2. Test ortamı oluşturma

Geliştirici ekipler sık sık geçici test sunucuları oluşturur. Her test sunucusunu elle hazırlamak yerine cloud-init ile aynı paketler, aynı kullanıcılar ve aynı güvenlik ayarları birkaç dakika içinde uygulanabilir. Test bittiğinde sunucu silinir, ihtiyaç olduğunda yeniden aynı şablonla oluşturulur.

3. Ajans ve bayi operasyonları

Web ajansları veya bayi hosting hizmeti veren ekipler, müşteri projeleri için standart sunucu şablonlarına ihtiyaç duyar. Cloud-init ile her müşteriye aynı başlangıç güvenlik politikası, aynı yönetici kullanıcıları ve aynı yedekleme hazırlığı uygulanabilir. Bu yaklaşım destek süreçlerini kolaylaştırır.

4. Yedekleme ajanı kurulumu

Sunucu ilk açıldığında yedekleme ajanı kurulabilir, gerekli dizinler oluşturulabilir ve cron benzeri zamanlanmış görevler hazırlanabilir. Yedekleme, sunucu yaşam döngüsünün sonradan eklenen bir parçası değil, ilk kurulumun doğal bir bileşeni olmalıdır. Kurumsal senaryolarda Yedekleme Hizmeti ile birlikte düşünülmesi önerilir.

5. RDP veya uzak çalışma ortamı hazırlığı

Linux odaklı cloud-init kullanımına rağmen bazı karma ortamlarda uzak erişim, proxy veya yardımcı servisler de otomasyon sürecinin parçası olabilir. Örneğin belirli ağ testleri için proxy araçlarının kurulması veya uzak yönetim servislerinin ön hazırlığı cloud-init ile tetiklenebilir. Daha özel ihtiyaçlar için RDP Sunucu ve Proxy Sunucu çözümleri ayrıca değerlendirilebilir.

Cloud-init Hata Giderme

Cloud-init yapılandırması beklenen sonucu vermediğinde ilk bakılması gereken yer log dosyalarıdır. Çoğu Linux dağıtımında cloud-init günlükleri /var/log/cloud-init.log ve /var/log/cloud-init-output.log dosyalarında bulunur. Bu dosyalar hangi modülün çalıştığını, hangi komutun hata verdiğini ve yapılandırmanın hangi aşamada durduğunu anlamaya yardımcı olur.

sudo tail -n 100 /var/log/cloud-init.log
sudo tail -n 100 /var/log/cloud-init-output.log
cloud-init status --long

YAML hataları en yaygın sorunlardan biridir. Girinti hatası, yanlış liste yapısı veya özel karakterlerin hatalı kullanılması dosyanın kısmen ya da tamamen işlenmemesine yol açabilir. Bu nedenle cloud-init dosyasını üretim ortamında kullanmadan önce küçük bir test sunucusunda denemek önemlidir.

Cloud-init tekrar çalıştırma

Test ortamında cloud-init yapılandırmasını yeniden denemek isteyebilirsiniz. Bunun için cloud-init durumunu temizleyen komutlar kullanılabilir. Ancak bu işlem üretim sistemlerinde dikkatli uygulanmalıdır.

sudo cloud-init clean --logs
sudo reboot

Bu komutlar cloud-init durumunu ve loglarını temizleyerek sistemin yeniden açılışta yapılandırmayı tekrar işlemesine neden olabilir. Üretim ortamında kullanıcı, SSH veya ağ ayarlarının yeniden uygulanması erişim kaybına yol açabileceğinden önce mutlaka konsol erişimi veya kurtarma planı hazır olmalıdır.

  • SSH erişimi yoksa: Konsol üzerinden kullanıcı ve SSH servis durumu kontrol edilmelidir.
  • Paketler kurulmadıysa: Ağ bağlantısı, DNS çözümleme ve paket deposu erişimi incelenmelidir.
  • Komutlar çalışmadıysa: runcmd sırası, komut yolu ve yetki seviyesi kontrol edilmelidir.
  • Hostname değişmediyse: preserve_hostname ayarı ve dağıtım varsayılanları gözden geçirilmelidir.

Manuel Kurulum ve Cloud-init Karşılaştırması

Cloud-init her senaryoda zorunlu değildir. Tek seferlik, küçük ve kritik olmayan bir test sunucusunda manuel kurulum yeterli olabilir. Ancak tekrar eden kurulumlarda, güvenlik standardı gerektiren yapılarda ve çoklu sunucu operasyonlarında cloud-init ciddi avantaj sağlar.

Kriter Manuel Kurulum Cloud-init ile Kurulum
Hız İşlem sayısına göre yavaş olabilir. İlk açılışta otomatik uygulanır.
Tutarlılık Kişiye ve zamana göre değişebilir. Aynı şablonla standart sonuç verir.
Güvenlik Bazı adımlar unutulabilir. Firewall, SSH ve kullanıcı politikaları otomatik uygulanabilir.
Ölçeklenebilirlik Çoklu sunucuda zaman alır. Çok sayıda sunucu için uygundur.
Denetlenebilirlik Komut geçmişine bağlı kalabilir. Yapılandırma dosyası sürüm kontrolüne alınabilir.

Manuel kurulumun avantajı esneklik ve anlık karar verebilme kolaylığıdır. Cloud-init ise tekrar edilebilirlik ve standartlaşma sağlar. En iyi yaklaşım genellikle ikisini birlikte kullanmaktır: cloud-init ile güvenli temel sistem hazırlanır, uygulama seviyesindeki karmaşık dağıtımlar ise Ansible, CI/CD veya özel deploy araçlarıyla yönetilir.

Sunucu seçiminde de cloud-init stratejisi dikkate alınmalıdır. Daha küçük projeler için Türkiye VPS Sunucu, daha yüksek kaynak izolasyonu ve performans beklentisi olan projeler için Almanya VDS Sunucu veya Kiralık Sunucu seçenekleri tercih edilebilir.

Sıkça Sorulan Sorular

Cloud-init sadece bulut sunucularda mı kullanılır?

Cloud-init en çok bulut sunucu, VPS ve VDS ortamlarında kullanılır; ancak uygun imaj ve veri kaynağı sağlandığında farklı sanallaştırma platformlarında da çalışabilir. Temel amaç, imajdan açılan Linux sistemin ilk yapılandırmasını otomatikleştirmektir.

Cloud-init ile parola belirlemek güvenli midir?

Teknik olarak parola tanımlanabilir; ancak güvenlik açısından önerilen yöntem SSH anahtarı kullanmak ve parola ile SSH girişini kapatmaktır. Parolalar cloud-init dosyasında düz metin veya hash olarak yer alabileceği için gizli bilgi yönetimi dikkatle planlanmalıdır.

Cloud-init dosyası her reboot işleminde çalışır mı?

Cloud-init modüllerinin çoğu varsayılan olarak yalnızca ilk açılışta çalışır. Bazı modüller farklı çalışma sıklıklarına sahip olabilir. Test ortamında yeniden çalıştırmak için cloud-init clean komutu kullanılabilir; fakat üretim ortamında dikkatli olunmalıdır.

Cloud-init ile Docker veya web panel kurulabilir mi?

Evet, Docker, Nginx, PHP, veritabanı istemcileri veya bazı yönetim panelleri cloud-init ile kurulabilir. Ancak uzun ve karmaşık kurulumlarda tüm süreci tek dosyaya yazmak yerine script, Ansible veya CI/CD entegrasyonu kullanmak daha sürdürülebilir olur.

Cloud-init hata verirse sunucu bozulur mu?

Hata türüne bağlıdır. Örneğin paket kurulumu başarısız olursa sunucu açılmaya devam edebilir; ancak SSH veya ağ ayarlarında yapılan hatalar erişim kaybına neden olabilir. Bu yüzden yeni şablonlar önce test sunucusunda denenmeli ve konsol erişimi hazır tutulmalıdır.

Cloud-init ile yedekleme yapılandırması yapılabilir mi?

Evet, yedekleme ajanı kurulumu, dizin hazırlığı ve temel zamanlanmış görevler cloud-init ile başlatılabilir. Ancak yedeklerin saklanacağı hedef, şifreleme politikası, geri yükleme testleri ve saklama süresi ayrıca tasarlanmalıdır.

Cloud-init kullanmak için ileri seviye Linux bilgisi gerekir mi?

Temel kullanıcı oluşturma ve paket kurma işlemleri için ileri seviye bilgi gerekmez; fakat SSH, firewall, servis yönetimi ve YAML sözdizimi konusunda dikkatli olmak gerekir. Üretim ortamlarında cloud-init dosyasını sürüm kontrolünde tutmak ve değişiklikleri test etmek en iyi yaklaşımdır.

Sonuç

Cloud-init, VPS, VDS ve bulut sunucularda ilk kurulum süreçlerini otomatikleştirmek için pratik, güçlü ve ölçeklenebilir bir çözümdür. Kullanıcı oluşturma, SSH anahtarı ekleme, paket kurulumu, firewall etkinleştirme ve temel servisleri başlatma gibi işlemleri standart hale getirerek hem zaman kazandırır hem de güvenlik seviyesini artırır.

Başarılı bir cloud-init stratejisi için yapılandırma dosyalarının sade, test edilmiş ve güvenlik odaklı hazırlanması gerekir. Hassas bilgiler dosyaya yazılmamalı, SSH anahtarı kullanılmalı, root erişimi sınırlandırılmalı ve kurulum sonrası loglar mutlaka kontrol edilmelidir. Küçük ekiplerden büyük altyapılara kadar her ölçekte, standartlaştırılmış sunucu teslimi için cloud-init önemli bir yapı taşıdır.

Corelux altyapısında projenizin ihtiyacına göre Sanal Sunucu, Bulut Sunucu, Kiralık Sunucu ve Yedekleme Hizmeti seçeneklerini değerlendirebilir; otomasyon, güvenlik ve performans odaklı daha sürdürülebilir bir sunucu yönetim modeli oluşturabilirsiniz.

Yazar

Boran BAR

Chat on WhatsApp