# Tailscale: Mesh VPN untuk Server dan Homelab Anda

> Cara menghubungkan server, laptop, dan homelab menjadi satu jaringan privat dengan mesh WireGuard milik Tailscale, lalu self-host control plane-nya dengan Headscale.

URL: https://www.matthewswong.com/id/blog/tailscale-mesh-vpn-self-hosted/

- Author: Matthews Wong (https://www.matthewswong.com/id/about/)
- Published: 2026-07-09
- Updated: 2026-07-09
- Category: DevOps

Setiap developer pada akhirnya menghadapi masalah yang sama: database di sebuah VPS yang seharusnya tidak pernah tersentuh internet publik, NAS homelab di belakang router rumahan tanpa IP statis, dan laptop yang perlu menjangkau keduanya tanpa membuka satu pun port. VPN tradisional menyelesaikan ini dengan gateway pusat yang justru menjadi bottleneck dan titik kegagalan tunggal. Tailscale mengambil pendekatan yang sama sekali berbeda.

Tailscale membangun jaringan mesh di atas WireGuard, di mana setiap perangkat mendapat IP privat yang stabil dan berkomunikasi langsung dengan perangkat lain melalui terowongan terenkripsi, di mana pun perangkat itu secara fisik berada. Tulisan ini membahas cara instalasi di server dan homelab, mengunci lalu lintas dengan access control list, mengekspos seluruh subnet lewat node router, dan akhirnya menggantikan server koordinasi hosted milik Tailscale dengan instance Headscale yang di-self-host sendiri.

## Mengapa mesh lebih baik dari VPN hub and spoke

VPN klasik merutekan setiap paket melalui satu gateway. Gateway itu harus berskala mengikuti total trafik, menjadi satu-satunya hal yang bisa menjatuhkan seluruh jaringan jika gagal, dan menambah satu hop latensi pada setiap koneksi bahkan antara dua mesin yang berada di data center yang sama. Jaringan mesh membalik ini: server kontrol hanya menangani autentikasi dan pertukaran kunci publik, sementara data sesungguhnya berjalan peer to peer kapan pun jalur langsung tersedia.

- Koneksi peer to peer langsung berarti dua server di region yang sama saling berkomunikasi dengan hampir tanpa tambahan latensi, karena paket tidak pernah keluar dari segmen jaringan lokal.
- Tidak ada satu gateway pun yang bisa kelebihan beban, sehingga menambahkan seratus perangkat lagi ke tailnet tidak menurunkan throughput antar perangkat yang sudah terhubung.
- Jika server koordinasi sempat offline, koneksi peer yang sudah ada tetap berjalan karena kunci WireGuard sudah dipertukarkan dan disimpan secara lokal.

> Mulailah dengan menginstal Tailscale di tepat dua mesin, laptop rumah dan satu server cloud, lalu pastikan Anda bisa melakukan ping ke server melalui IP privat yang diberikan sebelum menambahkan apa pun lagi. Membuat mesh terkecil yang berfungsi lebih dulu membuat setiap langkah berikutnya, ACL, subnet route, self-hosting, jauh lebih mudah untuk di-debug.

## Menginstal Tailscale dan bergabung ke tailnet

Klien terinstal dengan cara yang sama di Linux, macOS, dan Windows, dan proses pertama akan memandu Anda melalui autentikasi berbasis browser ke penyedia identitas Anda. Setelah terautentikasi, perangkat diberi IP stabil pada rentang 100.64.0.0 hingga 100.127.255.255 yang tidak pernah berubah meski Anda bergabung kembali ke jaringan di kemudian hari. MagicDNS kemudian memberikan setiap perangkat hostname yang mudah dibaca seperti homelab-nas titik nama tailnet Anda, sehingga Anda hampir tidak pernah perlu menghafal alamat IP sama sekali.

## Menjangkau seluruh subnet dengan subnet router

Menginstal klien di setiap perangkat dalam homelab tidak selalu praktis, terutama untuk perangkat embedded, printer, atau appliance NAS yang tidak menjalankan sistem operasi umum. Subnet router menyelesaikan ini dengan mengumumkan seluruh rentang jaringan lokal ke tailnet dari satu mesin yang memang menjalankan klien, sehingga setiap perangkat lain di mesh bisa menjangkau apa pun di subnet itu tanpa menginstal apa-apa lagi.

1. Aktifkan forwarding IPv4 dan IPv6 pada mesin yang akan berperan sebagai router, karena Tailscale mengandalkan kernel untuk meneruskan paket antara antarmuka tailnet dan antarmuka jaringan lokal.
2. Jalankan klien dengan flag advertise routes diisi rentang CIDR subnet lokal, misalnya LAN milik router itu sendiri, sehingga server kontrol tahu perangkat ini bisa menjangkau rentang tersebut.
3. Setujui route yang diumumkan dari admin console, karena route yang belum disetujui diabaikan secara default sebagai langkah pengaman terhadap kebocoran jaringan yang tidak diinginkan.

> Subnet router yang mengumumkan 0.0.0.0/0 atau rentang yang terlalu luas bisa secara tidak sengaja mengekspos jauh lebih banyak jaringan Anda daripada yang dimaksudkan. Selalu umumkan blok CIDR paling sempit yang hanya mencakup perangkat yang benar-benar ingin Anda jangkau, dan periksa ulang daftar route yang disetujui di admin console setelah setiap perubahan.

## Mengunci lalu lintas dengan access control list

Secara default setiap perangkat di tailnet bisa menjangkau setiap perangkat lain, yang baik-baik saja untuk uji coba dua mesin tetapi bukan yang Anda inginkan begitu server, laptop, dan akun kontraktor rekan kerja berbagi mesh yang sama. File kebijakan tailnet, ditulis dalam sintaks mirip JSON bernama HuJSON, memungkinkan Anda mendefinisikan tag untuk kelompok perangkat lalu menulis aturan accept eksplisit yang menjelaskan tepatnya kelompok mana yang boleh menjangkau port mana pada kelompok lain.

Konsep

Fungsinya

Catatan praktis

Tag

Melabeli perangkat berdasarkan peran, bukan pemilik, misalnya server atau homelab.

Tag tetap ada meski perangkat didaftarkan ulang, berbeda dengan aturan per pengguna.

Aturan ACL

Pernyataan accept eksplisit yang menyebutkan sumber, tujuan, dan port yang diizinkan.

Semua yang tidak diizinkan secara eksplisit akan ditolak begitu ada satu aturan.

Autogroup

Kelompok bawaan seperti members atau admin yang merujuk pada peran akun.

Berguna untuk aturan yang berlaku untuk setiap pengguna manusia, bukan tag tertentu.

SSH check

Blok kebijakan yang mengatur akses SSH melalui fitur SSH milik Tailscale sendiri.

Menghilangkan kebutuhan mendistribusikan kunci SSH terpisah ke setiap server.

## Self-hosting control plane dengan Headscale

Server koordinasi hosted milik Tailscale gratis untuk penggunaan pribadi dan menangani autentikasi, pertukaran kunci, serta fallback relay DERP untuk Anda, tetapi beberapa tim ingin control plane itu sendiri berjalan di infrastruktur milik mereka, baik untuk kepatuhan, biaya pada skala besar, atau sekadar penasaran. Headscale adalah implementasi ulang open source dan dikelola komunitas dari server kontrol tersebut yang berbicara protokol yang sama dengan klien resmi Tailscale, sehingga skrip instalasi dan perintah CLI yang sama bekerja tanpa modifikasi terhadapnya.

- Headscale hadir sebagai satu binary Go tunggal atau image container, dan deployment minimal hanya membutuhkan file konfigurasi, database SQLite atau Postgres, serta endpoint HTTPS yang terekspos.
- Klien resmi Tailscale terhubung ke server Headscale dengan menyertakan flag login server berisi URL server Anda, menggantikan endpoint koordinasi default milik Tailscale.
- Headscale tidak menyertakan jaringan relay DERP hosted secara default, sehingga perangkat di belakang NAT yang ketat tanpa konektivitas langsung mungkin memerlukan Anda menjalankan relay sendiri atau mengarah ke server DERP publik milik Tailscale.

Headscale dikelola komunitas dan bukan produk resmi Tailscale, tetapi secara sengaja menargetkan kompatibilitas protokol dengan klien Tailscale asli, sehingga Anda tetap mendapatkan pengalaman instalasi yang sama seperti yang sudah dikenal tim Anda sambil memiliki control plane sendiri.

## Daftar periksa sebelum benar-benar berkomitmen

Sebelum memperlakukan mesh VPN apa pun sebagai infrastruktur produksi untuk server sungguhan, kerjakan daftar periksa singkat ini agar kesalahan konfigurasi tidak berubah menjadi downtime atau, lebih buruk, kebocoran yang tidak disengaja.

- Pastikan file kebijakan tailnet menolak lalu lintas secara default dan setiap aturan accept merujuk pada tag bukan perangkat individual, sehingga menghapus satu server tidak diam-diam membuka celah.
- Uji apakah route yang diumumkan oleh subnet router tetap bertahan setelah mesin itu di-reboot, karena pengaturan forwarding yang hanya tertulis pada state kernel yang berjalan akan hilang saat restart.
- Verifikasi bahwa MagicDNS mampu me-resolve setiap hostname yang akan Anda rujuk dalam skrip atau tooling deployment, karena kesalahan penulisan hostname gagal secara diam-diam sebagai error pencarian DNS bukan penolakan izin yang jelas.
- Jika self-hosting Headscale, siapkan backup otomatis untuk database-nya, karena kehilangan database itu berarti setiap perangkat harus mendaftar dan autentikasi ulang dari awal.

Mesh VPN yang dibangun di atas WireGuard menghilangkan satu kategori penuh masalah jaringan: tidak perlu lagi membuka lubang firewall secara manual, tidak perlu lagi berurusan dengan IP rumahan yang dinamis, dan tidak ada lagi titik kegagalan tunggal antara laptop Anda dan server yang perlu Anda SSH pada pukul dua pagi. Baik Anda tetap menggunakan control plane hosted milik Tailscale atau berpindah ke instance Headscale yang di-self-host, mesh yang mendasarinya berperilaku sama, yang menjadikannya infrastruktur langka yang bisa Anda adopsi secara bertahap tanpa terkunci pada control plane satu vendor selamanya.

## Sumber

- Dokumentasi Tailscale — Terminologi dan konsep
- Dokumentasi Tailscale — Subnet router
- Headscale di GitHub (juanfont/headscale)
- Wikipedia — WireGuard

> **Key takeaway:** Tailscale membangun jaringan mesh terenkripsi di atas WireGuard, memberi setiap server, laptop, dan perangkat homelab alamat IP privat yang stabil serta koneksi peer-to-peer langsung tanpa melewati satu gateway VPN. Panduan ini membahas instalasi Tailscale, membuka akses ke subnet homelab lewat router node, mengunci akses dengan ACL, dan menghosting sendiri control plane-nya lewat Headscale.

## Source links

- https://tailscale.com/kb/1155/terminology-and-concepts
- https://tailscale.com/docs/features/subnet-routers
- https://github.com/juanfont/headscale
- https://en.wikipedia.org/wiki/WireGuard

## FAQ

### Apa itu Tailscale dan bagaimana bedanya dengan VPN tradisional?

Tailscale adalah mesh VPN yang dibangun di atas protokol WireGuard, memberikan setiap perangkat IP privat yang stabil dan menghubungkan perangkat secara langsung satu sama lain kapan pun memungkinkan. Berbeda dengan VPN tradisional yang merutekan semua lalu lintas melalui satu gateway pusat, Tailscale hanya menggunakan server koordinasinya untuk autentikasi dan pertukaran kunci, sehingga data sesungguhnya bisa berjalan peer to peer dengan latensi lebih rendah dan tanpa titik kegagalan tunggal.

### Mengapa saya perlu self-host Headscale dibanding menggunakan Tailscale langsung?

Headscale adalah implementasi ulang open source dan dikelola komunitas dari server kontrol Tailscale yang berbicara protokol sama dengan klien resmi Tailscale. Tim memilihnya ketika ingin control plane berjalan di infrastruktur yang benar-benar mereka miliki, baik untuk kepatuhan regulasi, kendali biaya pada jumlah perangkat besar, atau sekadar menghindari ketergantungan pada layanan pihak ketiga untuk konektivitas inti.

### Bagaimana subnet router memungkinkan saya menjangkau perangkat yang tidak bisa menjalankan klien Tailscale?

Subnet router adalah perangkat tailnet biasa yang mengumumkan seluruh rentang jaringan lokal, misalnya LAN homelab, ke sisa mesh. Perangkat lain di tailnet kemudian bisa menjangkau apa pun di subnet yang diumumkan itu, termasuk printer, appliance NAS, atau perangkat embedded, tanpa perlu menginstal klien Tailscale di masing-masing perangkat tersebut.

### Bisakah saya menggunakan access control list untuk membatasi perangkat mana yang bisa saling berkomunikasi?

Ya, Tailscale menerapkan kontrol akses melalui file kebijakan tailnet yang ditulis dalam sintaks mirip JSON. Anda memberi tag pada perangkat berdasarkan peran, misalnya server atau homelab, lalu menulis aturan accept eksplisit yang menyebutkan tag sumber, tag tujuan, dan port yang diizinkan, sehingga begitu ada satu aturan, semua yang tidak diizinkan secara eksplisit akan ditolak secara default.

### Apa yang terjadi pada perangkat saya jika server Headscale sempat mati?

Koneksi peer to peer yang sudah ada tetap berjalan karena kunci WireGuard sudah dipertukarkan dan disimpan di masing-masing perangkat sebelum gangguan terjadi. Pendaftaran perangkat baru dan pertukaran kunci baru akan gagal sampai server kontrol kembali online, tetapi mesin yang sudah terhubung tetap bisa saling berkomunikasi melalui terowongan terenkripsi yang sudah terbentuk.

---

- HTML version: https://www.matthewswong.com/id/blog/tailscale-mesh-vpn-self-hosted/
- English: https://www.matthewswong.com/en/blog/tailscale-mesh-vpn-self-hosted/
- Site index for agents: https://www.matthewswong.com/llms.txt
- Sitemap: https://www.matthewswong.com/sitemap.xml
- API description (OpenAPI): https://www.matthewswong.com/openapi.json
