docker搭建frp
📝 笔记摘要:frp 简介
1. frp 是什么? frp 是一个专注于内网穿透的高性能反向代理应用。它允许你通过一个具有公网 IP 的服务器(VPS),将位于内网或局域网中的服务(如你的 Halo 博客、Nextcloud、SSH)暴露给互联网访问。
2. 核心工作原理:
客户端 (frpc): 部署在你的内网机器上(如家里的电脑、NAS)。
服务端 (frps): 部署在拥有公网 IP 的云服务器上。
穿透过程: 内网客户端主动连接公网服务端,建立一条稳定的隧道。当外部用户访问公网服务器的特定端口时,流量会通过这条隧道转发到内网的服务上。
3. 最大优势:
无需公网 IP: 完美解决家庭宽带没有固定公网 IPv4 地址的问题。
支持多种协议: 不仅支持 HTTP/HTTPS(适合建站),还支持 TCP、UDP、STCP(安全隧道)、XTCP(点对点穿透,流量不经过服务器)等。
配置灵活: 可以通过简单的
.ini或.toml配置文件定义多个映射规则。Go 语言编写: 跨平台、单二进制文件、资源占用极低,部署极其方便。
4. 与 ZeroTier/WireGuard 的区别:
ZeroTier/WireGuard: 组建的是虚拟局域网。你需要先在设备上安装客户端加入网络,才能互相访问。适合个人或小团队内部使用。
frp: 实现的是公网直接访问。任何互联网用户只要知道你的域名和端口,就能直接访问你的服务。适合对外提供网站、API 或公开服务。
💡 适用场景:
在没有公网 IP 的家庭宽带上搭建并对外发布 Halo 博客。
远程 SSH 连接家里的 Linux 服务器或 Windows 电脑。
将内网的 Nextcloud 或 AList 分享给朋友访问。
调试微信开发、小程序开发等需要公网回调 URL 的场景。
FRP 穿透环境搭建全流程笔记
1. 准备环境
确保拥有一台可访问的服务器,且具备公网IP。
安装必要工具:
docker
docker-compose(可选)
配置服务端:
在 /docker/frp/ 目录下创建 frps.ini 文件,内容如下:
[common]
bind_port = 7100
# 启用面板
dashboard_port = 7101
# 面板登录名和密码
dashboard_user = xxx
dashboard_pwd = xxxxx
# 使用 http/https 代理端口
vhost_http_port = 7102
vhost_https_port = 7103
# 自定义域名
subdomain_host = penetrate.yourdomain.top
# 服务 token(建议设置)
token = token123456789token2. 运行 Docker 脚本
服务端 Docker Compose 配置:
version: "3.9"
x-image:
&frp-image
snowdreamtech/frps:0.40.0
services:
frp40:
image: *frp-image
container_name: frp40
network_mode: host
restart: always
volumes:
- ./frps.ini:/etc/frp/frps.ini
docker-compose up -d3. Linux 客户端搭建
客户端配置文件 frpc.ini 示例:
# frpc.ini
[common]
server_addr = 43.132.202.152
server_port = 5443
token = token123456789token
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 222
remote_port = 6000
[qb]
type = tcp
local_ip = 127.0.0.1
local_port = 8092
remote_port = 6001
[jellyfin]
type = tcp
local_ip = 127.0.0.1
local_port = 32771
remote_port = 6002
[NAS]
type = tcp
local_ip = 127.0.0.1
local_port = 5000
remote_port = 6003
[nextcloud]
type = tcp
local_ip = 127.0.0.1
local_port = 4433
remote_port = 6004
[RDP]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 7001
[vnc]
type = tcp
local_ip = 127.0.0.1
local_port = 5900
remote_port = 5900
use_encryption = true
use_compression = true客户端 Docker Compose 配置:
version: '3.3'
services:
frpc:
restart: always
network_mode: host
volumes:
- './frpc.ini:/etc/frp/frpc.ini'
container_name: frpc
image: snowdreamtech/frpc:0.40.0
docker-compose up -d一键启动脚本 start.sh:
docker rm -f frpc
docker compose up -d4. 客户端设置开机自启
编写 Windows 启动脚本(frp.vbs):
set ws=WScript.CreateObject("WScript.Shell")
ws.Run "d:\frpc.exe -c d:\frpc_net.ini",0 将脚本放置于如下路径:
E:\LLM\models\sakura\my-model.yaml

5. 使用品牌 FRP 穿透应用时,需映射到 Docker 网关
查看 docker0 网关 IP:
ip addr show docker0 |grep inet
