Tailscale untuk Homelab: Akses Server dari Mana Saja

· Setup

Masalah Akses Jarak Jauh

Untuk accessing server homelab dari luar rumah, cara pertama yang terpikir adalah port forwarding di router: buka port SSH, buka port HTTP, buka port database. Masalahnya, setiap port yang dibuka adalah permukaan serangan yang permanen di Internet publik.

Tidak semua orang punya IP publik. Kebanyakan ISP Indonesia memakai CGNAT, jadi bahkan kalau router mendapat IP publik, IP tersebut masih di-share dengan banyak pelanggan lain. Port forwarding jadi tidak mungkin sama sekali.

Solusi yang umum dipakai ada dua: VPN tradisional dengan WireGuard manual, atau mesh VPN seperti Tailscale, ZeroTier, atau NetBird. Untuk homelab rumahan, mesh VPN jauh lebih praktis karena tidak perlu konfigurasi distribusi key secara manual.

Kenapa Tailscale

Tailscale operationnya di atas WireGuard, protokol VPN yang sudah diaudit luas. Yang membedakan adalah model operasinya. Alih-alih harus menukar public key secara manual, setiap perangkat melakukan login lewat akun yang sama dan langsung punya alamat private.

Beberapa sifat penting yang membuatnya cocok untuk homelab:

  1. Tidak butuh port forwarding. Koneksi keluar (outbound) dari server ke server koordinasi. Firewall rumah bisa tetap menutup semua port.
  2. Alamat di rentang 100.64.0.0/10. CGNAT bukan masalah, karena yang berjalan adalah IP private virtual, bukan IP publik.
  3. Enkripsi end-to-end. Server koordinasi hanya menyimpan metadata, bukan isi trafik.
  4. IP stabil. Alamat Tailscale tidak berubah antar restart, jadi tidak perlu dynamic DNS.

Instalasi di Server

Di Debian atau Ubuntu, satu perintah sudah cukup:

curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up

Perintah tailscale up mencetak URL login. Buka di browser, autentikasi, lalu server langsung mendapat alamat Tailscale. Cek hasilnya:

tailscale ip -4
tailscale status

Untuk server homelab, hampir selalu lebih nyaman mengaktifkan SSH langsung di atas Tailscale supaya tidak perlu install agent di PC:

sudo tailscale up --ssh

Perintah ini menyalakan mode SSH yang membungkus OpenSSH bawaan Tailscale. Semua user Linux lokal yang ada di mesin tersebut otomatis boleh masuk tanpa tukar key. Tidak ada port SSH yang terbuka ke Internet.

Menambahkan Perangkat

Client desktop cukup install lalu login dengan akun yang sama. Setelah itu setiap perangkat saling melihat di tailscale status:

# dari laptop, masuk ke server tanpa IP publik
ssh [email protected]

# atau pakai nama mesh, lebih mudah diingat
ssh ayahzahra@ayahayyub

Hostname mesh bisa diubah dengan tailscale set --hostname=nama, sehingga tidak perlu menghafal IP yang berubah-ubah.

Subnet Router: Akses Lokal Tanpa Install Agent

Ini fitur yang paling sering diabaikan. Misal di rumah ada printer, NAS, dan CCTV yang tidak bisa diinstall Tailscale. Salah satu server homelab bisa berlaku sebagai subnet router, meneruskan trafik ke seluruh jaringan lokal.

Aktifkan di server:

sudo tailscale up --advertise-routes=192.168.1.0/24

Lalu di halaman admin Tailscale, approve route tersebut. Setelah di-approve, perangkat lain di mesh bisa mengakses langsung ke 192.168.1.x:

ssh [email protected]     # server kedua
ping 192.168.1.20              # printer

Perlu diingat: subnet router hanya meneruskan trafik. Kalau tidak perlu akses printer dari luar, jangan advertise route yang tidak diperlukan, karena setiap jalur tambahan adalah attack surface baru.

ACL: Batasi Siapa Boleh Akses Apa

Secara default, semua perangkat di mesh saling bisa mengakses semua port. Untuk homelab pribadi itu masih agak longgar. Access control disimpan di file tailscale.acl di dashboard admin.

Contoh sederhana: hanya laptop pribadi yang boleh SSH ke server, perangkat lain tidak boleh menyentuh port SSH sama sekali.

{
  "acls": [
    {
      "action": "accept",
      "src": ["autogroup:admin"],
      "dst": ["*:22"]
    },
    {
      "action": "accept",
      "src": ["autogroup:member"],
      "dst": ["*:*"]
    }
  ]
}

Baris pertama mengizinkan user admin untuk akses SSH ke perangkat mana pun. Baris kedua mengizinkan anggota lain untuk akses umum, tapi karena baris pertama sudah dikecualikan, akses SSH dari non-admin tetap terblokir. Aturan dibaca berurutan dari atas, jadi menaruh aturan spesifik di atas aturan umum itu penting.

Exit Node: Keluar Lewat Server Rumah

Kalau sering bekerja dari warnet atau hotspot publik, exit node membuat semua trafik internet keluar dari jaringan rumah. IP publik yang terlihat adalah IP rumah, bukan IP laptop.

Aktifkan di server:

sudo tailscale up --advertise-exit-node

Lalu pilih node tersebut di laptop dari menu Tailscale “Use Exit Node”. Ini menutupi sebagian risiko Wi-Fi publik, tapi bukan pengganti HTTPS.

Tips Pengujian

Kalau ada yang tidak berperilaku benar, periksa urutan dari bawah ke atas:

tailscale status           # apakah peer online
tailscale ping 100.x.y.z   # apakah handshake berhasil
tailscale netcheck         # cek DERP relay, UPnP, port langsung

tailscale netcheck berguna ketika koneksi terasa lambat. Kalau hasilnya Mostly DERP, trafik sebenarnya lewat relay server di negara lain karena port langsung gagal dibuka oleh NAT di jaringan rumah.

Kesimpulan

Tailscale mengubah masalah akses remote dari proyek jaringan yang rumit menjadi beberapa perintah install. Tidak ada port forwarding, tidak ada dynamic DNS, tidak ada tukar key manual. Untuk homelab, ini setup paling masuk akal dibanding usaha yang dikeluarkan.

Dua kebiasaan yang perlu dijaga setelah pemasangan: cabut perangkat yang sudah tidak dimiliki dari dashboard, dan cek daftar ACL sesekali supaya tidak ada akses yang terlalu longgar tanpa disadari.

Catatan Teknis Singkat

Tabel routing Tailscale ada di dalam kernel Linux, sehingga perutean antar subnet router bekerja otomatis begitu route di-approve. Tidak perlu mengatur tabel routing secara manual di tiap server.

Untuk server yang pakai firewall UFW, pastikan port UDP 41641 tidak diblokir. Port itu dipakai untuk koneksi langsung peer-to-peer. Kalau diblokir, Tailscale tetap jalan lewat DERP, tapi throughput-nya turun drastis karena trafik harus naik-turun ke server relay.