2 puan yazan GN⁺ 2025-04-04 | 1 yorum | WhatsApp'ta paylaş
  • Headscale, Tailscale kontrol sunucusunun açık kaynaklı ve self-hosted bir uygulamasını sunan bir projedir; self-hoster'ları ve hobi geliştiricilerinin proje/lab ortamlarını hedefler
  • Tailscale, WireGuard tabanlı modern bir VPN'dir ve NAT traversal kullanarak ağdaki bilgisayarlar arasında bir overlay network gibi çalışır
  • Tailscale'in kontrol sunucusu, düğümlerin WireGuard açık anahtar değişimini, istemci IP atamasını, kullanıcı sınırları oluşturmayı, kullanıcılar arasında makine paylaşımını ve düğümlerin duyurduğu rotaları görünür kılmayı üstlenir
  • Headscale, kişisel kullanım veya küçük açık kaynak organizasyonları için uygun, kapsamı dar tutulmuş bir tek Tailscale ağı (tailnet) uygulaması sunar
  • Proje, Tailscale Inc. ile ilişkili değildir ve Headscale'i çalıştırmak için reverse proxy ve container kullanımını desteklemez veya önermez

Headscale'in amacı ve kapsamı

  • Headscale, Tailscale kontrol sunucusuna self-hosted, açık kaynak bir alternatif olmayı hedefler
  • Hedef kullanıcılar self-hoster'lar, hobi geliştiricileri ve kişisel proje/lab ortamı kullanıcılarıdır
  • Uygulamanın kapsamı dar tutulmuştur ve tek bir tailnet sağlar
    • Kişisel kullanım için uygundur
    • Küçük açık kaynak organizasyonları için de uygundur

Tailscale ve kontrol sunucusunun rolü

  • Tailscale, WireGuard üzerine kurulu modern bir VPN'dir
  • Tailscale, ağdaki bilgisayarlar arasında bir overlay network gibi çalışır ve NAT traversal kullanır
  • Tailscale'de bazı GUI istemcileri ve kontrol sunucusu dışında tüm bileşenler açık kaynaktır
    • İstisna olarak belirtilen GUI istemcileri, Windows ve macOS/iOS gibi kapalı kaynak işletim sistemlerine yönelik istemcilerdir
  • Kontrol sunucusu, Tailscale ağ düğümleri arasında WireGuard açık anahtar değişiminin yapıldığı nokta olarak çalışır
    • İstemci IP adresleri atar
    • Kullanıcılar arasında sınırlar oluşturur
    • Kullanıcılar arasında makine paylaşımını mümkün kılar
    • Düğümlerin duyurduğu rotaları görünür kılar
  • Tailscale network, yani tailnet, Tailscale'in bireysel kullanıcılara veya organizasyonlara atadığı özel ağdır

Dokümantasyon ve sürüm notları

Çalıştırma ve derleme

  • Headscale'i çalıştırmak için reverse proxy ve container kullanımı desteklenmez veya önerilmez
  • Çalıştırma yöntemi için resmî dokümantasyona bakılması önerilir
  • NixOS kullanıcıları için modül nix/ dizininde bulunur
  • main dalının geliştirme derlemeleri container image ve binary olarak sunulur

Proje ilişkisi ve katkı

  • Bu proje Tailscale Inc. ile ilişkili değildir
  • Headscale'in aktif maintainer'larından biri Tailscale tarafından istihdam edilmektedir ve çalışma saatlerinde projeye katkıda bulunabilir
    • Bu maintainer'ın katkıları diğer maintainer'lar tarafından incelenir
  • Maintainer'lar, self-hoster, power user ve hobi geliştirici topluluklarını desteklerken sürdürülebilir bir proje oluşturma ilkesi doğrultusunda proje yönünü birlikte belirler
  • Katkı sunacakların CONTRIBUTING.md dosyasını okuması gerekir

