Reverse Proxy Tools - frp

frp is a fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet. As of now, it supports tcp & udp, as well as http and https protocols, where requests can be forwarded to internal services by domain name.


Our purpose is to access LAN devices from the external network. And we have a server which have public IP. How can we connect LAN device through it?


Download compiled binaries at

Move frp folder to /usr/local/frp
Create soft links

$ ln -s /usr/local/frp/frps /usr/local/frps
$ ln -s /usr/local/frp/frpc /usr/local/frpc

Move frps.ini & frpc.ini to /etc/frp/

For Reverse Proxy Server

Edit config file - frps.ini

bind_addr =
bind_port = 7000

token = vincent
allow_ports = 3001,3003,4000-50000
max_pool_count = 5
login_fail_exit = false

dashboard_addr =
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin

log_file = ./frps.log
log_level = info
log_max_days = 3

Start frp server

$ sudo ./frps -c frps.ini

View frp status at dashboard (http://serverip:7500)

For Target Server

Edit config file - frpc.ini

server_addr = serverip
server_port = 7000
token = javen

type = tcp
local_ip =
local_port = 22
remote_port = 3001

Start frp client

$ sudo ./frpc -c frpc.ini


$ ssh [email protected] -p 3001


How to Run frp at startup?

Way1: Use systemctl

Edit /etc/systemd/system/frps.service

Description=frps daemon

ExecStart=/usr/local/frp/frps -c /etc/frp/frps.ini


Start service

$ systemctl start frps
$ systemctl enable frps

Way2: Use supervisor

Edit /etc/supervisor/conf.d/frps.ini

command=/usr/local/frp/frps -c /etc/frp/frps.ini

Reload supervisor config file

$ sudo supervisorctl reload