You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
frp/doc/quick_start_en.md

3.9 KiB

Quick Start

frp is easier to use compared with other similar projects.

We will use two simple demo to demonstrate how to use frp.

  1. How to create a connection to server A's ssh port by server B with public IP address x.x.x.x(replace to the real IP address of your server).
  2. How to visit web service in server A's 8000 port and 8001 port by web01.yourdomain.com and web02.yourdomain.com through server B with public ID address.

Download SourceCode

go get github.com/fatedier/frp is recommended, then the code will be copied to the directory $GOPATH/src/github.com/fatedier/frp.

Or you can use git clone https://github.com/fatedier/frp.git $GOPATH/src/github.com/fatedier/frp.

If you want to try it quickly, download the compiled program and configuration files from https://github.com/fatedier/frp/releases.

Compile

Enter the root directory and execute make, then wait until finished.

bin include all executable programs when conf include corresponding configuration files.

Pre-requirement

  • Go environment. Version of go >= 1.4.
  • Godep (if not exist, go get will be executed to download godep when compiling)

Deploy

  1. Move ./bin/frps and ./conf/frps.ini to any directory of server B.
  2. Move ./bin/frpc and ./conf/frpc.ini to any directory of server A.
  3. Modify all configuration files, details in next paragraph.
  4. Execute nohup ./frps & or nohup ./frps -c ./frps.ini & in server B.
  5. Execute nohup ./frpc & or nohup ./frpc -c ./frpc.ini & in server A.
  6. Use ssh -oPort=6000 {user}@x.x.x.x to test if frp is work(replace {user} to real username in server A), or visit custom domains by browser.

Tcp port forwarding

Configuration files

frps.ini

[common]
bind_addr = 0.0.0.0
# for accept connections from frpc
bind_port = 7000
log_file = ./frps.log
log_level = info

# ssh is the custom name of proxy and there can be many proxies with unique name in one configure file
[ssh]
auth_token = 123
bind_addr = 0.0.0.0
# finally we connect to server A by this port
listen_port = 6000

frpc.ini

[common]
# server address of frps
server_addr = x.x.x.x
server_port = 7000
log_file = ./frpc.log
log_level = info
# for authentication
auth_token = 123

# ssh is proxy name same with configure in frps.ini
[ssh]
# local port which need to be transferred
local_port = 22
# if use_encryption equals true, messages between frpc and frps will be encrypted, default is false
use_encryption = true

Http port forwarding and Custom domains binding

If you only want to forward port one by one, you just need refer to Tcp port forwarding.If you want to visit different web pages deployed in different web servers by server B's 80 port, you should specify the type as http.

You also need to resolve your A record of your custom domain to [server_addr], or resolve your CNAME record to [server_addr] if [server_addr] is a domain.

After that, you can visit your web pages in local server by custom domains.

Configuration files

frps.ini

[common]
bind_addr = 0.0.0.0
bind_port = 7000
# if you want to support vhost, specify one port for http services
vhost_http_port = 80
log_file = ./frps.log
log_level = info

[web01]
type = http
auth_token = 123
# # if proxy type equals http, custom_domains must be set separated by commas
custom_domains = web01.yourdomain.com

[web02]
type = http
auth_token = 123
custom_domains = web02.yourdomain.com

frpc.ini

[common]
server_addr = x.x.x.x
server_port = 7000
log_file = ./frpc.log
log_level = info
auth_token = 123 

# custom domains are set in frps.ini
[web01]
type = http
local_ip = 127.0.0.1
local_port = 8000
# encryption is optional, default is false
use_encryption = true

[web02]
type = http
local_ip = 127.0.0.1
local_port = 8001