Episode ini membahas Tailscale Serve untuk mengekspos service lokal hanya ke tailnet dengan TLS otomatis dari MagicDNS, serta Tailscale Funnel untuk mengekspos service ke internet publik secara aman, lengkap dengan perbedaan dan kasus penggunaannya.

Selama ini kita menghubungkan perangkat dan mengamankan akses. Tapi ada satu pertanyaan besar: bagaimana mengekspos service? Kalian punya aplikasi berjalan di port 3000 di server rumah, dan ingin mengaksesnya dari mana saja — atau bahkan membagikannya ke internet.
Episode 15 memperkenalkan dua fitur yang menjawabnya: Tailscale Serve untuk mengekspos service hanya ke dalam tailnet, dan Tailscale Funnel untuk mengeksposnya ke internet publik. Keduanya memakai TLS otomatis dari MagicDNS, tanpa membuka port di firewall.
Tailscale Serve mengubah node menjadi reverse proxy yang mengarahkan permintaan ke service lokal, dan hanya bisa diakses dari dalam tailnet. Kalian tidak perlu membuka port di router atau firewall — akses lewat hostname MagicDNS dengan HTTPS otomatis.
sudo tailscale serve 3000Perintah sudo tailscale serve 3000 mengekspos port 3000 sebagai https://<hostname>.<tailnet-name>.ts.net. Sertifikat TLS diurus otomatis lewat MagicDNS.
Untuk menjalankan serve tanpa memblokir terminal:
sudo tailscale serve --bg 3000
tailscale serve statustailscale serve status menampilkan semua service yang sedang di-serve beserta targetnya.
Serve juga bisa memproksikan ke port berbeda atau menangani beberapa path:
sudo tailscale serve --bg --set-path=/status 8080Pola --set-path memungkinkan satu hostname melayani beberapa service pada path berbeda — cocok untuk berbagi banyak aplikasi internal dari satu node.
Tailscale Funnel mengekspos service ke internet publik — siapa pun dengan URL bisa mengakses, tanpa perlu akun Tailscale. Trafik tetap masuk lewat infrastruktur Tailscale dan TLS dikelola otomatis. Funnel berguna untuk demo, POC, atau layanan yang memang harus publik.
sudo tailscale funnel --bg 3000Perintah sudo tailscale funnel --bg 3000 menerbitkan service ke URL publik https://<hostname>.ts.net. Node yang bisa memakai Funnel dibatasi region tertentu.
tailscale funnel status
sudo tailscale funnel offtailscale funnel off menghentikan eksposur publik. Selalu matikan Funnel setelah demo selesai — jangan biarkan service pribadi terpapar publik lebih lama dari perlu.
Serve -> hanya tailnet, perlu login Tailscale
Funnel -> internet publik, tanpa akun
Serve -> akses via hostname .ts.net internal
Funnel -> akses via hostname publik .ts.netKalian punya API berjalan di port 8080 di server rumah dan ingin dashboard tim mengaksesnya:
sudo tailscale serve --bg 8080
tailscale serve statussudo tailscale serve --bg 8080 mengekspos API hanya untuk tailnet. Tim membuka https://<hostname>.ts.net tanpa perlu tahu IP internal — dan tanpa membuka port firewall.
serve status dan funnel status secara berkala.Episode 15 memberi kalian dua cara mengekspos service: Serve untuk tailnet yang aman dan Funnel untuk publik yang terkontrol — keduanya dengan TLS otomatis tanpa menyentuh firewall.
Inti yang harus dibawa pulang:
tailscale serve 3000 dan tailscale funnel --bg 3000.serve status dan funnel off wajib dikuasai untuk kontrol.Di episode 16 selanjutnya kita akan membahas Kubernetes, Docker, dan container — menjalankan Tailscale sebagai sidecar di Docker, pola tailscale up dalam container immutable, serta Tailscale Kubernetes Operator untuk Ingress, Egress, Service load balancer, dan workload identity.