Localfly: Localhost ke Internet dalam Satu Klik, Tanpa Akun

Abd. Asis
Localfly: Localhost ke Internet dalam Satu Klik, Tanpa Akun

Ada satu momen yang selalu mengganggu di tengah pengembangan: kamu butuh aplikasi lokalmu diakses dari luar. Entah untuk mengetes tampilan di HP, menunjukkan progres ke klien, atau menerima webhook dari payment gateway yang hanya mau mengirim ke alamat publik.

Pilihan yang ada biasanya tidak menyenangkan. Deploy ke staging cuma untuk melihat satu halaman. Memasang ngrok berarti membuat akun dan menyimpan token. Membuka port di router berarti berurusan dengan NAT dan firewall.

Localfly mencoba menjawab itu dengan satu ide sederhana: simpan port aplikasimu, nyalakan sakelar, alamat publiknya langsung jadi.

Apa itu Localfly

Localfly adalah aplikasi menu bar untuk macOS, berlisensi MIT, ditulis dengan Swift dan SwiftUI. Repo-nya raqibnur/localfly, dibuat 8 November 2026, dan saat artikel ini ditulis punya 21 bintang dengan 1 fork. Angka itu kecil, dan itu wajar untuk proyek yang baru berumur tiga hari.

Klaimnya jelas dan sempit: memberi aplikasi apa pun di Mac-mu alamat publik, gratis, tanpa akun, tanpa analitik. Ada juga alternatif berbayar yang sedang dipertimbangkan, tapi versi gratisnya tidak dikunci.

Yang saya suka dari repo ini adalah kerapian strukturnya:

FolderIsi
LocalflyCore/paket Swift berisi mesin tunnel, protokol bore di atas Network.framework, tanpa UI
App/aplikasi SwiftUI, panel menu bar dan jendela utama, lapisan tipis di atas TunnelManager
deploy/relay untuk self-host, bore server plus Caddy dalam docker compose
site/situs web di GitHub Pages

Pemisahan seperti itu membuat bagian yang berisiko, yaitu jaringan dan reconnecting, bisa diuji tanpa membuka aplikasi. Tesnya pun dijalankan melawan server bore sungguhan di 127.0.0.1, dan dilewati kalau bore tidak terpasang.

Cara kerjanya

Localfly tidak membuat server di komputermu dan tidak menyentuh router. Dia memakai protokol tunnel bore karya Eric Zhang.

Alurnya:

  1. Mac-mu membuka koneksi keluar ke server relay.
  2. Kamu meminta alamat publik, misalnya bore.pub:43228.
  3. Ketika seseorang membuka alamat itu, relay meneruskan koneksi ke Mac-mu lewat koneksi yang sudah terbuka tadi.

Karena arahnya keluar, tidak ada port forwarding, tidak ada perubahan firewall, dan tidak ada IP publik yang perlu kamu miliki. Ini pola yang sama dengan Cloudflare Tunnel dan Tailscale Funnel, hanya dengan protokol dan relay yang berbeda.

Bawaannya Localfly memakai bore.pub, relay publik gratis. Konsekuensinya dua: alamatnya berubah setiap kali tunnel dibuka, dan alamat itu bisa diakses siapa pun yang tahu.

Memakainya

Unduh Localfly.dmg dari halaman rilis, buka, dan aplikasinya tinggal di menu bar. Syaratnya macOS 13 atau lebih baru, baik Apple silicon maupun Intel.

Alur kerjanya seperti ini:

  1. Klik ikon di menu bar.
  2. Tambahkan aplikasi dengan menyebut port-nya, misalnya 3000.
  3. Nyalakan sakelarnya.
  4. Salin alamat publik yang muncul.