Geliştirme ortamı ve iş akışı

  • Katkı için güncel Go ve Buf gereklidir
    • Buf, Protobuf üreticisi olarak kullanılır
  • Geliştirme ortamı kurulumu için Nix kullanılması önerilir
    • nix develop çalıştırıldığında gerekli araçlar kurulur ve bir shell sağlanır
    • Bu yöntem, Headscale maintainer'larıyla aynı geliştirme ortamını garanti eder
  • Go kodu golangci-lint ile lint edilir, golines ve gofumpt ile formatlanır
    • golines genişliği 88 olarak ayarlanmıştır
    • Commit öncesinde make lint ve make fmt çalıştırılması önerilir
  • Proto kodu buf ile lint edilir ve clang-format ile formatlanır
  • Dokümanlar mdformat ile, Markdown·YAML ve diğer dosyalar ise prettier ile formatlanır
  • proto/ değiştiğinde Protobuf'tan Go kod üretiminin yeniden yapılması gerekir
    • Komut: make generate
    • gen/ değişikliklerinin, incelemeyi kolaylaştırmak için ayrı bir commit olarak eklenmesi önerilir
  • Test ve derleme sırasıyla make test ve make build ile çalıştırılır
  • Önerilen iş akışı, nix develop sonrasında make test ve make build çalıştırmaktır
    • Bağımlılıkları doğrudan yönetenler Make'i doğrudan kullanabilir
    • Gerekli araçlar yoksa Makefile uyarı verir ve nix develop çalıştırılmasını önerir
    • Kullanılabilir hedefler make help ile görülebilir

