Quick start
从零开始部署 xfrp
需要 Go 1.26+、Node.js 20+ 和 pnpm。前端构建产物由 Nginx 托管,中控只提供 API。
1. 构建
在项目根目录执行,产物包括三个二进制和前端静态文件。
make build
# bin/xfrp-master
# bin/xfrp-server
# bin/xfrp-client
# web/dist/website web/dist/user web/dist/admin
2. 创建管理员并启动中控
管理员没有默认密码,只能通过命令行或已有管理员创建。
./bin/xfrp-master admin create \
--username admin \
--email [email protected]
./bin/xfrp-master --addr :9000
健康检查:http://127.0.0.1:9000/healthz。
3. 接入网关
在管理端创建网关,复制安装命令到公网机器执行。每台网关都必须归属一个用户。
xfrp-server \
--master wss://panel.example.com/api/v1/ws/node \
--id srv_xxxxxxxxxxxx \
--secret xxxxxxxx \
--data-dir /var/lib/xfrp
4. 接入客户端并添加代理
内网机器只安装 xfrp-client,运行 frpc,不需要网页。
xfrp-client \
--master wss://panel.example.com/api/v1/ws/node \
--id cli_xxxxxxxxxxxx \
--secret xxxxxxxx \
--data-dir /var/lib/xfrp
节点也支持 XFRP_MASTER_URL、XFRP_NODE_ID、XFRP_NODE_SECRET
环境变量,适合交给 systemd 或 Docker 管理。
5. Nginx 路径
公共站、用户控制台、管理端和 API 使用同一个域名,按二级路径转发。
# http {} 中:map $http_upgrade $connection_upgrade { default upgrade; '' close; }
location / { root /srv/xfrp/website; try_files $uri $uri/ $uri.html =404; }
location = /user { return 301 /user/; }
location /user/ { root /srv/xfrp; try_files $uri $uri/ /user/index.html; }
location = /admin { return 301 /admin/; }
location /admin/ { root /srv/xfrp; try_files $uri $uri/ /admin/index.html; }
location /api/ {
proxy_pass http://127.0.0.1:9000;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_read_timeout 3600s;
}
完整示例见仓库的 deploy/nginx.conf.example。生产环境务必使用 HTTPS,并把中控的
http.public_url 设为对外地址,节点安装命令会据此生成 wss:// 地址。
下一步
登录控制台,添加客户端和第一条代理。