2 poin oleh GN⁺ 2025-04-04 | 1 komentar | Bagikan ke WhatsApp
  • Headscale adalah proyek yang mengimplementasikan server kontrol Tailscale secara open-source dan self-hosted, ditujukan untuk self-hoster serta lingkungan proyek dan lab para pengembang hobi
  • Tailscale adalah VPN modern berbasis WireGuard, dan menggunakan NAT traversal agar berfungsi seperti jaringan overlay di antara komputer-komputer dalam jaringan
  • Server kontrol Tailscale bertanggung jawab atas pertukaran public key WireGuard node, alokasi IP klien, pembuatan batas antar pengguna, berbagi mesin antar pengguna, serta mengekspos route yang diiklankan oleh node
  • Headscale menyediakan implementasi satu jaringan Tailscale (tailnet) dengan cakupan sempit, cocok untuk penggunaan pribadi atau organisasi open-source kecil
  • Proyek ini tidak terkait dengan Tailscale Inc., dan menjalankan Headscale tidak mendukung maupun merekomendasikan penggunaan reverse proxy dan container

Tujuan dan cakupan Headscale

  • Headscale bertujuan menjadi alternatif open-source yang bisa di-self-host untuk server kontrol Tailscale
  • Pengguna sasarannya adalah self-hoster, pengembang hobi, serta pengguna proyek pribadi dan lingkungan lab
  • Cakupan implementasinya dibuat sempit, yaitu menyediakan satu tailnet
    • Cocok untuk penggunaan pribadi
    • Juga cocok untuk organisasi open-source kecil

Peran Tailscale dan server kontrol

  • Tailscale adalah VPN modern yang dibangun di atas WireGuard
  • Tailscale bekerja seperti jaringan overlay di antara komputer-komputer dalam jaringan, dan menggunakan NAT traversal
  • Di Tailscale, semua komponen bersifat open-source kecuali sebagian klien GUI dan server kontrol
    • Klien GUI yang disebut sebagai pengecualian adalah klien untuk OS proprietary seperti Windows dan macOS/iOS
  • Server kontrol berfungsi sebagai titik pertukaran public key WireGuard antar node jaringan Tailscale
    • Mengalokasikan alamat IP klien
    • Membuat batas antar pengguna
    • Memungkinkan berbagi mesin antar pengguna
    • Mengekspos route yang diiklankan oleh node
  • Jaringan Tailscale, yaitu tailnet, adalah jaringan privat yang dialokasikan Tailscale untuk pengguna individu atau organisasi

Catatan dokumentasi dan versi

Menjalankan dan membangun

  • Menjalankan Headscale tidak mendukung maupun merekomendasikan penggunaan reverse proxy dan container
  • Cara menjalankannya diarahkan untuk melihat dokumentasi resmi
  • Modul untuk pengguna NixOS berada di direktori nix/
  • Build pengembangan dari branch main tersedia sebagai image container dan binary

Relasi proyek dan kontribusi

  • Proyek ini tidak terkait dengan Tailscale Inc.
  • Salah satu maintainer aktif Headscale dipekerjakan oleh Tailscale, dan dapat berkontribusi pada proyek ini selama jam kerja
    • Kontribusi maintainer tersebut ditinjau oleh maintainer lain
  • Para maintainer bersama-sama menentukan arah proyek berdasarkan prinsip membangun proyek yang berkelanjutan sambil mendukung komunitas self-hoster, pengguna antusias, dan pengembang hobi
  • Kontributor harus membaca CONTRIBUTING.md

Lingkungan pengembangan dan workflow

  • Kontribusi membutuhkan Go dan Buf versi terbaru
    • Buf digunakan sebagai generator Protobuf
  • Untuk menyiapkan lingkungan pengembangan, penggunaan Nix direkomendasikan
    • Menjalankan nix develop akan memasang tool yang diperlukan dan menyediakan shell
    • Cara ini memastikan lingkungan pengembangan yang sama dengan maintainer Headscale
  • Kode Go dilint dengan golangci-lint, dan diformat dengan golines, gofumpt
    • Lebar golines diatur ke 88
    • Disarankan menjalankan make lint dan make fmt sebelum commit
  • Kode Proto dilint dengan buf dan diformat dengan clang-format
  • Dokumentasi diformat dengan mdformat, sementara file lainnya seperti Markdown dan YAML diformat dengan prettier
  • Saat mengubah proto/, kode Go dari Protobuf harus digenerate ulang
    • Perintahnya adalah make generate
    • Perubahan pada gen/ disarankan dimasukkan sebagai commit terpisah agar review lebih mudah
  • Pengujian dan build masing-masing dijalankan dengan make test dan make build
  • Workflow yang direkomendasikan adalah menjalankan make test dan make build setelah nix develop
    • Jika mengelola dependensi secara langsung, Make bisa digunakan langsung
    • Makefile akan memberi peringatan jika tool yang diperlukan tidak ada dan menyarankan menjalankan nix develop
    • Target yang tersedia bisa dilihat dengan make help

