Bypass NAT Router: Akses Home Server dari Internet Pakai FRP
Apa itu FRP dan Mengapa Kita Butuh Ini?
FRP (Fast Reverse Proxy) adalah tool yang membantu kita mengakses komputer/server di rumah dari internet, padahal kita tidak punya IP publik atau berada di belakang router/NAT.
Analogi sederhana: Bayangkan rumah kamu ada di gang yang tidak punya alamat jelas. FRP seperti menyewa kantor pos (VPS) yang punya alamat jelas, lalu semua surat yang datang ke kantor pos akan diteruskan ke rumah kamu.
Yang kita butuhkan:
- VPS dengan IP publik (sebagai "kantor pos")
- Home Server di rumah (komputer yang ingin diakses)
Architecture Overview
User → VPS (xxx.xxx.xxx.xxx) → Home Router → Home Server (192.168.2.115)
↑ frps (server) ↑ frpc (client)

Penjelasan:
- frps = FRP Server, jalan di VPS
- frpc = FRP Client, jalan di Home Server
- User akan connect ke Server, lalu Server forward traffic ke Client
Step 1: Install frp di VPS
Mengapa di VPS dulu?
Karena VPS adalah "gerbang" kita ke internet. Server harus siap dulu sebelum client connect.
Login ke VPS kamu via SSH:
ssh [email protected]
Download FRP versi terbaru:
# Pindah ke folder temporary
cd /tmp
# Download FRP (check versi terbaru di: https://github.com/fatedier/frp/releases)
wget https://github.com/fatedier/frp/releases/download/v0.65.0/frp_0.65.0_linux_amd64.tar.gz
# Extract file
tar -xzf frp_0.65.0_linux_amd64.tar.gz
# Masuk ke folder hasil extract
cd frp_0.65.0_linux_amd64
# Copy binary ke system directory (agar bisa dijalankan dari mana saja)
cp frps /usr/local/bin/
# Copy config template ke /etc
cp frps.toml /etc/frps.toml
# Cek apakah sudah terinstall
frps -v
Penjelasan:
/usr/local/bin/→ tempat program yang bisa dijalankan global/etc/→ tempat menyimpan file konfigurasifrps -v→ cek versi, kalau keluar nomor versi berarti install sukses
Step 2: Konfigurasi frps di VPS
Mengapa perlu config?
Config file memberitahu FRP bagaimana cara kerja, port apa yang dipakai, dan keamanan seperti apa.
Edit config file:
nano /etc/frps.toml
Paste config ini:
# frps.toml - Server Config
bindAddr = "0.0.0.0"
bindPort = 7000
# TAMBAHKAN INI (penting untuk HTTP/HTTPS proxy!)
vhostHTTPPort = 80
vhostHTTPSPort = 443
# Dashboard (Web GUI)
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "passwordkamu"
# Authentication token
auth.method = "token"
auth.token = "rahasia_token_12345"
# Log
log.to = "/var/log/frps.log"
log.level = "info"
log.maxDays = 7
Penjelasan setiap baris:
bindAddr→ IP yang dipakai server (0.0.0.0 = semua interface)bindPort = 7000→ Port untuk komunikasi antara server dan clientvhostHTTPPort = 80→ Port untuk HTTP traffic (website)vhostHTTPSPort = 443→ Port untuk HTTPS traffic (website dengan SSL)webServer.port = 7500→ Port untuk dashboard monitoringauth.token→ Password rahasia yang harus sama di client dan server (seperti kunci pintu)log→ Menyimpan log untuk troubleshooting
⚠️ PENTING: Ganti password dan token dengan kombinasi yang kuat!
Cara save file:
- Tekan
Ctrl+O(save) - Tekan
Enter - Tekan
Ctrl+X(exit)
Step 3: Buat systemd service untuk frps
Mengapa perlu systemd service?
Agar FRP server jalan otomatis setiap kali VPS reboot. Tanpa ini, kamu harus manual jalanin setiap kali VPS restart.
Buat file service:
nano /etc/systemd/system/frps.service
Paste ini:
[Unit]
Description=frp server
After=network.target
[Service]
Type=simple
User=root
Restart=on-failure
RestartSec=5s
ExecStart=/usr/local/bin/frps -c /etc/frps.toml
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target
Penjelasan:
After=network.target→ Tunggu sampai network ready duluRestart=on-failure→ Auto restart kalau crashExecStart→ Command untuk jalanin FRP serverWantedBy=multi-user.target→ Aktif saat boot
Save file, lalu jalankan commands ini:
# Reload systemd (biar tahu ada service baru)
systemctl daemon-reload
# Enable auto-start saat boot
systemctl enable frps
# Start service sekarang
systemctl start frps
# Cek status (harusnya "active (running)")
systemctl status frps
Step 4: Buka firewall di VPS
Mengapa perlu buka port?
Firewall seperti satpam VPS yang blokir semua koneksi masuk. Kita perlu kasih izin port tertentu agar bisa diakses dari luar.
Kalau pakai UFW (Ubuntu/Debian):
ufw allow 7000/tcp comment 'frp server'
ufw allow 7500/tcp comment 'frp dashboard'
ufw allow 80/tcp comment 'HTTP'
ufw allow 443/tcp comment 'HTTPS'
ufw allow 2222/tcp comment 'SSH tunnel'
Atau kalau pakai iptables:
iptables -A INPUT -p tcp --dport 7000 -j ACCEPT
iptables -A INPUT -p tcp --dport 7500 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
Penjelasan port:
- 7000 → Komunikasi FRP server-client
- 7500 → Dashboard monitoring
- 80/443 → Website kamu
- 2222 → SSH tunnel ke home server
Step 5: Test Dashboard
Buka browser, ketik: http://xxx.xxx.xxx.xxx:7500
Login dengan:
- Username:
admin - Password: (sesuai yang kamu set di config)
Atau test pakai curl:
curl -u 'admin:passwordkamu' http://xxx.xxx.xxx.xxx:7500
Kalau berhasil, kamu akan lihat dashboard kosong (normal, karena belum ada client connect).

