侧边栏壁纸
  • 累计撰写 116 篇文章
  • 累计创建 19 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

内网穿透神器!用 Docker 部署 FRP,家庭 NAS 也能外网访问

zero
2024-05-20 / 0 评论 / 0 点赞 / 8 阅读 / 13120 字
温馨提示:
本文最后更新于 2025-07-30,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

🚀 前言:在公网和内网之间自由穿梭的利器 —— FRP

很多人在家中或公司搭建了服务,如 NAS、内网网页、远程桌面或控制器等,但由于没有固定公网 IP 或受防火墙限制,外网访问常常困难重重。

这时候,内网穿透工具 FRP(Fast Reverse Proxy) 就派上用场了。它可以让你:

  • ✈️ 从外网访问内网服务

  • 📡 不需要公网 IP

  • 🔐 自主可控、端到端安全

本教程基于frp_0.63.0将教你如何使用 Docker 快速搭建 frps(服务端)和 frpc(客户端),实现本地服务向公网暴露的完整穿透方案

Github地址: https://github.com/fatedier/frp/releases/tag/v0.63.0


📌 一、核心概念简介

组件

作用

frps

部署在公网服务器上,负责转发请求

frpc

部署在内网机器上,连接 frps,将本地服务映射到公网

Docker

提供容器化部署,更方便、可移植、可自动重启


🛠️ 二、FRP 目录结构预设

建议你在部署目录下组织如下结构:

复制编辑
frp/
├── frps/
│   └── frps.ini
├── frpc/
│   └── frpc.ini
└── docker-compose.yml

📁 三、frps.ini(服务端配置)

位于 frp/frps/frps.toml

bindAddr = "0.0.0.0"
bindPort = 42001 # FRP主程序端口

auth.method = "token"
auth.token = "token123"

webServer.addr = "0.0.0.0"
webServer.port = 42002 # FRP-Web页面端口
webServer.user = "admin"
webServer.password = "admin123"

vhostHttpPort = 42003 # web代理端口

# tls
#transport.tls.force = true
#transport.tls.certFile = "/etc/frp/ssl/server.crt"
#transport.tls.keyFile = "/etc/frp/ssl/server.key"
#transport.tls.trustedCaFile = "/etc/frp/ssl/ca.crt"

✅ frps 监听 42001 端口用于和客户端通信,42002 是 Web Dashboard 控制台。


📁 四、frpc.ini(客户端配置)

位于 frp/frpc/frpc.toml

serverAddr = "xxx.bigbey.com"
serverPort = 42001

[auth]
method = "token"
token = "token123"

[[proxies]]
name = "my-web"
type = "http"
localIP = "127.0.0.1"
localPort = 8080 # 本地需要代理的端口
customDomains = ["xxx.bigbey.com"]
# 运行代码
./frpc -c frpc.toml

✅ 本示例将内网的 8080 端口映射为 http://yourdomain.com


📦 五、docker-compose.yml 配置

放在 frp/docker-compose.yml 中,统一管理服务端和客户端:

version: '3.8'

services:
  frps:
    image: snowdreamtech/frps:0.63.0
    container_name: frps
    restart: always
    network_mode: host
    volumes:
      - ./data/frps.toml:/etc/frp/frps.toml
      - ./data/ssl:/etc/frp/ssl
    labels:
      createdBy: "Apps"

说明:

  • 使用 snowdreamtech/frpsfrpc 镜像(常用稳定版)

  • 配置文件挂载到容器内部 /etc/frp/

  • 客户端使用 host 网络模式以支持任意端口映射(如远程桌面)


▶️ 六、一键部署

进入目录后运行:

docker-compose up -d

使用以下命令查看服务状态:

docker-compose ps
docker logs -f frpc

🌐 七、效果验证

客户端正常连接 frps,日志中显示:

login to server success, get run id xxxxx
  • 本地部署的网页(如 http://127.0.0.1)可以通过 http://yourdomain.com 从外部访问

  • 访问 http://<服务器IP>:7500 登录 Dashboard(admin/admin)


🫵 八、原理图

✅ 九、常用命令

操作

命令

启动服务

docker-compose up -d

查看日志

docker logs -f frps

停止服务

docker-compose down

更新镜像

docker-compose pull && docker-compose up -d


🔒 十、安全建议(生产环境)

  • 配置 tls_enable = true 增加传输安全

  • 修改 Dashboard 账号密码

  • 使用防火墙限制 frps 对外访问的端口

  • DNS 推荐使用 Cloudflare + 认证子域名访问


✍️ 十一、总结

通过 Docker 快速部署 FRP,不仅省去了编译和环境配置的繁琐步骤,还支持:

  • 多平台部署(Linux、树莓派、群晖等)

  • 一键更新、自动重启

  • 内网服务安全暴露在公网

  • 替代 Ngrok、自建 Tailscale 的最佳选择之一

0

评论区