Administrator
发布于 2025-08-13 / 191 阅读
0
0

Docker-FRP 配置指南

Docker-FRP 配置指南

一、准备工作

  1. 安装 Docker 及 Docker Compose(推荐版本 20.10+)
  2. 准备域名并完成 DNS 解析(用于 HTTP/HTTPS 穿透)
  3. 开放服务器防火墙端口(7000/80/443 等)

二、服务端配置 (frps)

1. Docker Compose 文件 (docker-compose.frps.yml)

version: '3.8'

services:
  frps:
    image: snowdreamtech/frps:latest
    container_name: frps
    restart: always  # 异常退出自动重启
    ports:
      - "7000:7000"  # 控制端口
      - "80:80"      # HTTP穿透
      - "443:443"    # HTTPS穿透
    volumes:
      - ./frps.ini:/etc/frp/frps.ini  # 挂载配置文件
    networks:
      - frp-net

networks:
  frp-net:
    driver: bridge

2. 配置文件 (frps.ini)

[common]
bind_port = 7000             # 客户端连接端口
vhost_http_port = 80         # HTTP访问端口
vhost_https_port = 443       # HTTPS访问端口
authentication_method = token
token = your_strong_password_here  # 建议使用复杂令牌
max_pool_count = 100         # 最大连接池数量

三、客户端配置 (frpc)

1. Docker Compose 文件 (docker-compose.frpc.yml)

version: '3.8'

services:
  frpc:
    image: snowdreamtech/frpc:latest
    container_name: frpc
    restart: always
    depends_on:
      - web_service  # 假设需要暴露的本地服务
    volumes:
      - ./frpc.ini:/etc/frp/frpc.ini
    network_mode: host  # 推荐使用host模式

  # 示例本地服务(可选)
  web_service:
    image: nginx:alpine
    ports:
      - "8080:80"

2. 配置文件 (frpc.ini)

[common]
server_addr = x.x.x.x       # 服务端公网IP
server_port = 7000          # 与服务端bind_port一致
token = your_strong_password_here

[web_http]                  # 自定义服务名称
type = http                 # 协议类型
local_ip = web_service      # 指向Docker服务名
local_port = 80             # 容器内部端口
custom_domains = demo.yourdomain.com  # 绑定的域名

[ssh_tunnel]                # SSH隧道示例
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 2222          # 通过公网2222端口访问

四、高级配置技巧

1. 环境变量注入

environment:
  - FRPC_SERVER_ADDR=1.2.3.4
  - FRPC_TOKEN=secure_token

2. HTTPS 证书配置(服务端)

# frps.ini中启用HTTPS
[common]
tls_cert_file = /etc/frp/ssl/fullchain.pem
tls_key_file = /etc/frp/ssl/privkey.pem

3. 端口复用(服务端)

kcp_bind_port = 7000

五、操作命令

# 启动服务端
docker-compose -f docker-compose.frps.yml up -d

# 查看日志
docker logs -f frps

# 客户端热重载配置(无需重启)
docker exec frpc kill -SIGHUP 1

六、安全建议

  1. 令牌强化:使用 openssl rand -hex 16 生成高强度 token
  2. 最小化端口暴露:仅开放必要端口
  3. TLS 加密:为控制通道启用 TLS
  4. 访问控制:通过 allow_ports 限制客户端可用端口
  5. 日志监控:定期检查 Docker 容器日志

七、常见故障排查

  • 🔍 端口冲突netstat -tuln | grep 7000
  • 🔑 令牌不一致:服务端与客户端需完全匹配
  • 🌐 网络模式:客户端推荐使用 network_mode: host
  • 📁 文件权限:确保配置文件有读取权限

官方文档参考
https://gofrp.org/docs/


评论