ServBay'de Cloudflare Tunnel ile Yerel Servisleri Güvenli Şekilde Yayına Açma Rehberi
Cloudflare Tunnel (eski adıyla Argo Tunnel), Cloudflare’ın sunduğu bir sıfır güven ağı servisidir. Port açmanıza veya karmaşık güvenlik duvarı kurallarıyla uğraşmanıza gerek kalmadan, makinenizdeki web servisini, SSH’yi veya diğer uygulamaları güvenli biçimde internete açmanızı sağlar. Bu rehberde, güçlü yerel web geliştirme ortamı ServBay ile cloudflared
klient aracı kullanılarak güvenli bir tünelin nasıl kurulacağını ve ServBay servislerinize internetten nasıl erişilebileceğini detaylıca bulacaksınız.
Başlıca Avantajlar:
- Artırılmış güvenlik: Cloudflare’ın DDoS koruması, WAF (Web Uygulama Güvenlik Duvarı) gibi küresel güvenlik özelliklerinden yararlanın.
- Ağ yapılandırmasını basitleştirir: Port yönlendirme, NAT veya güvenlik duvarı kurallarıyla uğraşmaya gerek yoktur.
- Sıfır güven modeli: Bağlantılar çıkış yönlüdür, saldırı yüzeyini düşürür.
- Cloudflare özellikleriyle entegre: Cloudflare’ın önbellekleme, optimizasyon ve analiz özelliklerini kullanın.
Genel Bakış
ServBay, geliştiriciler için entegre ve yönetimi kolay bir yerel geliştirme ortamı sağlar. PHP, Node.js, Python, Go, Java, Ruby, Rust gibi çoklu dilleri; MySQL, PostgreSQL, MongoDB, Redis gibi veritabanlarını ve Caddy, Nginx, Apache gibi web sunucularını destekler. Genellikle ServBay’de geliştirdiğiniz site veya uygulama sadece yerel ağdan erişilebilir. Cloudflare Tunnel ile ise hem takım üyeleriyle çalışmalarınızı paylaşabilir, hem de ihtiyaç halinde lokal servisinizi kalıcı veya geçici olarak internete açarken Cloudflare’ın sunduğu güvenlik ve performans avantajlarından yararlanabilirsiniz.
Teknik Prensipler
Cloudflare Tunnel'ın temel mantığı, ServBay’in kurulu olduğu bilgisayarda çalışan cloudflared
istemcisinin, Cloudflare’ın kenar sunucularına QUIC tabanlı şifreli gidişte bir bağlantı başlatmasıdır. Bu bağlantı çıkış yönlü gerçekleştiğinden, yönlendirici ya da güvenlik duvarında ekstra bir kural gerekmez. Kullanıcı, tünele atanmış alan adını kullanarak servise eriştiğinde trafiği önce Cloudflare kenarına ulaşır, oradan güvenli tünelle lokal cloudflared
istemcisine ve oradan da ServBay ortamındaki uygulamanıza (ör. https://servbay.local
veya http://localhost:8000
) iletilir. Yanıtlar da aynı güzergah üzerinden geri döner.
Ortam Hazırlığı
Aşağıdaki şartları sağladığınızdan emin olun:
- ServBay kurulup çalışıyor olmalı: ServBay geliştirme ortamınız kurulmuş ve yayınlamak istediğiniz lokal site/servis ayakta olmalı. Örneğin, varsayılan
servbay.local
alan adı çalışıyor olmalı. - Cloudflare hesabı: Bir Cloudflare hesabınız olmalı.
- Cloudflare'a eklenmiş alan adı: Alan adınız Cloudflare hesabınıza eklenmiş ve DNS yönetimi Cloudflare’da olmalı.
cloudflared
kurulu olmalı: ServBay’i çalıştıran macOS makinenizecloudflared
CLI aracını kurmalısınız.
1. cloudflared
Klientini Kurmak
macOS için Homebrew ile kurulum önerilir. Homebrew yüklü değilse, önce Homebrew web sitesinden kurun.
Homebrew ile Kurulum (Önerilen):
brew update
brew install cloudflared
2
Manuel Kurulum (Apple Silicon/ARM için):
# macOS ARM (Apple Silicon) için ikili dosyayı indir
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-darwin-arm64.tgz | tar xz
# İndirdikten sonra sistem PATH’ine taşı
sudo mv cloudflared /usr/local/bin/
2
3
4
Kurulumu Doğrulama: Kurulumdan sonra terminalde aşağıdaki komut ile başarıyla kurulduğunu ve versiyonunu kontrol edin:
cloudflared --version
# Örnek çıktı: cloudflared version 2024.5.0 (built 2024-05-01)
2
Sürüm numarası değişebilir; sayısal bir çıktı alıyorsanız kurulum tamam demektir.
2. Cloudflare Hesabında Oturum Açmak
Terminalde şu komutu çalıştırarak Cloudflare hesabınıza giriş yapın:
cloudflared tunnel login
Bu komut tarayıcınızı açıp Cloudflare giriş ekranına yönlendirir. Alan adınızın bağlı olduğu hesabı seçip cloudflared
için yetki verin. Başarılı olunca bir uyarı ve ~/.cloudflared/
dizininde bir cert.pem
dosyasının oluşturulduğunu görürsünüz.
Tünel Kurulumu ve Yapılandırma
Şimdi yeni bir tünel oluşturup, trafiği ServBay ortamınızda çalışan lokal servise yönlendireceğiz.
Temel Yapılandırma Adımları
Tünel Oluşturma
Terminalde, tünelinize kolay tanıyacağınız bir isim vererek komutu çalıştırın; örneğin
servbay-demo-tunnel
.bashcloudflared tunnel create servbay-demo-tunnel
1Komut başarılı olunca bir tünel kimliği (UUID) ve bir
credentials-file
dizini görüntülenecek. Tünel ID gibi bilgileri not edin: ör.a7b8c9d0-e1f2-3a4b-5c6d-7e8f9a0b1c2d
.~/.cloudflared/
dizininde tünel kimliğiyle adlandırılmış bir JSON kimlik dosyası oluşur (ör.a7b8c9d0-e1f2-3a4b-5c6d-7e8f9a0b1c2d.json
). Bu dosyayı güvenli bir şekilde saklayın.DNS Kaydı Yapılandırma
Cloudflare’ın belirlediğiniz alan adını tünele yönlendirebilmesi için, ilgili DNS kaydını eklemeniz gerekir.
cloudflared
bunu otomatikleştiren bir komut sunar:bashcloudflared tunnel route dns servbay-demo-tunnel servbay-demo.yourdomain.com
1servbay-demo-tunnel
yerine tünel adınızı,servbay-demo.yourdomain.com
kısmını ise kullanacağınız alt alan adıyla değiştirin (ve alan adınızın Cloudflare’da olduğundan emin olun).Komuttan sonra, Cloudflare DNS ayarlarınıza ilgili alt alan adı için
<TUNEL_ID>.cfargotunnel.com
'a işaret eden bir CNAME kaydı eklenir.Yapılandırma Dosyasını Yazın
cloudflared
, tünelin davranışlarını belirten bir YAML yapılandırma dosyası kullanır. Varsayılan yol~/.cloudflared/config.yml
. Dosya yoksa kendiniz oluşturun.~/.cloudflared/config.yml
için örnek içerik:yaml# tunnel: Tünelin UUID’si; kendi oluşturduğunuz değerle değiştirin tunnel: a7b8c9d0-e1f2-3a4b-5c6d-7e8f9a0b1c2d # credentials-file: Tünel kimlik bilgileri dosyası; tipik olarak ~/.cloudflared/ altında UUID adıyla yer alır credentials-file: /Users/yourusername/.cloudflared/a7b8c9d0-e1f2-3a4b-5c6d-7e8f9a0b1c2d.json # Kullanıcı adınız ve doğru yolu yazın ingress: # Gelen trafiğin yönlendirileceği kurallar - hostname: servbay-demo.yourdomain.com # Ziyaretçi bu alan adı üzerinden erişecek; DNS kaydıyla eşleşmeli service: https://servbay.local # Yerel ServBay sunucunuzun adresi; ServBay varsayılan olarak SSL ile bu alanı sunar. originRequest: # noTLSVerify: true # Yerel servisin kendi imzalı sertifikası varsa (örn. ServBay User CA sertifikası ile), TLS doğrulamayı atlamak için açılsın. # ServBay’de geçerli (ör. Let’s Encrypt) bir sertifika varsa buna gerek yoktur. # Lokal geliştirmede User CA sertifikası + noTLSVerify: true yaygındır. - service: http_status:404 # Varsayılan geri dönüş; yukarıdaki hostname’ler eşleşmiyorsa 404 döner
1
2
3
4
5
6
7
8
9
10
11
12
13
14Dikkat edilecekler:
tunnel
vecredentials-file
satırlarını kendi UUID ve dosya yolunuzla değiştirin.hostname
kısmını 2. adımda oluşturduğunuz alt alan adıyla değiştirin.service: https://servbay.local
varsayılan ServBay sitesini gösterir. Farklı bir port/adreste çalışan bir uygulamanız varsa buna göre değiştirin.originRequest.noTLSVerify: true
özelliği, kendi imzalı SSL sertifikası kullandığınızda gereklidir. Sistemce tanınan bir sertifika kullanıyorsanız buna gerek yoktur.
Tünel Servisini Başlatmak
Yapılandırma tamamlandığında, tünel servisini başlatacaksınız:
cloudflared tunnel run servbay-demo-tunnel
servbay-demo-tunnel
yerine kendi tünel adınızı yazmalısınız.
cloudflared
, Cloudflare ağına bağlanıp tüneli kurar. Terminalde bağlantı durumu ve loglar görünür. Bu komut çalıştığı sürece tünel aktiftir. Tünelin arka planda daima çalışmasını isterseniz, işletim sistemi servislerine (ör. macOS üzerinde launchctl
) ekleyebilirsiniz; bu rehberde detayına girilmemiştir.
Hizmeti Doğrulama
Tünel başarıyla başlatıldıysa, artık dış dünyadan belirlediğiniz alan adı üzerinden ServBay servisinize erişebilirsiniz.
Alan adını ziyaret edin: Tarayıcıda daha önce kaydettiğiniz alan adını ziyaret edin; örnek
https://servbay-demo.yourdomain.com
.Doğrulama noktaları:
- Tarayıcıda, yerelde
https://servbay.local
ziyaret ederken gördüğünüz sitenin aynısını görmelisiniz. - Adres çubuğunda geçerli bir SSL sertifikası görünür (“Bağlantı güvenli”). Bu sertifika Cloudflare’ın alan adınıza verdiği bir sertifikadır (lokal ServBay’in sertifikası yalnızca
cloudflared
ile aranızda kullanılır). - Geliştirici araçlarından HTTP response başlıklarına bakın;
CF-RAY
gibi Cloudflare’a özgü başlıklar göreceksiniz, trafik Cloudflare üzerinden geçiyor demektir.
- Tarayıcıda, yerelde
İleri Seviye Yapılandırma İpuçları
Çoklu Servis Yönlendirme
Birden fazla hostname kullanarak farklı ServBay servislerinize ya da apilerinize trafik yönlendirmek için config.yml
’ye ek kurallar yazabilirsiniz:
ingress:
- hostname: api.yourdomain.com
service: http://localhost:8080 # API servisi için farklı bir port
- hostname: app.yourdomain.com
service: https://servbay.local # Ana siteniz
- service: http_status:404
2
3
4
5
6
Trafik İzleme ve Loglama
cloudflared
çeşitli komutlarla tünel durumunu izlemenizi ve hata ayıklamanızı sağlar:
- Canlı istatistikler:bash
cloudflared tunnel info servbay-demo-tunnel
1 - Ayrıntılı loglar:
cloudflared tunnel run
sırasında terminalde doğrudan loglar görünür. Log seviyesini ayarlayabilir veya bir dosyaya kaydedebilirsiniz.
Cloudflare Access ile Kimlik Doğrulama
Servisinize erişimi daha güvenli yapmak için Cloudflare Access’i entegre edebilirsiniz. Cloudflare Access, Cloudflare Zero Trust platformunun bir parçasıdır ve klasik VPN’lere göre çok daha esnek, merkezi yönetilebilir erişim kontrolü sağlar. Access tanımları Cloudflare panelinden yapılır.
Sık Karşılaşılan Sorunlar & Çözümleri
Karşılaşabileceğiniz yaygın durumlar ve önerilen çözümler şunlardır:
Durum | Çözüm |
---|---|
502 Bad Gateway hatası | ServBay servisinin çalışır ve erişilebilir olduğundan emin olun (ör. tarayıcıda https://servbay.local açıyor mu?).config.yml içindeki service değeri ile port/adresin eşleştiğinden emin olun.Yerel servis HTTPS ile çalışıyorsa ve noTLSVerify: true etkin değilse, sertifikanın uygun olup olmadığını kontrol edin veya noTLSVerify etkinleştirin. |
DNS çözümleme hatası | Cloudflare DNS’te doğru CNAME kaydı eklediğinizden ve <TUNEL_ID>.cfargotunnel.com ’a işaret ettiğinden emin olun. dig veya nslookup ile kontrol edebilirsiniz. |
Sertifika hatası | Cloudflare’ın verdiği sertifikada hata varsa, config.yml ’deki hostname ile ziyaret ettiğiniz alan adının birebir aynı olduğunu kontrol edin.Lokal TLS hatalarında, service adresinin doğru olduğundan ve gerekiyorsa originRequest.noTLSVerify: true ’yu etkinleştirdiğinizden emin olun. |
cloudflared tunnel run komutu hata veriyor | ~/.cloudflared/config.yml dosyasının var olup olmadığını ve YAML formatının doğru olduğunu kontrol edin.tunnel ile credentials-file değerlerinin doğru (UUID ve dosya yolu) olduğundan emin olun.cloudflared ’in gerekli dosyalara erişim izni olduğuna bakın. |
Yavaşlık veya bağlantı dengesizliği | Yerel ağ bağlantınızda bir sorun olup olmadığını gözden geçirin. Cloudflare Tunnel QUIC protokolünü kullanır; ağınızın QUIC’i düzgün desteklediğinden emin olun. Gerekirse Cloudflare destek birimiyle iletişime geçin. |
Çözümün Avantajlarının Özeti
ServBay ile Cloudflare Tunnel entegre ettiğinizde şunları kazanırsınız:
- Yerel çalışmalarınızı kolayca paylaşabilirsiniz: Takım üyelerine veya müşterilere hızlıca lokal web projenizi gösterebilirsiniz.
- Dış servis callback/webhook testlerini kolaylaştırır: Yalnızca dışarıdan tetiklenebilen servisleri veya webhook’ları kolayca test edebilirsiniz.
- Kurumsal düzeyde güvenlik: Cloudflare’ın DDoS önleme, WAF gibi özellikleriyle yerel servisinizi koruyabilirsiniz.
- Ağ yapılandırma zahmetinden kurtulun: Port açma, NAT ve firewall ayarları artık gereksiz.
- Cloudflare’ın global ağının avantajı: Anycast altyapısı sayesinde yüksek hız ve erişilebilirlik.
ServBay’in güçlü yerel geliştirme ortamı ve Cloudflare Tunnel’ın güvenli yayın özellikleri, geliştiriciler için hızlı, verimli ve güvenli bir iş akışı sunar.
Sonuç
Bu dökümanda, ServBay ortamında cloudflared
kurulumunu ve yapılandırmasını, Cloudflare Tunnel yaratıp çalıştırmayı ve yerel web servisinizi güvenli şekilde internete açmayı ayrıntılı olarak anlattık. Bu adımları izleterek, ServBay’in çoklu teknoloji desteğiyle Cloudflare Tunnel’ın sunduğu güvenliği birleştirip, ekip içi işbirliği ve test süreçlerinizde büyük avantaj elde edebilirsiniz. Unutmayın, Cloudflare Tunnel Cloudflare Zero Trust platformunun bir parçası olduğundan, daha ileri erişim kontrolleri için Cloudflare Access gibi ek özelliklerini incelemeniz önerilir.