Skip to content

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_URLCLIENT_API_URL」。

注意⚠️:请首先使用普通部署的方式部署成功!然后再来调整这两个变量!!!!

橙色是不安全,绿色是安全。你需要保证两个环境变量都有设置,才能正常工作

测试端口是否开放的方法(以8080为例),在服务器上运行:

shell
python3 -m http.server 8080

然后在另一台电脑/服务器上执行:

shell
curl 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文件,写入以下内容

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 # RPC 监听端口
      MASTER_API_HOST: 1.2.3.4 # 服务器的外部IP或域名
      MASTER_API_PORT: 9000 # API/WebUI监听端口
      # CLIENT_RPC_URL和CLIENT_API_URL请根据实际情况设置,设置为外部可以通过url访问到master的形式
      # Client 连接 master RPC 的 URL,如果使用反向代理,请设置为通过反向代理访问的 URL(如wss://example.com:443)
      CLIENT_RPC_URL: grpc://1.2.3.4:9001
      # Client 连接 master API/WebUI 的 URL,如果使用反向代理,请设置为通过反向代理访问的 URL(如https://example.com:443)
      CLIENT_API_URL: http://1.2.3.4:9000
    volumes:
      - ./data:/data # 数据存储位置
    restart: unless-stopped
    command: master

方式二:Docker 命令部署

服务器需要安装 docker,我们推荐使用 host 网络模式部署 Master

bash
# 推荐
# MASTER_RPC_HOST等0.0.0.0要改成你服务器的外部IP
# APP_GLOBAL_SECRET注意不要泄漏,客户端和服务端的是通过Master生成的
# CLIENT_RPC_URL和CLIENT_API_URL请根据实际情况设置
# 如果使用反向代理,请设置为通过反向代理访问的 URL,也就是外部如何访问master
# 如 443端口代理example.com到9000端口
# CLIENT_RPC_URL=wss://example.com:443
# CLIENT_API_URL=https://example.com:443
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 \
	-e CLIENT_RPC_URL=grpc://0.0.0.0:9001 \
	-e CLIENT_API_URL=http://0.0.0.0:9000 \
	vaalacat/frp-panel

如果你不想使用 host 网络模式,请参考使用下面的命令修改

bash
# 或者
# 运行时记得删除命令中的中文
# CLIENT_RPC_URL和CLIENT_API_URL请根据实际情况设置,设置为外部可以通过url访问到master的形式
# 如果使用反向代理,请设置为通过反向代理访问的 URL,也就是外部如何访问master
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
	-e CLIENT_RPC_URL=grpc://0.0.0.0:9001 \
	-e CLIENT_API_URL=http://0.0.0.0:9000 \
	vaalacat/frp-panel

方式三:使用 docker 反向代理 TLS 加密部署

这里我们以 Traefik 为例

Traefik 可以实时自动识别 Docker 容器的端口并热更新配置,非常适合 Docker 服务的反向代理

首先创建一个名为traefik的反向代理专用网络

bash
docker network create traefik

然后启动反向代理和 Master 服务

  • docker-compose.yaml
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.example.com
      MASTER_API_SCHEME: https
      CLIENT_RPC_URL: wss://frpp.example.com:443
      CLIENT_API_URL: https://frpp.example.com:443
    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/WSS
      - 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
      # 下方如果你用不到 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
DB_DSN=data.db
CLIENT_RPC_URL=grpc://IP:9001
CLIENT_API_URL=http://IP:9000
  • master: frp-panel-amd64.exe master