7
0
0

docker搭建frp

2026-06-30
2026-06-30

📝 笔记摘要: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 = token123456789token

2. 运行 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 -d

3. 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 -d

frp_0.48.0_windows_amd64.7z

4. 客户端设置开机自启

  • 编写 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

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或者给予支持!