Step 6: Install frp di Home Server
Sekarang giliran Home Server
SSH ke home server kamu:
ssh [email protected]
Install FRP (sama seperti di VPS):
cd /tmp
wget https://github.com/fatedier/frp/releases/download/v0.65.0/frp_0.65.0_linux_amd64.tar.gz
tar -xzf frp_0.65.0_linux_amd64.tar.gz
cd frp_0.65.0_linux_amd64
sudo cp frpc /usr/local/bin/
sudo cp frpc.toml /etc/frpc.toml
frpc -v
Step 7: Konfigurasi frpc di Home Server
Ini config paling penting!
Config ini memberitahu client: "connect ke server mana, dan forward traffic apa saja".
sudo nano /etc/frpc.toml
Paste config ini:
# frpc.toml - Client Config
serverAddr = "xxx.xxx.xxx.xxx"
serverPort = 7000
# Authentication (harus sama dengan server!)
auth.method = "token"
auth.token = "rahasia_token_12345"
# Log
log.to = "/var/log/frpc.log"
log.level = "info"
log.maxDays = 7
# Proxies
# HTTP Web (port 80 di home → port 80 di VPS)
[[proxies]]
name = "web"
type = "http"
localIP = "127.0.0.1"
localPort = 80
customDomains = ["xxx.xxx.xxx.xxx"]
# HTTPS Web (port 443 di home → port 443 di VPS)
[[proxies]]
name = "web-https"
type = "https"
localIP = "127.0.0.1"
localPort = 443
customDomains = ["xxx.xxx.xxx.xxx"]
# SSH (port 22 di home → port 2222 di VPS)
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 2222
Atau jika menggunakan domain
serverAddr = "45.77.169.158"
serverPort = 7000
auth.method = "token"
auth.token = "rahasia_token_12345"
log.to = "/var/log/frpc.log"
log.level = "info"
log.maxDays = 7
# Forward all HTTP traffic to NPM
[[proxies]]
name = "web"
type = "http"
localIP = "127.0.0.1"
localPort = 80
customDomains = [
"domainku.com",
"*.domainku.com",
]
# (Optional) If you want HTTPS FRP passthrough to NPM
[[proxies]]
name = "web-https"
type = "https"
localIP = "127.0.0.1"
localPort = 443
customDomains = [
"domainku.com",
"*.domainku.com",
]
# SSH Tunnel
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 2201
Penjelasan:
serverAddr→ IP VPS kamuauth.token→ HARUS SAMA dengan token di server[[proxies]]→ Definisi tunnel yang mau dibuat
Penjelasan setiap proxy:
- Proxy "web":
- Akses
http://xxx.xxx.xxx.xxx→ diteruskan ke port 80 home server
- Akses
- Proxy "web-https":
- Akses
https://xxx.xxx.xxx.xxx→ diteruskan ke port 443 home server
- Akses
- Proxy "ssh":
- SSH ke
xxx.xxx.xxx.xxx:2222→ diteruskan ke port 22 home server
- SSH ke
⚠️ Catatan: Kalau web kamu jalan di Docker, pastikan port 80/443 sudah di-expose!
Step 8: Buat systemd service untuk frpc
Buat service agar client jalan otomatis:
sudo nano /etc/systemd/system/frpc.service
Paste:
[Unit]
Description=frp client
After=network.target
[Service]
Type=simple
User=root
Restart=on-failure
RestartSec=5s
ExecStart=/usr/local/bin/frpc -c /etc/frpc.toml
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target
Jalankan:
sudo systemctl daemon-reload
sudo systemctl enable frpc
sudo systemctl start frpc
sudo systemctl status frpc
Step 9: Verify Koneksi
Cek logs di VPS:
tail -f /var/log/frps.log
Harusnya muncul log seperti ini:
[I] [service.go:xxx] client login info: ip [192.168.x.x]
[I] [proxy.go:xxx] proxy added: [web]
[I] [proxy.go:xxx] proxy added: [web-https]
[I] [proxy.go:xxx] proxy added: [ssh]
Cek logs di Home Server:
sudo tail -f /var/log/frpc.log
Buka Dashboard:
http://xxx.xxx.xxx.xxx:7500
Kamu harusnya lihat:
- ✅ Client connected
- ✅ 3 proxies active (web, web-https, ssh)
Step 10: Test Akses
Test HTTP:
curl http://xxx.xxx.xxx.xxx
Harusnya dapat response dari website di home server kamu!
Test SSH:
ssh -p 2222 [email protected]
Harusnya connect ke home server kamu!
Troubleshooting
Kalau tidak connect:
- Cek status service:
systemctl status frpsdansystemctl status frpc - Cek logs:
tail -f /var/log/frps.logdantail -f /var/log/frpc.log - Pastikan token sama di server dan client
- Pastikan firewall tidak block port 7000
Kalau HTTP tidak bisa diakses:
- Pastikan web server jalan di home:
curl http://localhost:80 - Cek logs FRP
- Pastikan
customDomainsbenar
Kesimpulan
Sekarang home server kamu bisa diakses dari internet melalui VPS!
Yang sudah kita setup:
- ✅ FRP Server di VPS
- ✅ FRP Client di Home Server
- ✅ HTTP/HTTPS tunnel
- ✅ SSH tunnel
- ✅ Auto-start service
- ✅ Dashboard monitoring
Selamat mencoba! 🚀