1 komentar

 
GN⁺ 2025-04-04
Pendapat Hacker News
  • Setiap beberapa bulan saya kembali ke repositori ini untuk mengecek apakah Tailnet lock akhirnya sudah berfungsi, dan apakah selama itu ada yang melakukan audit keamanan
    Sayangnya, keduanya tampaknya tidak mengalami kemajuan, sehingga saya makin tidak yakin seberapa jauh saya bisa memercayai ini sebagai komponen inti infrastruktur saya
    Premis Tailscale SaaS adalah membuat tunnel yang melewati firewall, lalu memberi pengguna cara yang intuitif dan terpadu untuk mengontrol apa yang akan dirutekan melalui tunnel tersebut
    Headscale tampaknya berhasil dengan baik dalam bypass firewall dan NAT traversal tingkat lanjut, tetapi saya ragu apakah ia bisa menyediakan keamanan sendiri yang cukup untuk mengimbangi keamanan yang baru saja dilewati itu
    Jika pengguna tidak punya cara untuk memahami atau menolak apa yang diperintahkan server kontrol kepada klien, dan kode server sama sekali belum diaudit keamanannya, ini tampak seperti pilihan yang cukup berani

    • Tailnet lock tampaknya jauh kurang penting di Headscale dibandingkan di Tailscale. Karena kita mengontrol sendiri infrastruktur Headscale
    • Saya penasaran apakah Headscale benar-benar mengimplementasikan sendiri fitur-fitur itu
      Saya kira ini adalah lapisan kontrol di atas layanan backend dasar Tailscale; apakah ia memediasi koneksi dengan cara baru?
      Saya cukup sering memakai ZeroTier tetapi kurang familier dengan Tailscale, jadi ini mungkin pertanyaan yang jelas
    • Salah satu maintainer sekarang bekerja di Tailscale
    • Terkait hal itu, lihat https://github.com/juanfont/headscale/issues/2416
  • Kalau tertarik pada server orkestrasi yang di-host sendiri, Netbird juga layak dilihat
    Ini alat serupa, servernya juga open source, dan control server self-hosted-nya hadir dengan GUI yang cukup baik serta fitur-fitur dari versi berbayar
    https://netbird.io/knowledge-hub/tailscale-vs-netbird

    • Dibandingkan Headscale, Netbird punya sangat banyak komponen bergerak
      Tampak tangguh, kuat, dan kaya fitur, tetapi self-hosting Headscale jauh lebih sederhana dan kebutuhannya juga lebih sedikit
    • Saya sedang pelan-pelan pindah dari Tailscale ke Netbird, dan selain perilaku konyol Tailscale yang mengambil seluruh rute CGNAT, semuanya berjalan sangat baik
      Saat ini saya masih menjalankan Tailscale juga, tetapi makin dekat untuk menghentikannya dan beralih sepenuhnya ke Netbird
    • Saya ingin memakai Netbird, tetapi belum ada kemampuan untuk menyematkannya ke binary Go seperti tsnet milik Tailscale
      Isu GitHub terkait ada di sini
      https://github.com/netbirdio/netbird/issues/1103
    • Tidak adanya IPv6 adalah kelemahan yang benar-benar fatal: https://github.com/netbirdio/netbird/issues/46
    • Saya penasaran apakah Netbird juga melakukan NAT traversal secanggih Tailscale
  • Sebaiknya masukkan nama proyeknya, Headscale, di judul
    Headscale adalah proyek yang sudah beberapa kali muncul di HN

  • Akan keren kalau Headscale mendukung peering/federasi antarinstans. Mungkin setelah pengerjaan ulang ACL
    Salah satu masalah utamanya adalah konflik alamat
    Usulannya begini: tetapkan jaringan overlay khusus IPv6 dalam rentang Unique Local Address (ULA), lalu bagi 121 bit yang tersisa menjadi 20 bit bawah untuk alamat perangkat (sekitar 1 juta) dan 101 bit atas sebagai hash public key server
    Tambahkan public key dari instans lain untuk melakukan federasi, lalu kelola komunikasi antarnode dengan policy dan ACL
    Saya pikir ini ide bagus, tetapi ketika diajukan pada 2023, maintainer kradalby mengatakan itu di luar cakupan: https://github.com/juanfont/headscale/issues/1370

  • Saya sudah memakai Headscale dengan baik selama setengah tahun
    Sangat bagus, sampai-sampai saya tidak tahu bagaimana dulu bisa hidup tanpa jaringan Tailscale
    Ini sudah dipaketkan di OpenBSD, dan saya memakai paket itu sebagai server

  • Saya suka Headscale, dan baru saja memasangnya di production; berjalan sangat baik

    • Saya sudah mengoperasikan Headscale selama 2,5 tahun dan cukup bagus
      Untuk login kami memakai domain Gmail, dan keuntungan besarnya adalah pengguna bisa mendaftarkan perangkatnya sendiri
      Di OpenVPN dulu, tim operasi harus menyerahkan sertifikat dan konfigurasi secara langsung
      Satu-satunya kekurangan adalah ada pengguna yang tanpa sengaja terhubung ke server login Tailscale, bukan server kami sendiri, lalu bingung kenapa tidak bisa mengakses layanan
      Kami mengatur layanan yang bisa diakses berdasarkan grup pengguna
      Kami masih memakai Headscale versi lama, karena ada integrasi yang perlu di-porting ke control plane baru
      Berdasarkan headscale node list | wc, ada sekitar 250 node, dan sebagian besar adalah server
      Saya kurang suka Tailscale yang seperti sihir mengutak-atik routing table dan aturan firewall, tetapi secara umum itu bukan masalah dan berjalan cukup baik
    • Apakah maksudnya ini diterapkan sebagai layanan internal untuk seluruh perusahaan?
  • Untuk berbagai kasus penggunaan, misalnya akses mobile atau GUI macOS, klien Tailscale resmi harus tetap mempertahankan kemampuan untuk mengatur server kontrol agar Headscale bisa dipakai
    Begitu penurunan kualitas yang tak terhindarkan mulai terjadi di Tailscale, fitur ini akan hilang
    Saat ini saya pelanggan yang sangat puas dengan Tailscale, tetapi saya mengatakan ini dari posisi seseorang yang sudah berkali-kali kena dampaknya ketika perusahaan lain dijual atau kehabisan pendanaan ventura

    • Bukankah sebagian besar klien Tailscale adalah open source, kecuali bagian GUI pada sistem operasi yang bukan open source?
    • Kalau ingatan saya benar, sepertinya Tailscale pernah mengatakan di suatu tempat bahwa Headscale justru berdampak positif pada pendapatan
      Itu masuk akal. Headscale terutama dipakai oleh pengguna homelab dan pengguna hobi skala kecil, dan bersaing dengan OpenVPN atau WireGuard yang di-hosting sendiri, bukan dengan Pulsesecure, Cisco Anyconnect, atau GlobalProtect
      Ini menjadi jalur untuk memperkenalkan Tailscale kepada orang-orang yang suka teknologi baru di waktu luang, tetapi tidak ingin melepaskan kendali atas infrastrukturnya
      Orang-orang seperti itu kemudian membawa keahlian dan antusiasme Tailscale ke tempat kerja mereka
      Perusahaan biasanya tidak terlalu ingin mengelola infrastruktur IT kecuali itu merupakan kompetensi inti mereka
      Tentu sebagian perusahaan akan memilih Headscale alih-alih produk utama Tailscale, tetapi jika mempertimbangkan ukuran perusahaan dan nilainya, kemungkinan jumlahnya kecil
      Itu lebih mirip biaya pendapatan, tidak jauh berbeda dari iklan Facebook atau billboard di pinggir jalan Silicon Valley
    • Bagian yang paling saya keluhkan dari Tailscale adalah kliennya, khususnya penggunaan baterai pada klien mobile
      Alasan kami tidak bisa memakai Tailscale di kantor adalah karena traffic dirutekan melalui server yang tidak bisa kami kendalikan
      Saya benar-benar ingin memakai Tailscale di kantor, dan itu akan menyelesaikan banyak masalah
      Kalau harus membuka port, itu masih bisa saya terima, tetapi men-tunnel traffic melalui port itu sangat mengkhawatirkan
  • Kelihatannya menarik. Saya penasaran nilai tambah apa yang ada dibanding konfigurasi WireGuard + OpenWrt

    • Perangkat-perangkat dapat saling terhubung secara peer-to-peer tanpa konfigurasi manual, bahkan ketika berada di balik NAT yang rumit
      Semuanya berjalan begitu saja, dengan batasan ACL yang dikelola secara terpusat
      Kadang Tailscale diremehkan sebagai “sekadar orkestrator WireGuard”, tetapi kenyataannya jauh lebih dari itu
      Dari sudut pandang produk, WireGuard hanyalah detail implementasi
    • Karena ini mesh VPN, peer berkomunikasi langsung sehingga tidak ada latensi tambahan
      Dulu saya memilih Netbird karena merasa UI Headscale terlalu dasar, tetapi mungkin sudah membaik dalam beberapa tahun terakhir
    • Proposisi nilai Tailscale adalah WireGuard yang bisa disiapkan dan dikelola sendiri bahkan oleh orang yang cukup terbiasa dengan teknologi
      Ini berjalan di banyak sekali klien, dan Apple TV saya juga terhubung ke jaringan Tailscale
      Pengaturannya memakan waktu sekitar 1 menit dan juga bisa berperan sebagai gateway
    • Ada juga orang yang tidak punya IP statis atau tidak ingin ada sesuatu yang listening di jaringan rumahnya
      Dengan Tailscale atau Headscale yang di-hosting di luar, itu bisa dilakukan
  • Saya penasaran seberapa besar risiko perangkat saya disusupi jika server koordinasi Tailscale dibobol dan Tailnet lock dinyalakan