Menggunakan FRP untuk Membuka Akses Publik pada Lingkungan Pengembangan Lokal ServBay (Penetrasi Jaringan Lokal)
FRP adalah alat reverse proxy berkinerja tinggi dan mudah digunakan, sangat cocok untuk skenario di mana pengembang perlu mengekspos layanan lokal (seperti website, API, database, dll) ke internet publik dengan cara yang aman dan praktis. Dengan arsitektur klien (frpc
) dan server (frps
)-nya, FRP mampu menjalankan tunneling jaringan lokal secara efisien.
Panduan ini akan memandu pengguna ServBay—khususnya di lingkungan macOS—bagaimana mengonfigurasi dan menggunakan klien FRP (frpc
) untuk membuat tunnel aman, sehingga layanan web lokal yang berjalan di ServBay dapat diakses dari internet publik. Hal ini sangat penting untuk keperluan demo jarak jauh, pengembangan kolaboratif, menerima permintaan webhook, atau melakukan pengujian API eksternal.
Ringkasan Prinsip Kerja Teknikal
Prinsip dasar FRP adalah membangun saluran komunikasi terenkripsi dari mesin jaringan lokal (yang menjalankan frpc
, yaitu mesin tempat ServBay Anda berjalan) ke server publik (yang menjalankan frps
). Ketika pengguna eksternal mengakses layanan Anda melalui internet, permintaan pertama-tama akan sampai ke server publik yang menjalankan frps
. Setelah menerima permintaan itu, frps
meneruskannya ke klien frpc
di dalam jaringan lokal Anda melalui tunnel yang telah dibangun. Kemudian frpc
akan meneruskan permintaan itu ke layanan lokal yang berjalan di ServBay (seperti website atau API Anda). Respons dari layanan Anda akan dikembalikan ke pengguna luar dengan jalur yang berlawanan.
Mekanisme ini secara cerdas melewati firewall jaringan lokal dan pembatasan router, memungkinkan eksposur layanan lokal ke luar, serta mendukung banyak protokol seperti TCP/UDP/HTTP/HTTPS. Hal ini memberikan kemampuan akses jarak jauh yang kuat untuk lingkungan pengembangan ServBay.
Skenario Penggunaan
Dengan menggabungkan ServBay dan FRP, Anda dapat dengan mudah menghadapi berbagai skenario pengembangan berikut:
- Demo & Kolaborasi Jarak Jauh: Mendemokan website atau aplikasi yang sedang dikembangkan langsung kepada tim atau klien tanpa perlu deployment ke server eksternal.
- Pengujian Webhook: Menerima notifikasi webhook dari layanan pihak ketiga (seperti GitHub, Stripe, WeChat Pay, dll), serta men-debug logika penanganan secara langsung di lokal.
- Uji Integrasi API: Mengekspos API backend lokal kepada pengembang frontend eksternal atau rekan untuk pengujian integrasi bersama.
- Pengujian Pengembangan Mobile: Mengakses langsung website/aplikasi di lingkungan ServBay lokal dari perangkat mobile, untuk pengujian kompatibilitas lintas perangkat.
- Berbagi Sementara: Berbagi file atau layanan lokal dengan cepat tanpa harus melakukan konfigurasi yang rumit.
Prasyarat
Sebelum mengonfigurasi FRP, pastikan hal-hal berikut telah terpenuhi:
- ServBay Sudah Terpasang & Berjalan: ServBay berhasil diinstal dan dijalankan di Mac Anda, dan layanan lokal (misal website) yang ingin diekspos sudah terkonfigurasi di ServBay serta dapat diakses via browser secara lokal.
- Memiliki Server FRP Publik (
frps
): Anda perlu sebuah server dengan IP publik, yang telah terpasang dan menjalankan FRP server (frps
). Fokus panduan ini adalah pada pengaturan sisi klien (frpc
). - Domain Publik (Opsional, tapi direkomendasikan untuk HTTP/HTTPS): Jika Anda ingin mengakses layanan melalui domain, Anda harus memiliki domain sendiri dan dapat mengkonfigurasi DNS-nya.
- FRP Klien (
frpc
) Terpasang: Klien FRP belum termasuk bawaan ServBay, Anda harus mengunduh dan memasangnya secara terpisah.
Persiapan Lingkungan & Instalasi Klien FRP
Langkah-langkah berikut akan memandu Anda memasang klien FRP (frpc
) di Mac tempat ServBay berjalan.
Unduh Klien FRP: Buka halaman FRP GitHub Releases dan unduh paket instalasi versi terbaru yang sesuai dengan arsitektur macOS Anda.
- Untuk Apple Silicon (M1/M2/M3 dll.), unduh file
frp_*.darwin_arm64.tar.gz
. - Untuk arsitektur Intel, unduh file
frp_*.darwin_amd64.tar.gz
.
- Untuk Apple Silicon (M1/M2/M3 dll.), unduh file
Instalasi Klien FRP: Ekstrak file yang diunduh, lalu salin file eksekusi
frpc
ke direktori PATH sistem, misalnya/usr/local/bin
, agar Anda bisa menjalankan perintahfrpc
dari terminal di direktori mana pun.Catatan: Versi (
0.52.3
saat dokumen ini dibuat) dan arsitektur (darwin_arm64
) dalam contoh perintah di bawah mungkin berubah; sesuaikan sesuai nama file yang Anda unduh.bash# Misal file yang diunduh adalah frp_0.52.3_darwin_arm64.tar.gz # Masuk ke direktori unduhan cd ~/Downloads # Ekstrak file (sesuaikan dengan nama file sebenarnya) tar -zxvf frp_0.52.3_darwin_arm64.tar.gz # Masuk ke direktori hasil ekstrak (sesuaikan dengan nama direktorinya) cd frp_0.52.3_darwin_arm64 # Salin file frpc ke /usr/local/bin sudo cp frpc /usr/local/bin/ # (Opsional) Anda bisa menyalin file contoh frpc.toml ke direktori lain, misal ke home directory # cp frpc.toml ~/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15Masukkan password user Anda untuk menyelesaikan perintah
sudo
.Verifikasi Instalasi: Buka terminal baru dan jalankan perintah berikut untuk memastikan
frpc
sudah terpasang dan masuk ke PATH:bashfrpc -v # Output yang diharapkan: frpc version 0.52.3
1
2Jika Anda melihat informasi versi, berarti instalasi berhasil.
Konfigurasi Tunnel Klien FRP
Konfigurasi klien FRP umumnya dilakukan pada file bernama frpc.toml
(versi terbaru FRP menganjurkan format TOML). Anda perlu membuat atau mengedit file ini agar frpc
dapat terhubung ke server FRP (frps
) Anda, serta menentukan pemetaan antara layanan ServBay di lokal ke akses publik.
Penjelasan File Konfigurasi frpc.toml
Berikut struktur dasar contoh konfigurasi frpc.toml
yang memperlihatkan cara memasukkan informasi koneksi dan definisi satu proxy:
toml
# frpc.toml - Contoh file konfigurasi klien FRP
# Bagian [common]: pengaturan koneksi klien ke server
serverAddr = "your-frps-server.com" # Alamat IP publik atau domain server FRP Anda
serverPort = 7000 # Port server FRP untuk koneksi klien (default 7000)
# Pengaturan otentikasi (disarankan pakai token)
auth.method = "token"
auth.token = "your_authentication_token" # Token harus sama dengan konfigurasi sisi server
# Opsional: Aktifkan enkripsi TLS antara klien dan server, untuk keamanan tambahan
# tls_enable = true
# Bagian [[proxies]]: mendefinisikan satu atau beberapa tunnel proxy
[[proxies]]
name = "my-web-service" # Nama proxy, harus unik dalam satu frpc.toml
type = "http" # Jenis proxy: http, https, tcp, udp, stcp, xtcp, dsb
localIP = "127.0.0.1" # Alamat IP layanan lokal (default 127.0.0.1)
localPort = 80 # Port layanan lokal (misal HTTP ServBay default 80)
customDomains = ["servbay.your-domain.com"] # Domain publik (hanya untuk http/https). **Pastikan domain sudah diarahkan ke IP server FRP Anda via DNS.**
# Untuk menambah konfigurasi proxy lainnya, cukup tambahkan blok [[proxies]] lagi
# [[proxies]]
# ... (konfigurasi untuk layanan lain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Parameter | Bagian | Penjelasan |
---|---|---|
serverAddr | [common] | Alamat IP publik atau domain server FRP (frps ). |
serverPort | [common] | Port server FRP untuk koneksi klien, default 7000 . Ubah jika diperlukan. |
auth.method | [common] | Metode autentikasi klien ke server, biasanya token . Harus sama dengan di server. |
auth.token | auth (di bawah [common] ) | Token autentikasi, samakan dengan server. Jangan dibocorkan. |
tls_enable | [common] | Aktifkan enkripsi TLS, disarankan bernilai true untuk keamanan lebih baik. |
[[proxies]] | root level | Daftar array konfigurasi tunnel proxy. Tiap blok [[proxies]] adalah satu pemetaan layanan. |
name | [[proxies]] | Nama unik untuk tunnel, pilih nama yang mudah dikenali fungsi layanannya. |
type | [[proxies]] | Jenis protokol proxy. Umumnya http , https , tcp , atau udp . Pilih sesuai layanan lokal Anda. |
localIP | [[proxies]] | IP address layanan lokal, default 127.0.0.1 . Biarkan default kecuali ada kebutuhan khusus. |
localPort | [[proxies]] | Port layanan lokal, misal HTTP ServBay 80, HTTPS 443, MySQL 3306, PostgreSQL 5432, dsb. |
remotePort | [[proxies]] | (Hanya untuk tcp /udp ) Port publik yang digunakan server FRP untuk layanan Anda. |
customDomains | [[proxies]] | (Hanya untuk http /https ) Array domain publik yang digunakan user untuk mengakses layanan. Pastikan sudah diarahkan ke IP server FRP melalui CNAME atau A record. |
subdomain | [[proxies]] | (Hanya untuk http /https , jika server mendukung) Untuk subdomain otomatis, jika server ada pengaturan subdomain_host . |
[proxies.plugin] | [[proxies]] | Konfigurasi plugin, misal https2https untuk HTTPS lokal. |
hostHeaderRewrite | [proxies.plugin] atau [[proxies]] | Menulis ulang header Host saat diteruskan ke layanan lokal. Wajib diatur untuk virtual host berbasis domain di ServBay. |
Contoh Konfigurasi: Mapping Layanan Website HTTPS di ServBay
ServBay umumnya mengaktifkan HTTPS untuk website lokal dan otomatis mengatur SSL certificate. Untuk mengekspos HTTPS ServBay ke publik melalui FRP, biasanya gunakan jenis proxy https
dan bisa dikombinasikan dengan plugin https2https
, atau memakai jenis tcp
untuk forward port 443. Namun karena virtual host ServBay bergantung pada header Host
, jenis https
plus hostHeaderRewrite
merupakan praktik yang direkomendasikan.
Contoh berikut memperlihatkan bagaimana website HTTPS lokal ServBay dengan domain seperti servbay.test
diekspos sebagai domain publik seperti test-frp.servbay.app
. Pastikan domain publik Anda sudah diarahkan ke IP server FRP publik Anda (frps.servbay.demo
) melalui CNAME atau A record.
Buat file bernama frpc.toml
(misal di home directory Anda: ~/frpc.toml
), lalu isi sebagai berikut:
toml
# Contoh frpc.toml - Mapping Website HTTPS ServBay
# [common]: Konfigurasi koneksi ke server FRP
serverAddr = "frps.servbay.demo" # Ganti dengan alamat server FRP Anda
serverPort = 7000 # Ganti dengan port FRP yang digunakan
auth.method = "token"
auth.token = "servbay_demo_token" # Ganti dengan token otentikasi Anda
# Disarankan: Aktifkan TLS antar klien-server
tls_enable = true
# [[proxies]]: Mapping website HTTPS ServBay lokal
[[proxies]]
name = "servbay-website-https" # Nama proxy, bisa diganti sesuai kebutuhan
type = "https" # Jenis proxy HTTPS
# Domain publik. Pastikan sudah diarahkan ke IP server FRP Anda.
customDomains = ["test-frp.servbay.app"] # Ganti sesuai keinginan
# Detail forwarding ke layanan lokal ServBay
localIP = "127.0.0.1" # ServBay biasanya listen di loopback lokal
localPort = 443 # Port default HTTPS ServBay
# Penting: Rewrite Host header agar sesuai domain lokal ServBay
# Karena web server ServBay (seperti Nginx/Caddy) routing berdasarkan Host header.
hostHeaderRewrite = "servbay.test" # Ganti sesuai domain ServBay lokal Anda
# Opsional: Tambah header custom agar backend tahu asal permintaan
[proxies.requestHeaders.set]
x-from-where = "frp-tunnel"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Ganti parameter serverAddr
, serverPort
, auth.token
, customDomains
, dan hostHeaderRewrite
sesuai kebutuhan Anda.
Pentingnya hostHeaderRewrite
: ServBay memakai web server (Nginx atau Caddy) untuk mengelola website lokal Anda. Server tersebut biasanya dikonfigurasi agar menyaring situs berdasarkan header Host
dalam request. Jika request diteruskan lewat tunnel FRP, header Host
asli adalah domain publik (test-frp.servbay.app
), bukan domain lokal ServBay (servbay.test
). Jika hostHeaderRewrite
tidak diatur, web server ServBay tidak bisa mencocokkan website target, sehingga bisa menimbulkan error 404 atau hanya menampilkan website default. Inilah sebabnya hostHeaderRewrite
wajib disesuaikan dengan domain website ServBay lokal Anda.
Menjalankan Layanan Klien FRP
Setelah file frpc.toml
siap, buka terminal kemudian arahkan ke direktori tempat file berada (misal, jika di home directory, Anda bisa jalankan dari mana pun dengan path lengkap). Gunakan perintah berikut untuk memulai klien FRP:
bash
# Jika frpc.toml ada di direktori saat ini
frpc -c frpc.toml
# Jika file berada di home directory
# frpc -c ~/frpc.toml
1
2
3
4
5
2
3
4
5
Perintah ini akan menjalankan frpc
di foreground dan mencoba menghubungkan ke server frps
. Jika sukses, akan tampil log di terminal sebagai indikasi tunnel berhasil terbangun dan proxy telah berjalan.
Jika ingin menjalankan frpc
di background, gunakan nohup
atau tools macOS seperti launchctl
. Contoh dengan nohup
:
bash
# Jika file frpc.toml di home directory
nohup frpc -c ~/frpc.toml &
1
2
2
Perintah ini akan mengalihkan output ke file nohup.out
dan menjalankan proses di background. Untuk manajemen layanan jangka panjang, gunakan launchctl
di macOS (tidak dibahas pada panduan ini karena lebih kompleks).
Verifikasi Layanan dan Diagnosa Log
Verifikasi Layanan
Setelah frpc
dijalankan dan log memperlihatkan koneksi sukses, buka browser dan akses domain publik sesuai konfigurasi di frpc.toml
(misal https://test-frp.servbay.app
). Pastikan hal-hal berikut:
- Halaman termuat tanpa error koneksi, error sertifikat (untuk HTTPS), atau kendala jaringan lainnya.
- Mendapat status HTTP 200 atau kode lain yang sesuai.
- Isi halaman sama persis seperti saat mengakses ServBay di lokal (
https://servbay.test
). - Jika menggunakan HTTPS, cek di address bar ada ikon gembok atau sertifikat SSL valid (sesuai domain publik Anda).
Diagnosa Log
Log client FRP adalah kunci diagnosis koneksi maupun kendala forwarding. Saat frpc -c frpc.toml
dijalankan, log tampil di terminal. Perhatikan warning/error saat menemui masalah.
Untuk output diagnosa lebih detail, jalankan dengan level log debug seperti berikut:
bash
frpc -c frpc.toml --log_level debug
1
Jika di frpc.toml
Anda menambah parameter log_file
(misal log_file = "/var/log/frpc.log"
), log akan keluar ke file itu. Pantau secara real-time dengan perintah tail -f /path/to/your/frpc.log
.
Troubleshooting Umum
Jika menemui masalah ketika mengatur atau menggunakan FRP, rujuk tabel masalah dan solusi berikut:
Permasalahan | Solusi |
---|---|
Gagal otentikasi ke server FRP | Cek apakah auth.token dan auth.method di [common] pada frpc.toml persis sama dengan di server FRP (frps ). Cek juga log di sisi server. |
Domain publik tidak bisa diakses/resolve | Pastikan domain di customDomains sudah diarahkan ke IP server FRP melalui DNS (CNAME/A record). Verifikasi dengan ping your-frp-domain.com atau tools DNS online. Tunggu propagasi DNS jika baru diubah. |
Akses domain publik hanya tampil halaman FRP welcome | Umumnya domain sudah mengarah ke server FRP, tapi belum dikonfigurasi forwarding. Cek kembali apakah domain di customDomains sama persis, serta type harus http /https . Cek juga di server. |
Port lokal bentrok/servis tidak aktif | Pastikan ServBay aktif dan layanan lokal yang ingin diekspos memang berjalan pada port di localPort . Gunakan lsof -i :PORT (ganti PORT ). |
Tunnel sering terputus/not stabil | Cek stabilitas jaringan di Mac dan server FRP. Untuk stabilitas, di [common] bisa tambah heartbeat_timeout = 30 atau naikkan pool_count . Cek juga resource server FRP. |
Akses HTTP malah redirect ke HTTPS | Cek pengaturan web server ServBay, bisa jadi ada rule force redirect ke HTTPS. Untuk HTTP expose, gunakan type http dan hilangkan plugin yang tidak perlu. Untuk HTTPS expose, pastikan type https dan plugin/certificate sesuai. |
Error sertifikat HTTPS (browser warning) | Dengan proxy https , bila ServBay memakai sertifikat self-signed atau dari CA ServBay, browser bisa menampilkan peringatan. Ini wajar. Solusi: pasang CA ServBay di Mac Anda, atau setup plugin https2http /https2https dan arahkan path sertifikat ServBay yang valid, atau di sisi server. Jika menggunakan proxy https dan hostHeaderRewrite , ServBay menangani SSL; warning pada browser tergantung sertifikat lokal ServBay. |
Akses balik 404 error | Pastikan nilai hostHeaderRewrite di frpc.toml sesuai domain website lokal ServBay (misal servbay.test ). Jika mismatch, web server tak bisa memetakan virtual host. |
Server FRP diblokir firewall | Pastikan firewall server FRP mengizinkan akses ke serverPort (default 7000) dan port layanan yang diekspos (80, 443, atau remotePort ). |
Firewall lokal memblokir koneksi | Pastikan firewall di Mac tidak menghalangi koneksi keluar ke port serverPort server FRP. Juga pastikan port layanan ServBay (localPort ) menerima koneksi dari 127.0.0.1 . |
Klien FRP log sukses, tapi layanan tak bisa diakses | Mungkin ada masalah konfigurasi di server FRP atau masalah jaringan antara server dan klien. Cek log server (frps ) apakah ada error atau tidak. Pastikan server mengonfigurasi port/domain forwarding yang benar. |
Keunggulan & Rekomendasi Keamanan Penggunaan FRP di Lingkungan ServBay
Menghubungkan ServBay dengan FRP memberi fleksibilitas dan kenyamanan luar biasa untuk pengembang:
- Dukungan Multi-protokol: FRP mendukung HTTP, HTTPS, TCP, UDP, dll, tak hanya web, Anda juga dapat mengekspos database lokal (MySQL/PostgreSQL/MongoDB), Redis, SSH, dan layanan lain dari ServBay.
- Konfigurasi Fleksibel: Cukup dengan file TOML sederhana, Anda bisa me-manage banyak proxy tunnel untuk beberapa situs/webservice secara bersamaan.
- Open Source & Kontrol Penuh: FRP adalah proyek open-source dewasa; Anda bisa mengontrol penuh layanan tunneling Anda sendiri tanpa tergantung pihak ketiga.
- Keamanan: FRP mendukung token autentikasi, tunnel terenkripsi dengan TLS (
tls_enable = true
), serta fitur penting lain demi keamanan data. Jika dikombinasikan dengan fitur keamanan ServBay (termasuk SSL certificate management), Anda bisa membangun lingkungan pengembangan yang lebih aman.
Tips Keamanan:
- Aktifkan enkripsi TLS: Sangat dianjurkan mengatur
tls_enable = true
di[common]
padafrpc.toml
untuk mengamankan lalu lintas antar klien-server. - Pakai token autentikasi kuat: Gunakan token yang rumit dan sulit ditebak; ganti token secara periodik.
- Batasi layanan yang diekspos: Hanya expose port dan layanan yang memang diperlukan akses publik.
- Gunakan domain publik, bukan IP: Untuk layanan HTTP/HTTPS, selalu gunakan
customDomains
dan hindari langsung mengakses lewat IP server FRP (jika memungkinkan). - Amankan server FRP: Pastikan server FRP hanya membuka port yang diperlukan dan firewall sudah diatur baik.
- Pertimbangkan akses kontrol tambahan: Jika server FRP mendukung, gunakan pembatasan akses berbasis IP, whitelist, dsb.
Dengan konfigurasi dan langkah di atas, Anda dapat membuka layanan pengembangan lokal ServBay ke publik secara aman dan praktis, sehingga workflow pengembangan Anda jadi jauh lebih nyaman dan fleksibel.