Có khá nhiều feature, tốt hơn ngrok, localtunnel, nhưng ở đây chỉ bắt đầu với việc sử dụng frp để expose localhost dưới một subdomain bất kỳ, có SSL.
Cài đặt bao gồm 3 phần:
- Cài đặt domain
- Cài đặt frps trên server
- Cài đặt frpc trên máy local
Cài đặt domain
Tạo 2 record như sau, với value là IP của server mà bạn muốn dùng để cài đặt frp:
frp.duocnguyen.dev.
*.frp.duocnguyen.dev.
Cài đặt FRP server
Download file từ Github
wget https://github.com/fatedier/frp/releases/download/v0.42.0/frp_0.42.0_linux_amd64.tar.gz
Giải nén nó:
tar -zxvf frp_0.42.0_linux_amd64.tar.gz
Di chuyển vào thứ mục vừa giải nén:
cd frp_0.42.0_linux_amd64
Chép file frps
vào thư mục bin:
cp frps /usr/bin
Chép file service:
cp systemd/frpc.service /etc/systemd/system/.
chmod 754 /etc/systemd/system/frps.service
Chép file config:
mkdir /etc/frp
cp frps.ini /etc/frp/.
Config file /etc/frp/frps.ini
[common]
bind_port = 7000
kcp_bind_port = 7000
vhost_http_port = 8090
token = 2J6R3xfPBeHyKX
tcp_mux = true
subdomain_host = frp.duocnguyen.dev
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = ipIf08D3a42
Enable service:
systemctl enable frps.service
Chạy service
systemctl start frps.service
Cài nginx
sudo apt update
sudo apt install nginx
Tạo config:
touch /etc/nginx/sites-available/frp.duocnguyen.dev.conf
Link nó qua bên enabled:
sudo ln -s /etc/nginx/sites-available/frp.duocnguyen.dev.conf /etc/nginx/sites-enabled/
Config file:
server {
server_name *.frp.duocnguyen.dev;
listen 80;
location / {
proxy_pass http://127.0.0.1:8090;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/frp.duocnguyen.dev/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/frp.duocnguyen.dev/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
server {
if ($host = .frp.duocnguyen.dev) {
return 301 https://$host$request_uri;
}
listen 80;
return 404;
}
Cài đặt certbot
sudo apt install python3 python3-venv libaugeas0
sudo python3 -m venv /opt/certbot/
sudo /opt/certbot/bin/pip install --upgrade pip
sudo /opt/certbot/bin/pip install certbot certbot-nginx
sudo ln -s /opt/certbot/bin/certbot /usr/bin/certbot
Config cert bot và nginx
sudo certbot -d *.frp.duocnguyen.dev -d frp.duocnguyen.dev --manual --preferred-challenges dns-01 certonly
Cài đặt DNS theo như hướng dẫn là được.
Cài đặt client
Cài đặt client:
brew install frp
Hoặc tải tại trang Releases · fatedier/frp · GitHub
Config client:
[common]
server_addr = 128.199.148.122
server_port = 7000
protocol = kcp
token = 2J6R3xfPBeHyKX
admin_addr = 127.0.0.1
admin_port = 7400
admin_user = admin
admin_pwd = admin
[fireass]
type = http
local_port = 8080
subdomain = fireass
use_compression = true
Run client:
frpc -c ./frpc.ini
Sử dụng
Chạy server của mình:
go run ./cmd/server/...
Chạy frp:
frpc -c ./frpc.ini
Truy cập vào trang:
https://fireass.frp.duocnguyen.dev/ping