← Radar

Konu: Altyapı3 dk okuma

Headscale: Tailscale ağının kontrol sunucusunu kendin çalıştırmak

Bu neden önemli?

Tailscale gibi mesh VPN'ler ev laboratuvarından şirket sunucularına kadar her yerde. Hangi parçanın ne iş yaptığını bilirsen neyi kendin çalıştırabileceğini, neyi bir şirkete bırakman gerektiğini daha bilinçli seçersin.

Mesh VPN ne demek?

Klasik bir şirket VPN’inde bütün trafik merkezdeki bir sunucudan geçer. Kurması kolaydır ama sunucu uzaktaysa her bağlantı yavaşlar. Mesh (ağ örgüsü) yapısında ise her cihaz diğerine doğrudan bağlanır. Sorun, her cihaz çifti için anahtarları ve adresleri yönetmek. Tailscale bu zor kısmı senin yerine yapıyor. Altında WireGuard şifreleme protokolü var.

Tailscale’in kendi anlatımında sistem iki katmandan oluşuyor:

  • Veri katmanı (data plane): Asıl trafiğini taşıyan WireGuard tünelleri. Bu kısım mesh, yani cihazlar doğrudan konuşuyor.
  • Kontrol katmanı (control plane): Merkezde bir koordinasyon sunucusu. Neredeyse hiç trafik taşımıyor.

Koordinasyon sunucusu ne yapıyor?

Bunu bir ortak posta kutusu gibi düşün. Her cihaz kendi açık anahtarını (public key) buraya bırakıyor ve diğerlerinin anahtarlarını alıyor. Gizli anahtar (private key) hiçbir zaman cihazdan çıkmıyor. Sunucu ayrıca cihazlara IP adresi veriyor, kimin kime erişebileceğini (ACL) dağıtıyor ve hangi cihazın hangi ağa yol gösterdiğini duyuruyor.

İki cihaz güvenlik duvarı arkasında olsa bile Tailscale doğrudan bağlantı kurmaya çalışıyor. Bu olmazsa trafik DERP adlı aracı sunuculardan geçiyor. DERP sadece zaten şifrelenmiş paketleri iletiyor, içini göremiyor.

Tailscale’in istemci kodu büyük ölçüde açık kaynak. Kapalı olan parça koordinasyon sunucusu.

Headscale: O sunucuyu kendin çalıştır

Headscale tam olarak bu parçanın açık kaynak (BSD-3) bir benzeri. Cihazlarına yine resmî Tailscale uygulamasını kuruyorsun, sadece giriş adresi olarak kendi sunucunu gösteriyorsun. Linux, macOS, Windows, iOS ve Android destekleniyor. Bazılarında ek ayar gerekiyor.

İlginç bir ayrıntı: Bakımcılardan Kristoffer Dalby, Tailscale’de çalışıyor. Tailscale bunu açıkça yazıyor. Şirket Headscale’in yönünü belirlemiyor ama onun projeye vakit ayırmasını destekliyor. Şirkete göre sağlıklı bir Headscale, ev laboratuvarı kuranlara ve altyapısını kendi elinde tutmak isteyenlere bir yol açtığı için bütün Tailscale ekosistemine iyi geliyor. Headscale ise kendisini bilerek dar tutuyor: tek bir ağ (tailnet), kişisel kullanım ya da küçük bir açık kaynak ekip.

Videoda üç sunucu ile bir kurulum gösteriliyor: Docker Compose ile Headscale, topluluğun yaptığı bir web arayüzü ve önünde Caddy. Kullanıcı açılıyor, önceden üretilmiş bir anahtarla (pre-auth key) sunucular ağa katılıyor, basit bir ACL dosyasıyla SSH açılıyor. Videoya göre web arayüzü epey hatalıydı. Bir not: Headscale’in README’si container ve reverse proxy arkasında çalıştırmayı desteklemediğini ve önermediğini söylüyor. Container belgesi de topluluk tarafından yazılmış.

Ne kazanırsın, ne kaybedersin?

Kazandıkların: Cihaz sınırı yok, aylık ücret yok, verilerin ve anahtar dağıtımı senin sunucunda. Belgelere göre MagicDNS, subnet router, exit node, ACL, Tailscale SSH ve OpenID Connect ile giriş çalışıyor.

Kaybettiklerin:

  • Eksik özellikler. Funnel (servisi internete açma), Serve ve ağ trafiği kayıtları (network flow logs) yok. OIDC gruplarını ACL’de kullanamıyorsun. Birden fazla tailnet yok. Videoda “ephemeral” cihazların da olmadığı söyleniyor, ama Headscale’in özellik listesi bunları destekliyor.
  • Bakım senin işin. Belgeler herkese açık bir IP ve 443 portunda HTTPS istiyor. Veritabanı olarak SQLite öneriliyor. PostgreSQL sadece eski kurulumlar için duruyor.
  • “İnternetten bağımsız” kısmı yarım. Varsayılan ayarda Headscale, Tailscale’in herkese açık DERP sunucularını kullanıyor. Tam bağımsızlık için gömülü DERP’i açıp varsayılan listeyi kapatman gerekiyor. Belge bunun tek bir arıza noktası yarattığı konusunda uyarıyor.

Evdeki birkaç cihazı uzaktan bağlama fikrini uzaktan geliştirme yazımızda anlatmıştık. Kendi sunucunu barındırmanın genel bedelini de GitLab ve Gitea yazımızda konuştuk.

Sonra ne oldu?

Video, 4 Şubat 2026’da çıkan v0.28.0’ın hemen ardından yayımlandı. Bu sürüm etiketleri (tags) Tailscale’deki gibi bir kimlik türüne çevirdi. 17 Haziran’daki v0.29.0 büyük adımdı: Tailscale’in grants kurallarını, onay isteyen SSH erişimini ve ilke dosyası testlerini getirdi. En az desteklenen istemci sürümü de v1.80.0 oldu. Son sürüm 13 Ekim’de çıkan v0.29.5. Funnel, Serve ve flow logs hâlâ listede eksik görünüyor.

Düşün

  • Cihazlarını birbirine bağlayan sunucu çökerse ne kaybedersin? Bunu kendin mi taşımak istersin, bir şirkete mi bırakırsın?
  • Kendi sunucunu kurmanın sana kazandırdığı şey para mı, kontrol mü, yoksa öğrenmek mi?

Videoyu izle

Tıklayınca video YouTube'dan yüklenir; o ana kadar bu sayfa YouTube'a hiçbir istek göndermez.
Kaynaklar (10, İngilizce)

Kendi cümlelerimizle yazılmış bir özettir, çeviri değildir. Tüm kaynaklar yukarıda.

Konu: Altyapı3 dkVideo: Better Stack

Docker Hardened Images ücretsiz oldu: Dockerfile'ının ilk satırı neden bu kadar önemli?

Docker, gereksiz parçaları çıkarılmış, root olmadan çalışan ve SBOM, imza, derleme kaydıyla gelen 'sertleştirilmiş' temel imajlarını Aralık 2025'te herkese ücretsiz ve Apache 2.0 lisansıyla açtı. Çoğu projede tek bir FROM satırını değiştirmek yetiyor, ama shell ve paket yöneticisi olmadığı için birkaç alışkanlığı değiştirmen gerekiyor.