Beberapa detail kecil yang menunjukkan aplikasi ini dibuat oleh orang yang benar-benar memakainya:

  • Titik status menunjukkan apakah dev server sedang hidup, dan Localfly menolak membuka tunnel ke port kosong.
  • Port umum seperti 3000 dan 5173 langsung terdeteksi dan siap ditambahkan.
  • Menutup jendela tidak mematikan tunnel. Ini penting, karena aplikasi menu bar yang ikut mati saat jendela ditutup akan menyebalkan.
  • Menyambung ulang sendiri setelah Wi-Fi putus atau laptop tidur, dan meminta alamat yang sama kembali.
  • Statistik lalu lintas per tunnel: waktu hidup, jumlah koneksi, byte masuk dan keluar.

Tidak ada akun, tidak ada login, tidak ada telemetri. Secret relay disimpan di keychain macOS.

Saat butuh alamat yang tidak berubah

Alamat bore.pub:43228 cukup untuk melihat hasil kerja di HP. Tapi dia tidak cukup untuk dua hal: webhook yang didaftarkan di layanan pihak ketiga, dan tautan yang kamu kirim ke klien.

Untuk itu, jalankan relay sendiri. Hasilnya alamat https:// di domainmu, port yang tetap, dan tunnel yang hanya bisa dibuka orang yang punya secret.

Kebutuhan minimalnya: satu VPS Linux sekitar 5 dolar sebulan dan satu domain.

Langkah 1, arahkan DNS. Satu record wildcard cukup:

CodeCODE
*.domainmu.com   A   <IP server>

Langkah 2, buka firewall. Port 7835/tcp untuk Localfly menghubungi relay, dan 80 serta 443 untuk Caddy mengambil sertifikat.

Langkah 3, jalankan relay. Isi repo sudah menyiapkan compose-nya:

BashBASH
git clone https://github.com/raqibnur/localfly.git
cd localfly/deploy
cp .env.example .env
sed -i "s/change-me/$(openssl rand -hex 24)/" .env
nano Caddyfile
docker compose up -d

Isi compose-nya sederhana: satu layanan bore versi 0.6.0 dan satu layanan caddy. Keduanya memakai network_mode: host, karena bore membuka satu port untuk setiap tunnel, dan itu sulit dilakukan lewat NAT Docker.

Langkah 4, daftarkan nama di Caddy. Satu blok per aplikasi, port-nya harus sama dengan port publik di Localfly:

CodeCODE
web.domainmu.com {
    reverse_proxy 127.0.0.1:40001
}

Setelah mengubah Caddyfile, jalankan docker compose restart caddy. Caddy akan mengambil dan memperbarui sertifikat HTTPS sendiri.

Langkah 5, hubungkan aplikasi. Di Localfly, isi Server dengan domain atau IP server, dan Secret dengan BORE_SECRET dari .env. Lalu untuk setiap aplikasi, buka Edit, isi Public port sesuai blok Caddy, dan isi Address dengan https://web.domainmu.com.

Kalau HTTPS belum diperlukan, relay bisa dijalankan sendirian:

BashBASH
docker compose up -d bore

Asal BIND_TUNNELS di .env diubah menjadi 0.0.0.0 dan port 40000 sampai 40100 dibuka. Tanpa Docker, bore juga bisa dijalankan langsung:

BashBASH
BORE_SECRET=… bore server --bind-tunnels 127.0.0.1 --min-port 40000 --max-port 40100

Kalau kamu memakai Linux

Bagian ini tidak ada di dokumentasinya, tapi berguna: Localfly hanyalah antarmuka untuk protokol bore. Relay-nya sendiri adalah bore server, dan kliennya memakai bore local.

Artinya di Linux atau Windows kamu tetap bisa menikmati relay yang sama dengan menjalankan bore local 3000 --to domainmu.com --port 40001 --secret …. Kamu kehilangan panel menu bar, deteksi port otomatis, dan statistik, tapi tunnel-nya jalan. Untuk kebutuhan sederhana, itu sudah cukup.

Biaya yang sebenarnya

