Headscale - Implementasi open-source self-hosted untuk server kontrol Tailscale
(github.com/juanfont)- 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
- Untuk melihat contoh konfigurasi yang sesuai dengan versi rilis yang digunakan, selalu pilih GitHub tag yang sama
- Branch
maindapat berisi perubahan yang belum dirilis - Dokumentasi tersedia dalam versi stabil dan versi pengembangan
- Daftar fitur diarahkan untuk dilihat di dokumen Features
- Cakupan dukungan klien dan sistem operasi diarahkan untuk dilihat di dokumen Client and operating system support
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
maintersedia sebagai image container dan binary- Untuk detail, lihat dokumen development builds
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 developakan memasang tool yang diperlukan dan menyediakan shell - Cara ini memastikan lingkungan pengembangan yang sama dengan maintainer Headscale
- Menjalankan
- Kode Go dilint dengan
golangci-lint, dan diformat dengangolines,gofumpt- Lebar
golinesdiatur ke 88 - Disarankan menjalankan
make lintdanmake fmtsebelum commit
- Lebar
- Kode Proto dilint dengan
bufdan diformat denganclang-format - Dokumentasi diformat dengan
mdformat, sementara file lainnya seperti Markdown dan YAML diformat denganprettier - 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
- Perintahnya adalah
- Pengujian dan build masing-masing dijalankan dengan
make testdanmake build - Workflow yang direkomendasikan adalah menjalankan
make testdanmake buildsetelahnix 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
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
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
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
Tampak tangguh, kuat, dan kaya fitur, tetapi self-hosting Headscale jauh lebih sederhana dan kebutuhannya juga lebih sedikit
Saat ini saya masih menjalankan Tailscale juga, tetapi makin dekat untuk menghentikannya dan beralih sepenuhnya ke Netbird
Isu GitHub terkait ada di sini
https://github.com/netbirdio/netbird/issues/1103
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
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 serverSaya kurang suka Tailscale yang seperti sihir mengutak-atik routing table dan aturan firewall, tetapi secara umum itu bukan masalah dan berjalan cukup baik
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
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
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
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
Dulu saya memilih Netbird karena merasa UI Headscale terlalu dasar, tetapi mungkin sudah membaik dalam beberapa tahun terakhir
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
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