# Siteyi Cloudflare Tüneli üzerinden yayınlayın

> Bir siteyi Cloudflare Tüneli arkasına koyun; ziyaretçiler siteye Cloudflare üzerinden ulaşır ve onlar için 80 ve 443 portlarını açmanız gerekmez. Hesabınızda ne oluşturulduğunu, gereken jeton izinlerini, durumu ve tüneli nasıl kapatacağınızı anlatır.

Cloudflare Tüneli, sunucunuzu sunucunun kendisinin açtığı giden bir bağlantıyla Cloudflare'e bağlar. Ziyaretçiler siteye
Cloudflare üzerinden ulaşır; tünel trafiği sunucunuzdaki siteye taşır. Zefily, sunucuda bağlayıcıyı (`cloudflared`)
çalıştırır ve tüneli ile DNS kayıtlarını **sizin** Cloudflare hesabınızda, sağladığınız bir API jetonuyla oluşturur. Her
sitenin kendi tüneli vardır.

## Gerekenler

- Site alan adının bölgesini barındıran bir Cloudflare hesabı ve bunun için bir **API jetonu**. **Ayarlar → DNS
  hesapları** altında (Cloudflare) ekleyin. Jetonun Cloudflare'in API belgelerinde adlandırdığı şu izinleri olmalı:
  - **Hesap → Cloudflare Tüneli → Düzenle** (tüneli oluşturma, yapılandırma ve silme),
  - **Bölge → DNS → Düzenle** (tünelin CNAME kayıtlarını oluşturma ve silme),
  - **Bölge → Bölge → Oku** (alan adının bölgesini bulma; Cloudflare DNS hesabı bunu zaten kullanır).
- Ajanı Cloudflare Tüneli'ni destekleyen bir sunucu (site sayfası ajanın çok eski olduğunu söylüyorsa önce ajanı güncelleyin).
- Sunucuda sahip veya yönetici yetkisi.

## Açmak

Siteyi açın, **DNS** sekmesine gidip **Cloudflare Tüneli** bölümünü bulun:

1. Alan adını barındıran Cloudflare hesabını seçin.
2. Sitenin bir adında A, AAAA veya CNAME kaydı varsa **Değiştir** kutusunu işaretleyin. Bu adların kayıtları silinir ve
   tünelin kayıtlarıyla değiştirilir. Kutuyu işaretlemezseniz Zefily durur ve adları listeler.
3. **Cloudflare Tüneli üzerinden yayınla** seçeneğini seçin.

Zefily bundan sonra şunları sırayla yapar:

- hesapta uzaktan yönetilen bir tünel oluşturur (adı "zefily" ile başlar ve alan adını içerir),
- girişini ayarlar: sitenin her adı (alan adı ve takma adlar) bu sunucudaki siteye gider; geri kalan her şey için bir
  yakalayıcı 404 yanıtı verir,
- ad başına, `<tunnel-id>.cfargotunnel.com` adresine işaret eden, Cloudflare üzerinden proxy'lenen bir CNAME oluşturur;
  Cloudflare'in tüneller için belgelediği hedef budur,
- tünel jetonunu Cloudflare'den alır ve diğer gizli bilgiler gibi mühürlü olarak sunucuya gönderir,
- sunucu sabitlenmiş `cloudflared` sürümünü kurar ve bağlayıcıyı başlatır.

Bir adım başarısız olursa Zefily Cloudflare'de oluşturduğu her şeyi siler ve nedenini gösterir.

Site TLS kullanıyorsa bir ad sunucunun HTTPS portuna (443) gider; kullanmıyorsa 80'e. Ziyaretçiler ad için Cloudflare'in
sertifikasını görür. Cloudflare tüneli ile sunucu arasındaki bağlantı sunucunun kendi içinde kalır (`127.0.0.1`); bu
loopback bağlantısında sunucunun kendi sertifikası denetlenmez.

## Durum

Sunucu bağlayıcıyı çalıştırdıktan sonra site, durumunu ve Cloudflare'in tünel için bildirdiklerini gösterir:

- **Sağlıklı**: tünel Cloudflare ağına bağlı; bağlantılar ve kullandıkları Cloudflare konumları listelenir.
- **Bozulmuş**: bağlı, ama Cloudflare bazı bağlantılarda sorun görüyor.
- **Kapalı**: Cloudflare'e bağlantı yok. Sunucuyu kontrol edin: bağlayıcı `zefily-tunnel-<site id>.service` olarak çalışır.
- **Bağlı değil**: tünel hiç bağlanmadı.

Sunucu bağlayıcıyı başlatırken veya durdururken sayfa kendiliğinden güncellenir. Bir hata olursa sunucunun verdiği neden
gösterilir.

## Kapatmak

**Tüneli kapat** seçeneğini seçin ve onaylayın. Zefily sunucudaki bağlayıcıyı durdurur, hizmet dosyasını ve jeton dosyasını
siler. Sunucu durduğunu onaylayınca Zefily tünelin CNAME kayıtlarını ve Cloudflare'deki tüneli siler. Cloudflare açık
bağlantılar varken tüneli silmeyi reddeder; bu yüzden Zefily tünel gidene kadar her dakika yeniden dener ve bu sırada sayfa
son hatayı gösterir.

Tüneli kapatmak adların A kayıtlarını geri getirmez. Adları sunucuya geri göndermek için sonra sitenin DNS sayfasındaki
**DNS'i yönlendir** seçeneğini kullanın. Tünel varken DNS'i yönlendirme kullanılamaz, çünkü tünelin kayıtlarını değiştirir.

## Sınırlar

- Site başına bir tünel. Sitenin her adı seçtiğiniz Cloudflare hesabının bölgesinde olmalı.
- Joker adlar (`*.example.com`) burada tünel üzerinden yayınlanamaz.
- Sitenin kaldırılması veya taşınması ya da sunucunun silinmesi tünel çalışırken reddedilir: önce tüneli kapatın.
- DNS sayfasında tünelin CNAME kaydını elle düzenlerseniz, geri koyana kadar tünel bozulur.
- Zefily sunucudaki 80 ve 443 portlarını kapatmaz; kapatmak size kalmış. Sunucudaki diğer siteler bu portları kullanmaya devam eder.
- Bağlayıcı yalnızca yeni bir Zefily ajan sürümüyle güncellenir; kendi kendini güncellemez.

## Güvenlik

Tünel jetonu Zefily veritabanında hiç saklanmaz ve bir günlüğe yazılmaz. Jeton mühürlü olarak sunucuya gider ve yalnızca
hizmetin başlatılmasında okunan, yalnızca root'un erişebildiği bir ortam dosyasında durur. Hizmet, yetenekleri olmayan,
sistemi salt okunur olan ve ana dizini bulunmayan dinamik bir kullanıcı olarak, yalnızca IP ve yerel soketler üzerinden
çalışır. İkili dosya, kurulmadan önce Cloudflare'in yayımladığı SHA-256 sağlama toplamıyla doğrulanır.

---
Kaynak: https://zefily.com/tr/docs/cloudflare-tuneli