KomponenBiayaCatatan
Aplikasi Localflygratis, MITtanpa akun, tanpa batas waktu
Relay publik bore.pubgratisalamat berubah tiap koneksi
VPS untuk relay sendirisekitar 5 dolar per bulancukup 1 GB RAM
Domainbiaya tahunanwildcard memudahkan banyak nama
Sertifikat HTTPSgratisCaddy mengurus sendiri
Waktu setupsekitar 30 menitsekali saja

Yang tidak terlihat di tabel: kalau kamu memakai relay publik, alamatmu ikut berbagi dengan orang lain di server yang sama. Untuk halaman statis yang tidak sensitif, itu tidak masalah. Untuk panel admin, jangan.

Risiko yang perlu disadari

Alamat publik berarti publik. Selama sakelar menyala, siapa pun yang punya alamat itu bisa membuka aplikasimu. Tidak ada autentikasi bawaan di Localfly. Kalau aplikasimu punya login sendiri, aman. Kalau tidak, tambahkan proteksi di depan: basic auth di Caddy, atau Cloudflare Access kalau domainmu di Cloudflare.

Secret relay bukan pengganti autentikasi aplikasi. Secret hanya memastikan orang lain tidak bisa membuka tunnel lewat relay-mu. Dia tidak mengatur siapa yang boleh membuka alamat yang sudah jadi.

Jangan pernah mengekspos database. Port PostgreSQL, MySQL, atau Redis yang dibuka ke internet akan dipindai dalam hitungan jam. Localfly bagus untuk aplikasi web, bukan untuk port layanan internal.

Alamat publik di relay bersama bisa dicoba orang lain. Ini bukan celah Localfly, tapi sifat relay publik. Kalau datanya sensitif, pakai relay sendiri.

Proyeknya masih sangat muda. Rilis pertama 8 November 2026, 21 bintang, tanpa issue terbuka. Untuk alat bantu pengembangan, itu wajar. Jangan jadikan satu-satunya jalan masuk ke layanan produksi.

Dibandingkan dengan yang lain

AlatBiayaDomain sendiriPerlu akunPlatformAlamat stabil
Localfly, relay publikgratistidaktidakmacOStidak
Localfly, relay sendiriVPS sekitar 5 dolaryatidakmacOSya
ngrokgratis terbatasberbayaryasemuaberbayar
Cloudflare Tunnelgratisya, domain di Cloudflareyasemuaya
Tailscale Funnelgratis terbatasyayasemuaya
LocalCanberbayaryayamacOSya

Kalau kamu sudah memakai Cloudflare untuk domain dan tidak keberatan dengan akun, Cloudflare Tunnel lebih matang dan gratis. Localfly menang di dua hal: tanpa akun, dan relay-nya bisa kamu jalankan sendiri tanpa ketergantungan layanan lain.

Kalau ada masalah

Pesan di LocalflyArtinya
Couldn't reach relayport 7835 tertutup, atau alamat server salah
This relay requires a secretisi secret di bagian Relay
Relay didn't ask for a secretrelay jalan tanpa BORE_SECRET, kosongkan secret
Port already in useport publik itu sedang dipakai tunnel lain
Client port number not in allowed rangepilih port publik di antara MIN_PORT dan MAX_PORT

Untuk webhook, alamat yang berubah-ubah adalah masalah nyata. Layanan seperti payment gateway menyimpan URL callback, jadi setiap kali alamat berubah kamu harus mendaftar ulang. Di sinilah relay sendiri dengan port tetap dan domain sendiri membayar dirinya sendiri dalam satu sore.

Kapan Localfly masuk akal

Cocok kalau:

  • kamu mengembangkan di macOS dan sering perlu melihat hasilnya di perangkat lain
  • kamu butuh alamat publik untuk webhook saat mengembangkan integrasi
  • kamu tidak ingin membuat akun hanya untuk meneruskan satu port
  • kamu punya domain dan tidak keberatan menjalankan satu VPS kecil

