00:00:00Ini adalah Headscale, versi Tailscale gratis dan sumber terbuka yang bisa Anda instal di server mana pun,
00:00:06memberi Anda kendali penuh atas jaringan terenkripsi Anda jika internet mati atau Tailscale tiba-tiba menaikkan harga mereka.
00:00:13Tapi yang aneh adalah Headscale dibangun oleh seorang karyawan Tailscale.
00:00:18Kenapa mereka membayar seseorang untuk membangun kompetitor mereka sendiri?
00:00:22Tekan tombol subscribe dan mari kita cari tahu.
00:00:25Mari kita lihat sekilas cara kerja Headscale sebelum kita masuk ke detailnya.
00:00:30Oke, jadi saat ini saya punya tiga server Hetzner, satu untuk kontrol plane utama Headscale dan dua node di sini yang ingin saya hubungkan satu sama lain.
00:00:40Jadi kedua server ini sekarang menjadi bagian dari jaringan terenkripsi saya.
00:00:44Jika saya jalankan perintah ini, karena semuanya berjalan di Docker, saya bisa melihat node yang saya punya saat ini, yaitu Ubuntu Test di sini dan Ubuntu Test 2.
00:00:53Dan ini adalah alamat IP yang bisa saya gunakan untuk menghubungkannya.
00:00:56Sekarang, mari kita hubungkan kedua node ini dari satu sama lain.
00:00:59Pertama, saya akan salin alamat IP ini.
00:01:02Dan sekarang di dalam Ubuntu Test 2, saya akan masuk lewat SSH ke root.
00:01:07Ya, saya seharusnya tidak menggunakan root, tapi ini hanya untuk pengujian.
00:01:09Dan itu adalah alamat IP dari Headscale.
00:01:11Jika saya tekan enter dan bersihkan layar, seperti yang Anda lihat, saya sudah berada di dalam Ubuntu Test 1.
00:01:17Jadi saya masuk ke Ubuntu Test 1 dari Ubuntu Test 2, dan saya bisa keluar untuk kembali ke Ubuntu Test 2.
00:01:24Dan saya bisa melakukan hal yang sama di Ubuntu Test 1 jika saya melakukan SSH root dan menempelkan alamat IP Ubuntu Test 2.
00:01:31Jika saya bersihkan layar, kita bisa melihat saya berada di Ubuntu Test 2 dari Ubuntu Test 1.
00:01:36Tapi jika saya berada di luar tailnet, misalnya saya buka tab baru di root Mac saya dan melakukan SSH root ke alamat IP Ubuntu Test 2.
00:01:48Anda bisa melihat koneksinya hanya menggantung karena saya berada di luar tailnet.
00:01:52Seperti yang baru saja Anda lihat, Headscale memberi Anda akses penuh ke jaringan Anda.
00:01:56Anda bisa mengontrol setiap detail kecil dan menambahkan node sebanyak yang Anda mau tanpa terikat vendor tertentu.
00:02:03Dan ini bisa bekerja tanpa internet jika Anda menghubungkannya ke NAS pada Raspberry Pi lama.
00:02:08Tapi pengaturannya agak sedikit rumit.
00:02:11Sebenarnya, biarkan saya tunjukkan cara kerjanya.
00:02:13Sekarang saya sudah membuat server baru bernama Ubuntu Test 3, dan saya akan membuat tailnet baru atau server terenkripsi baru dengan pengguna baru yang akan menghubungkan dua node.
00:02:24Jadi Ubuntu Test 3 dan Ubuntu Test 1, hanya untuk tujuan pengujian.
00:02:29Di dalam kontrol plane Headscale saya, Headscale sudah terinstal, tapi saya akan menjelaskan proses pembuatannya.
00:02:37Saat ini ada tiga kontainer Docker yang sedang berjalan.
00:02:40Satu adalah Headscale UI, satu Headscale, dan satu lagi Caddy.
00:02:45Jika kita melihat file Docker compose-nya, kita bisa melihat konfigurasi ini sangat mirip dengan yang ada di dokumentasi Headscale untuk Docker compose.
00:02:56Meskipun saya telah mengubah beberapa hal seperti versi Headscale dan jalur direktori saya.
00:03:03Lalu saya juga punya kontainer untuk Headscale UI, yang merupakan salah satu dari banyak web UI sumber terbuka yang bisa Anda gunakan dengan Headscale.
00:03:11Saya akan menunjukkannya nanti.
00:03:13Kemudian ada Caddy yang bertindak sebagai reverse proxy.
00:03:16Saya akan menyertakan tautan ke file Docker compose khusus ini di deskripsi jika Anda tertarik.
00:03:21Juga di direktori ini, ada folder lib dan folder config.
00:03:26Folder lib, seperti yang Anda lihat di sini, utamanya untuk menyimpan database SQLite yang mengontrol informasi pengguna, node, DNS, dan banyak hal lainnya.
00:03:36Tapi di bagian konfigurasi, Anda bisa mengubahnya ke database Postgres jika tidak ingin menggunakan SQLite.
00:03:43Lalu di direktori config, ini berisi konfigurasi Tailscale dan kebijakan access control list dalam file JSON yang mudah dibaca.
00:03:52Kita akan membahas ini nanti, tapi mari kita lihat ini dulu, yang bisa Anda dapatkan dari dokumentasi Tailscale atau bahkan mengunduhnya langsung ke server Anda, seperti yang saya lakukan.
00:04:01Jika kita melihat contoh konfigurasi di GitHub, kita bisa melihat semua yang bisa diubah mulai dari server hingga prefiks dan menambahkan lokasi file kebijakan kita.
00:04:11Ini sangat mirip dengan konfigurasi saya, tapi yang saya ubah hanyalah URL server, yang terhubung ke domain Cloudflare agar node di jaringan saya tahu ke mana harus mencari node lainnya.
00:04:23Saya juga menambahkan jalur ke lokasi kebijakan saya dan hanya itu saja.
00:04:28Domainnya adalah domain Cloudflare biasa dengan rekam A yang tertuju ke alamat IP kontrol plane Headscale saya di bawah subdomain headscale.
00:04:37Dengan begitu, jika saya mengedit file caddy, Anda bisa melihat ada dua URL yang digunakan, satu untuk Headscale UI di bawah /web dan satu untuk proxy headscale.
00:04:49Setelah hal-hal itu siap, langkah pertama adalah membuat pengguna baru, yang bisa kita lakukan dengan mengetikkan perintah ini.
00:04:56Saya akan membuat pengguna bernama Tom, tapi ini bisa dinamai apa saja.
00:05:00Sekarang pengguna sudah dibuat, kita bisa menjalankan perintah list user untuk melihat semua pengguna dan kita punya pengguna baru di sini dengan ID 6.
00:05:08Tapi sekarang pengguna kita belum memiliki node yang terhubung.
00:05:11Jadi mari kita berikan beberapa node untuk Tom.
00:05:13Di dalam Ubuntu test 3, server baru yang saya buat, hal pertama yang harus dilakukan adalah menambahkan klien Tailscale, yang bisa dilakukan dengan menjalankan perintah ini di server kita.
00:05:23Sekarang ini memberi kita akses ke biner Tailscale.
00:05:27Catatan, jika Anda bukan pengguna root, Anda mungkin harus menggunakan sudo untuk menjalankan Tailscale.
00:05:31Tapi sebelum kita menjalankan perintah apa pun untuk mengaktifkan Tailscale atau login, kita perlu melakukannya dengan cara khusus agar bisa bekerja dengan Headscale.
00:05:38Untuk melakukannya, kita harus membuat beberapa kunci pra-otentikasi, yang perintahnya bisa ditemukan di halaman panduan awal dokumentasi Headscale.
00:05:46Saya akan gulir ke bawah dan menyalin perintah ini.
00:05:49Lalu di dalam kontrol plane Headscale saya, saya akan mengetik docker exec, dan tempel perintahnya.
00:05:54Di bagian yang tertulis ID pengguna, kita akan masukkan ID pengguna Tom, yaitu 6.
00:05:59Dan sebelum itu, saya harus menambahkan kata headscale kedua karena kita akan masuk ke dalam kontainer headscale.
00:06:04Dan sekarang kita sudah punya kunci pra-otentikasinya.
00:06:07Lalu kita akan salin perintah ini dan tempel di Ubuntu test 3.
00:06:11Kita kemudian salin kunci pra-otentikasi kita dan tempel di sini.
00:06:15Dan kemudian kita harus mengubah server login-nya ke server headscale kita, yang sudah kita konfigurasi menjadi headscale.pandor.css.
00:06:23Nama Pandora sudah ada yang pakai, kalau tidak saya pasti sudah mengambilnya.
00:06:26Sekarang jika kita tekan enter, seharusnya ada node baru yang ditambahkan ke jaringan headscale kita.
00:06:31Jadi jika kita kembali ke kontrol plane dan menjalankan daftar node, kita akan melihat Ubuntu test 3 di sini, milik pengguna Tom dengan alamat IP ini.
00:06:44Sekarang mari kita tambahkan Ubuntu test 1 ke pengguna Tom.
00:06:47Tapi pertama-tama saya akan menghapus node Ubuntu test yang sudah ada dengan ID 1, dan saya akan menghapusnya secara paksa untuk melewati konfirmasi apa pun.
00:06:56Setelah selesai, saya akan membuat kunci pra-otentikasi lainnya dan menambahkannya ke Ubuntu test, jangan lupa mengaktifkan SSH dengan flag SSH karena itu sudah tersedia.
00:07:06Mari kita pergi ke Ubuntu test 3 dan juga mengatur SSH, yang fungsinya untuk mengaktifkan kemampuan koneksi via SSH.
00:07:13Sekarang, jika saya lihat daftar node yang tersedia, saya punya Ubuntu test 1 di bawah sini dan Ubuntu test 3, keduanya atas nama Tom.
00:07:20Jadi mari kita hubungkan keduanya.
00:07:21Saya akan ambil IP untuk Ubuntu test 3 dan masuk ke Ubuntu test 1, lalu jalankan SSH root dengan IP tersebut.
00:07:30Dan setelah saya aktifkan kuncinya, kita bisa lihat saya sudah masuk ke Ubuntu test 3 dari Ubuntu test 1.
00:07:35Dan saya juga bisa melakukan hal yang sama dari Ubuntu test 3 ke Ubuntu test 1.
00:07:41Nah, jika Anda mengikuti langkah-langkah saya dengan tepat, ada kemungkinan besar ini tidak akan berhasil karena Anda perlu menambahkan kebijakan kontrol akses.
00:07:49Jadi biarkan saya tunjukkan milik saya.
00:07:51Jika saya bersihkan layar dan masuk ke direktori headscale saya, kita bisa melihat di folder konfigurasi ada file JSON ACL yang mudah dibaca.
00:08:01Jika saya masuk ke dalamnya, ini adalah konfigurasi yang sangat sederhana yang pada dasarnya menerima sumber apa pun, jadi siapa pun dari jaringan saya ke tujuan atau port mana pun.
00:08:11Dan juga di bawah bagian SSH, ia menerima node apa pun di dalam tailnet saya dan membiarkan mereka terhubung ke node lain via SSH tanpa persetujuan, tapi khusus untuk pengguna root.
00:08:24Tentu saja, berdasarkan jaringan dan situasi Anda, Anda mungkin ingin memperketat ini atau membuatnya lebih aman agar node tertentu hanya bisa terhubung ke node lain di port tertentu.
00:08:33Tapi ini adalah konfigurasi yang sangat simpel untuk membantu Anda memulai.
00:08:37Dan sekali lagi, saya akan sertakan tautannya di deskripsi.
00:08:40Sekarang, Anda mungkin bertanya-tanya bagaimana dengan Headscale UI?
00:08:43Apakah itu membuat seluruh proses ini jadi lebih mudah?
00:08:45Saya akan bilang ya dan tidak.
00:08:47Biar saya tunjukkan.
00:08:48Jadi ini adalah URL untuk Headscale UI saya, dan saat ini Anda bisa melihat kedua pengguna saya, Tess dan Tom, dengan beberapa informasi tentang mereka.
00:08:57Ada kunci-kunci dan node yang terhubung agar ini bisa berfungsi.
00:09:01Awalnya, Anda harus menambahkan kunci API Headscale, yang bisa didapatkan dengan menjalankan perintah ini.
00:09:06Tapi masalah yang saya hadapi adalah pada tampilan perangkat.
00:09:09Seperti yang Anda lihat, tidak banyak informasi di sini, dan ada masalah dengan konsol berupa kesalahan tipe TypeScript, yang seharusnya bukan salah saya karena saya tidak mengubah kode sumbernya.
00:09:22Tapi pada titik ini, aplikasinya cenderung membeku, jadi tidak ada yang berfungsi.
00:09:26Padahal saya seharusnya bisa menambahkan perangkat baru dari sini dan mengubah beberapa konfigurasi juga.
00:09:32Tapi karena sangat banyak bug, saya merasa ini kurang berguna.
00:09:35Sekarang ada banyak UI Headscale lainnya, beberapa di antaranya bahkan memudahkan penambahan kebijakan kontrol akses.
00:09:42Tapi menurut pendapat saya pribadi, saya belum menemukan UI Headscale yang sangat berguna.
00:09:46Jadi ya, pengaturannya memang agak rumit.
00:09:49Oke, sangat rumit malahan.
00:09:51Seseorang tanpa latar belakang teknis atau bahkan pengembang junior akan kesulitan mengaturnya sendiri.
00:09:57Itulah alasan mengapa tim Tailscale mengizinkan karyawan mereka mengerjakan ini, karena saat ini tidak menimbulkan ancaman besar bagi perusahaan mereka.
00:10:07Maksud saya, hanya butuh seseorang menggunakan Claude Opus untuk membuat UI yang sangat bagus di sekitarnya dan mereka bisa menciptakan sesuatu yang keren, yang mungkin bisa terhambat oleh lisensi ini.
00:10:18Tapi setelah semuanya berjalan, Headscale bekerja dengan sangat luar biasa.
00:10:22Meskipun ada beberapa fitur yang belum didukung, seperti perintah funnel dan serve yang bisa digunakan untuk mengekspos server ke publik atau hanya ke jaringan Anda.
00:10:32Ini juga belum mendukung beberapa tailnet, node efemeral, dan log aliran jaringan asli.
00:10:38Tapi untuk sebuah alat sumber terbuka, ini benar-benar mengesankan.
00:10:42Dan jika saya sampai pada tahap di mana saya ingin OpenClaw saya berjalan sepenuhnya offline dengan LLM lokal, maka saya mungkin akan mempertimbangkannya.