Master 部署
Master 推荐使用 docker 部署!不推荐直接安装到服务器中
会给出三种部署方式,任选一种即可
部署后没有默认用户,注册的第一个用户即为管理员,为了安全,默认不开启多用户注册
程序的默认存储数据路径和程序文件同目录,如需修改请参考配置表格
重要!:如果你想只部署 master,同时作为 server 运行,请不要忘记启动 master 后,在 webui 的配置服务端中修改 default 的配置
前期准备
服务器开放公网端口:
- WEBUI 端口: 默认
TCP 9000
- RPC 端口: 默认
TCP 9001
- frps 的API端口:没有默认,请随意预留,例子使用
TCP/UDP 7000
- frps 对外开放的服务端口:没有默认,请随意预留,例子使用
TCP/UDP 26999-27050
如果使用反向代理,请忽略 WEBUI 和 RPC 端口,放行 80/443 即可
WEBUI 端口也可以处理 h2c 格式的 RPC 连接
RPC 端口也可以处理自签名 HTTPS 的 API 连接
二者都可使用反向代理服务器连接并提供TLS
如果你想要使用安全的方式,请参考下图设置环境变量「CLIENT_RPC_URL
和CLIENT_API_URL
」。
注意⚠️:请首先使用普通部署的方式部署成功!然后再来调整这两个变量!!!!
橙色是不安全,绿色是安全。你需要保证两个环境变量都有设置,才能正常工作
测试端口是否开放的方法(以8080为例),在服务器上运行:
shellpython3 -m http.server 8080
然后在另一台电脑/服务器上执行:
shellcurl http://服务器公网IP/域名:8080 -I
成功的话,输出类似
HTTP/1.0 200 OK Server: SimpleHTTP/0.6 Python/3.11.0 Date: Sat, 12 Apr 2025 17:12:15 GMT Content-type: text/html; charset=utf-8 Content-Length: 8225
在 Linux 上部署
方式一:Docker Compose 部署
服务器需要安装docker和docker compose
首先创建一个docker-compose.yaml
文件,写入以下内容
services:
frpp-master:
image: vaalacat/frp-panel:latest
network_mode: host
environment:
APP_GLOBAL_SECRET: your_secret
MASTER_RPC_HOST: 1.2.3.4 #服务器的外部IP或域名
MASTER_RPC_PORT: 9001
MASTER_API_HOST: 1.2.3.4 #服务器的外部IP或域名
MASTER_API_PORT: 9000
MASTER_API_SCHEME: http
volumes:
- ./data:/data # 数据存储位置
restart: unless-stopped
command: master
方式二:Docker 命令部署
服务器需要安装 docker,我们推荐使用 host 网络模式部署 Master
# 推荐
# MASTER_RPC_HOST要改成你服务器的外部IP
# APP_GLOBAL_SECRET注意不要泄漏,客户端和服务端的是通过Master生成的
docker run -d \
--network=host \
--restart=unless-stopped \
-v /opt/frp-panel:/data \
-e APP_GLOBAL_SECRET=your_secret \
-e MASTER_RPC_HOST=0.0.0.0 \
vaalacat/frp-panel
如果你不想使用 host 网络模式,请参考使用下面的命令修改
# 或者
# 运行时记得删除命令中的中文
docker run -d -p 9000:9000 \ # API控制台端口
-p 9001:9001 \ # rpc端口
-p 7000:7000 \ # frps 端口
-p 27000-27050:27000-27050 \ # 给frps预留的端口
--restart=unless-stopped \
-v /opt/frp-panel:/data \ # 数据存储位置
-e APP_GLOBAL_SECRET=your_secret \ # Master的secret注意不要泄漏,客户端和服务端的是通过Master生成的
-e MASTER_RPC_HOST=0.0.0.0 \ # 这里要改成你服务器的外部IP
vaalacat/frp-panel
方式三:使用 docker 反向代理 TLS 加密部署
这里我们以 Traefik 为例
Traefik
可以实时自动识别 Docker 容器的端口并热更新配置,非常适合 Docker 服务的反向代理
首先创建一个名为traefik
的反向代理专用网络
docker network create traefik
然后启动反向代理和 Master 服务
docker-compose.yaml
version: '3'
services:
traefk-reverse-proxy:
image: traefik:v3.3
restart: unless-stopped
networks:
- traefik
command:
- --entryPoints.web.address=:80
- --entryPoints.websecure.address=:443
- --entryPoints.websecure.http2.maxConcurrentStreams=250
- --providers.docker
- --providers.docker.network=traefik
- --api.insecure # 在生产环境请删除这一行
# 这下面使用 80 端口做ACME HTTP DNS证书验证
- --certificatesresolvers.le.acme.email=me@example.com
- --certificatesresolvers.le.acme.storage=/etc/traefik/conf/acme.json
- --certificatesresolvers.le.acme.httpchallenge=true
ports:
# 反向代理的 HTTP 端口
- "80:80"
# 反向代理的 HTTPS 端口
- "443:443"
# Traefik 的 Web UI (--api.insecure=true 会使用这个端口)
# 生产环境请删除这个端口
- "8080:8080"
volumes:
# 挂载 docker.sock,这样 Traefik 可以自动识别主机上所有 docker 容器反向代理配置
- /var/run/docker.sock:/var/run/docker.sock
# 保存 Traefik 申请的证书
- ./conf:/etc/traefik/conf
frpp-master:
image: vaalacat/frp-panel:latest # 这里换成你想使用的版本
environment:
APP_GLOBAL_SECRET: your_secret
# 因为 api 和 rpc 使用的协议不一样
# 我们需要对 api 和 rpc 使用两个域名
# 以便反向代理正确识别需要转发的协议
MASTER_RPC_HOST: frpp.example.com
MASTER_API_PORT: 443
MASTER_API_HOST: frpp-rpc.example.com
MASTER_API_SCHEME: https
networks:
- traefik
volumes:
- ./data:/data
ports:
# 无需为 master 预留 api 和 rpc 端口
# 预留frps api端口
- 7000:7000
- 7000:7000/udp
# 预留frps的业务端口
# 26999 端口是留给 frps 的http代理端口
- 26999-27050:26999-27050
- 26999-27050:26999-27050/udp
restart: unless-stopped
command: master
labels:
# API
- traefik.http.routers.frp-panel-api.rule=Host(`frpp.example.com`)
- traefik.http.routers.frp-panel-api.tls=true
- traefik.http.routers.frp-panel-api.tls.certresolver=le
- traefik.http.routers.frp-panel-api.entrypoints=websecure
- traefik.http.routers.frp-panel-api.service=frp-panel-api
- traefik.http.services.frp-panel-api.loadbalancer.server.port=9000
- traefik.http.services.frp-panel-api.loadbalancer.server.scheme=http
# RPC
- traefik.http.routers.frp-panel-rpc.rule=Host(`frpp-rpc.example.com`)
- traefik.http.routers.frp-panel-rpc.tls=true
- traefik.http.routers.frp-panel-rpc.tls.certresolver=le
- traefik.http.routers.frp-panel-rpc.entrypoints=websecure
- traefik.http.routers.frp-panel-rpc.service=frp-panel-rpc
- traefik.http.services.frp-panel-rpc.loadbalancer.server.port=9000
- traefik.http.services.frp-panel-rpc.loadbalancer.server.scheme=h2c
# 下方如果你用不到 frps 的http代理,可以不要
# 需要配置域名 *.frpp.example.com 泛解析到你服务器的公网IP
# 这样可以实现使用 .frpp.example.com 结束的域名,在 443 端口,转发多个服务到多个 frpc
- traefik.http.routers.frp-panel-tunnel.rule=HostRegexp(`.*.frpp.example.com`)
- traefik.http.routers.frp-panel-tunnel.tls.domains[0].sans=*.frpp.example.com
- traefik.http.routers.frp-panel-tunnel.tls=true
- traefik.http.routers.frp-panel-tunnel.tls.certresolver=le
- traefik.http.routers.frp-panel-tunnel.entrypoints=websecure
- traefik.http.routers.frp-panel-tunnel.service=frp-panel-tunnel
- traefik.http.services.frp-panel-tunnel.loadbalancer.server.port=26999
- traefik.http.services.frp-panel-tunnel.loadbalancer.server.scheme=http
networks:
traefik:
external: true
name: traefik
上方的 docker-compose.yaml
部署完成后,可以访问 服务器公网IP/域名:8080
查看反向代理状态
随后配置 default server 即可实现 frp 子域名转发:
配置项 | 值 |
---|---|
FRPs 监听端口 | 7000 |
FRPs 监听地址 | 0.0.0.0 |
代理监听地址 | 0.0.0.0 |
HTTP 监听端口 | 26999 |
域名后缀 | frpp.example.com |
在 Windows 上部署
直接运行
在下载的可执行文件同名文件夹下创建一个 .env
文件(注意不要有后缀名),然后输入以下内容保存后运行对应命令
APP_GLOBAL_SECRET=your_secret
MASTER_RPC_HOST=IP
DB_DSN=data.db
- master:
frp-panel-amd64.exe master