Docker-FRP 配置指南
一、准备工作
- 安装 Docker 及 Docker Compose(推荐版本 20.10+)
- 准备域名并完成 DNS 解析(用于 HTTP/HTTPS 穿透)
- 开放服务器防火墙端口(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
六、安全建议
- 令牌强化:使用
openssl rand -hex 16生成高强度 token - 最小化端口暴露:仅开放必要端口
- TLS 加密:为控制通道启用 TLS
- 访问控制:通过
allow_ports限制客户端可用端口 - 日志监控:定期检查 Docker 容器日志
七、常见故障排查
- 🔍 端口冲突:
netstat -tuln | grep 7000 - 🔑 令牌不一致:服务端与客户端需完全匹配
- 🌐 网络模式:客户端推荐使用
network_mode: host - 📁 文件权限:确保配置文件有读取权限
官方文档参考:
https://gofrp.org/docs/