1 yorum

 
GN⁺ 2025-04-04
Hacker News görüşleri
  • Birkaç ayda bir bu depoya geri dönüp Tailnet lock nihayet çalışıyor mu, bu arada biri güvenlik denetimi yaptı mı diye bakıyorum
    Ne yazık ki ikisinde de bir ilerleme yok gibi görünüyor; bu yüzden bunu kendi altyapımın çekirdek bileşeni olarak ne kadar güvenle kullanabileceğimden giderek daha az emin oluyorum
    Tailscale SaaS’in temel vaadi, güvenlik duvarını aşan bir tünel oluşturması ve kullanıcının bu tünel üzerinden neyin yönlendirileceğini sezgisel ve entegre bir şekilde kontrol edebilmesidir
    Headscale güvenlik duvarını aşma ve gelişmiş NAT geçişi işini iyi yapıyor gibi görünüyor, ancak az önce aştığı güvenliği telafi edecek kadar kendi güvenliğini sağlayıp sağlayamadığı soru işareti
    Kullanıcının, kontrol sunucusunun istemcilere ne yapmalarını söylediğini anlama ya da reddetme imkânı yoksa ve sunucu kodu için de hiçbir güvenlik denetimi yoksa, bu oldukça cüretkâr bir tercih gibi görünüyor

    • Tailnet lock, Headscale’de Tailscale’e kıyasla çok daha az önemli görünüyor. Çünkü Headscale altyapısını doğrudan siz kontrol ediyorsunuz
    • Headscale’in bu özellikleri gerçekten kendisinin mi uyguladığını merak ediyorum
      Ben bunun Tailscale’in temel arka uç servislerinin üzerine oturan bir kontrol katmanı olduğunu sanıyordum; yoksa bağlantıları yeni bir şekilde aracılık ederek mi kuruyor?
      ZeroTier’i oldukça sık kullanıyorum ama Tailscale’e pek aşina değilim, o yüzden bariz bir soru olabilir
    • Bakımcılarından biri artık Tailscale’de çalışıyor
    • Bununla ilgili olarak https://github.com/juanfont/headscale/issues/2416 bağlantısına bakabilirsiniz
  • Kendi kendine barındırılan orkestrasyon sunucularıyla ilgileniyorsanız Netbird’e de bakmaya değer
    Benzer bir araç; sunucusu da açık kaynak, kendi kendine barındırılan kontrol sunucusu için iyi bir GUI sunuyor ve ücretli sürüm özellikleri de mevcut
    https://netbird.io/knowledge-hub/tailscale-vs-netbird

    • Headscale ile karşılaştırınca Netbird’de gerçekten çok fazla hareketli parça var
      Sağlam, güçlü ve özellik açısından zengin görünüyor; ancak Headscale’i self-host etmek çok daha basit ve daha az gereksinim istiyor
    • Tailscale’den Netbird’e yavaş yavaş geçiyorum; Tailscale’in tüm CGNAT yolunu sahiplenmeye çalışan garip davranışını saymazsak gayet iyi çalışıyor
      Şimdilik Tailscale’i de çalıştırmaya devam ediyorum ama giderek onu bırakıp tamamen Netbird’e geçmeye yaklaşıyorum
    • Netbird kullanmak istiyorum ama Tailscale’in tsnet özelliği gibi, bir Go ikilisine gömülebilen bir özellik hâlâ yok
      İlgili GitHub sorunu burada
      https://github.com/netbirdio/netbird/issues/1103
    • IPv6 olmaması gerçekten ölümcül bir eksik: https://github.com/netbirdio/netbird/issues/46
    • Netbird’ün de Tailscale gibi gelişmiş NAT geçişi sağlayıp sağlamadığını merak ediyorum
  • Başlığa proje adı olan Headscale’i eklemek iyi olur
    Headscale, HN’de birkaç kez paylaşılmış bir proje

  • Headscale örnekler arası eşleme/federasyon desteklese harika olurdu. ACL yeniden çalışmasından sonra gelebilir
    Temel sorunlardan biri adres çakışması
    Öneri şu: ağı, benzersiz yerel adres (ULA) aralığında IPv6-only bir overlay ağ olarak tanımlamak ve kalan 121 biti, cihaz adresleri için alt 20 bit (yaklaşık 1 milyon adet) ile sunucu açık anahtar hash’i için üst 101 bit arasında bölmek
    Ardından başka örneklerin açık anahtarlarını ekleyip federasyon kurar, düğümler arası iletişimi de politika ve ACL’lerle yönetirsiniz
    Bence iyi bir fikir ama 2023’te gündeme getirdiğimde bakımcı kradalby bunun kapsam dışı olduğunu söylemişti: https://github.com/juanfont/headscale/issues/1370

  • Headscale’i yarım yıldır memnuniyetle kullanıyorum
    O kadar iyi ki, eskiden Tailscale ağı olmadan nasıl yaşadığımı bilmiyorum
    OpenBSD için paketlenmiş durumda ve ben bu paketi sunucu olarak kullanıyorum

  • Headscale’i seviyorum; az önce prodüksiyona aldım ve gayet iyi çalışıyor

    • Headscale’i 2,5 yıldır çalıştırıyorum ve oldukça iyi sonuç verdi
      Giriş için Gmail alan adını kullanıyorum; kullanıcıların kendi cihazlarını kendilerinin kaydedebilmesi büyük bir avantaj
      Eski OpenVPN’de operasyon ekibinin sertifikaları ve yapılandırmayı elle dağıtması gerekiyordu
      Tek dezavantaj, kullanıcıların yanlışlıkla kendi sunucumuz yerine Tailscale giriş sunucusuna bağlanıp sonra neden hizmetlere erişemediklerini anlamaya çalışmaları
      Kullanıcı grupları üzerinden erişilebilen hizmetler yapılandırıyorum
      Hâlâ eski bir Headscale sürümü kullanıyorum çünkü yeni kontrol düzlemine taşımam gereken entegrasyonlar var
      headscale node list | wc çıktısına göre yaklaşık 250 düğüm var ve çoğu sunucu
      Tailscale’in yönlendirme tablosuna ve güvenlik duvarı kurallarına sihirli şekilde dokunmasını pek sevmiyorum ama genel olarak sorun olmadı ve oldukça iyi çalıştı
    • Bunu tüm şirket için iç hizmet olarak dağıttığınız anlamına mı geliyor?
  • Birçok kullanım senaryosunda, örneğin mobil erişim veya macOS GUI'de, Headscale kullanabilmek için resmi Tailscale istemcisinin kontrol sunucusunu ayarlayabilme özelliğini koruması gerekir
    Tailscale'de kaçınılmaz kalite düşüşünün başladığı anda bu özellik ortadan kalkacaktır
    Bunu, şu anda Tailscale'den çok memnun bir müşteri olarak söylüyorum; ancak geçmişte başka şirketler satıldığında ya da girişim sermayesi tükendiğinde bunu defalarca yaşamış biri olarak söylüyorum

    • Açık kaynak olmayan işletim sistemlerindeki GUI kısmı dışında, Tailscale istemcilerinin çoğu açık kaynak değil mi?
    • Doğru hatırlıyorsam Tailscale bir yerde, Headscale'in aksine gelire olumlu katkı sağladığını söylemişti
      Bu mantıklı. Headscale çoğunlukla homelab kullanıcıları ve küçük hobi kullanıcıları tarafından kullanılıyor ve PulseSecure, Cisco AnyConnect, GlobalProtect ile değil; self-hosted OpenVPN veya WireGuard ile rekabet ediyor
      Boş zamanlarında yeni teknolojileri seven ama altyapı üzerindeki kontrolü bırakmak istemeyen insanlara Tailscale'i tanıtmanın bir yolu
      Bu insanlar sonra Tailscale konusundaki uzmanlıklarını ve heyecanlarını işyerlerine taşıyor
      Şirketler, IT altyapısını yönetmek temel yetkinlikleri olmadığı sürece bunu pek yapmak istemez
      Elbette bazı şirketler Tailscale'in asıl ürünü yerine Headscale'i seçebilir, ancak şirket ölçeği ve tutarlar düşünüldüğünde muhtemelen azınlıkta kalırlar
      Bu, gelir maliyetine daha yakın; Facebook reklamlarından ya da Silikon Vadisi yol kenarı billboard'larından çok farklı değil
    • Tailscale'de en memnun olmadığım nokta istemci, özellikle de mobil istemcinin pil kullanımı
      İşte Tailscale kullanamamamızın nedeni, trafiğin bizim kontrol edemediğimiz sunucular üzerinden yönlendirilmesi
      İşte Tailscale'i gerçekten kullanmak isterdim ve pek çok sorunu çözerdi
      Port açmamız gerekiyorsa buna katlanabilirim ama o port üzerinden trafiğin tünellenmesi beni ciddi şekilde endişelendiriyor
  • İlginç görünüyor. WireGuard + OpenWrt kurulumuna kıyasla ne gibi bir katma değer sunduğunu merak ediyorum

    • Cihazlar, karmaşık NAT arkasında olsalar bile, manuel yapılandırma olmadan birbirlerine peer-to-peer bağlanır
      Merkezi olarak yönetilen ACL kısıtlamaları altında sadece çalışır
      İnsanlar bazen Tailscale'i “sadece bir WireGuard orkestratörü” diye küçümsüyor ama gerçekte bundan çok daha fazlası
      Ürün açısından bakıldığında WireGuard sadece bir uygulama ayrıntısı
    • Bu bir mesh VPN, yani peer'ler doğrudan iletişim kuruyor, dolayısıyla ek gecikme yok
      Ben geçmişte Headscale UI'ın fazla temel olduğunu düşündüğüm için Netbird'ü seçmiştim ama birkaç yıl içinde iyileşmiş olabilir
    • Tailscale'in değer önerisi, biraz teknik bilgisi olan birinin tek başına kurup yönetebileceği bir WireGuard olması
      Çok sayıda istemcide çalışıyor ve benim Apple TV'lerim de Tailscale ağına bağlı
      Kurulum yaklaşık 1 dakika sürdü ve ağ geçidi görevi de görebiliyor
    • Sabit IP'si olmayan ya da ev ağında bir şeyin dinlemesini istemeyen insanlar da var
      Tailscale veya dışarıda barındırılan bir Headscale ile bu şekilde kullanılabilir
  • Tailscale koordinasyon sunucusu ele geçirilirse ve Tailnet lock açıksa, cihazlarımın tehlikeye girme riski ne kadar olur diye merak ediyorum