Kurang cocok kalau:

  • kamu memakai Windows atau Linux sebagai mesin utama dan ingin antarmuka grafis
  • kamu butuh inspeksi request dan respons seperti di ngrok, karena fitur itu masih rencana
  • kamu mencari solusi untuk mengekspos layanan produksi, bukan pengembangan

Penutup

Localfly menyelesaikan satu masalah kecil dengan cara yang rapi: satu sakelar, satu alamat, tanpa akun. Yang membuatnya layak dicoba bukan jumlah bintangnya, tapi keputusan untuk memakai protokol terbuka yang sudah ada, memisahkan mesin tunnel dari antarmuka, dan menyertakan panduan self-host di dalam repo yang sama.

Kalau kamu ingin melihat sendiri, aplikasinya ada di github.com/raqibnur/localfly dan situsnya di localfly.raqibnur.com. Untuk pemakaian serius, langsung lompat ke bagian self-hosting. Selisih satu VPS kecil itu sepadan dengan alamat yang tidak berubah setiap kali laptop bangun dari tidur.

Abd. Asis
Ditulis oleh
Abd. Asis

Software Developer dari Madura. Menulis tentang PHP, Laravel, dan pengembangan web modern dalam Bahasa Indonesia.

Artikel Terkait

Tulisan lain yang mungkin menarik buatmu.

Sepuluh Tool Self-Hosted untuk Server Rumah, Diurutkan dari yang Paling Menentukan
self-hosteddocker

Sepuluh Tool Self-Hosted untuk Server Rumah, Diurutkan dari yang Paling Menentukan

Bukan daftar tool populer. Ini urutan berdasarkan risiko: fondasi, akses aman, backup yang sudah diuji, baru layanan yang menyenangkan.

Abd. Asis
OpenPanel: Analitik Web Open Source
openpanelanalytics

OpenPanel: Analitik Web Open Source

OpenPanel adalah platform analitik web open source pengganti Plausible dan Mixpanel. Self-host gratis, event tracking, funnel, retention, tanpa cookie.

Abd. Asis
Kenalan dengan VitoDeploy: Alternatif Self-Hosted Laravel Forge yang Gratis
vitodeployself-hosted

Kenalan dengan VitoDeploy: Alternatif Self-Hosted Laravel Forge yang Gratis

VitoDeploy adalah tool manajemen server self-hosted dan open source untuk deploy aplikasi PHP dan Laravel. Pelajari fitur, cara instalasi, dan perbandingannya dengan Laravel Forge.

Abd. Asis
Kenalan dengan Coolify: Self-Hosted PaaS Open Source untuk Deploy Apa Saja
coolifyself-hosted

Kenalan dengan Coolify: Self-Hosted PaaS Open Source untuk Deploy Apa Saja

Coolify adalah platform self-hosted open source alternatif Heroku, Vercel, dan Netlify. Pelajari cara install di VPS, deploy aplikasi, dan kelola layanan dengan satu dashboard.

Abd. Asis
Kenalan dengan Dokploy: Self-Hosted PaaS Gratis untuk Deploy Aplikasi Apa Saja
dokployself-hosted

Kenalan dengan Dokploy: Self-Hosted PaaS Gratis untuk Deploy Aplikasi Apa Saja

Dokploy adalah platform self-hosted gratis sebagai alternatif Vercel, Netlify, dan Heroku. Pelajari cara install, deploy aplikasi, dan kelola database hanya dari satu dashboard.

Abd. Asis
Handling Webhook di Laravel: Tiga Cara dan Mana Yang Terbaik
laravelwebhook

Handling Webhook di Laravel: Tiga Cara dan Mana Yang Terbaik

Pelajari tiga cara menangani webhook di Laravel mulai dari direct handling, queue-based processing, hingga menggunakan package Spatie untuk solusi terbaik.

Abd. Asis