• 首页
  • 博客
  • 日常
  • 留言墙
  • 友链
  • 保姆级 FRP 内网穿透教程:让家里的 NAS 在外面也能访问
  • 一、先搞懂:FRP 是什么
  • 二、准备工作
  • 三、第一步:在 VPS 上部署服务端 frps
  • 四、第二步:在 NAS 上部署客户端 frpc
  • 五、验证:看看穿透成功了没
  • 六、常见问题排查
  • 七、安全小提醒 🔒
  • 八、总结
  • frp #内网穿透 #NAS #Docker #家庭影院 #emby
0%
保姆级 FRP 内网穿透教程:让家里的 NAS 在外面也能访问
2026/11/01Docker

保姆级 FRP 内网穿透教程:让家里的 NAS 在外面也能访问

没有公网 IP?用一台便宜的 VPS 就能把家里的 Emby、NAS、各种服务"搬"到外网。 全程 Docker 部署,先服务端,后客户端,照着做 20 分钟搞定。

0次点击7分钟阅读

保姆级 FRP 内网穿透教程:让家里的 NAS 在外面也能访问

没有公网 IP?用一台便宜的 VPS 就能把家里的 Emby、NAS、各种服务"搬"到外网。 全程 Docker 部署,先服务端,后客户端,照着做 20 分钟搞定。


一、先搞懂:FRP 是什么

FRP 是一个内网穿透工具,分成两个角色:

角色名称装在哪作用
服务端frps有公网 IP 的 VPS对外开放端口,接收外网的访问
客户端frpc家里的 NAS主动连到 VPS,把本地服务"挂"到 VPS 的端口上

访问路径:

因为是 NAS 主动连出去 的,所以家里不需要公网 IP,也不用在路由器上做端口映射。


二、准备工作

1. 你需要什么

  • ✅ 一台有公网 IP 的 VPS(装服务端 frps)
  • ✅ 一台家用 NAS(装客户端 frpc,也可以是软路由、小主机)
  • ✅ 两台机器都装好 Docker 和 Docker Compose
  • ✅ (推荐)VPS 上装了 1Panel 之类的面板,方便反代和管理

2. 端口规划(先在纸上写好)

用途端口说明
管理面板 WebUI16080浏览器配置 frps 用
通讯端口17000服务端和客户端之间的隧道
对外服务端口17001-17100每个穿透出去的服务占一个

⚠️ VPS 的防火墙 / 云厂商安全组里,要把上面这几个端口放行,否则后面一定连不上。

3. 部署顺序

先部署服务端(VPS)→ 再部署客户端(NAS) 客户端启动时就要去连服务端,服务端没准备好,客户端只会报错。


三、第一步:在 VPS 上部署服务端 frps

这里用的是自带网页管理面板的镜像 verky/xg-frp,不用手写服务端配置文件,点点鼠标就能配。

1. 编写 docker-compose.yaml

在 VPS 上新建目录,比如 /opt/xg-frp,创建 docker-compose.yaml:

几个要点:

  • 16080:网页管理面板端口
  • 17000:frpc 来连接的通讯端口
  • 17001-17100:给穿透出去的服务用的端口段,只有反代之后才能使用
  • 1panel-network:用的是 1Panel 的网络。如果你没有装 1Panel,把 networks 相关的几行删掉即可

2. 启动

3. 打开 Web 面板,设置账号密码

浏览器访问:

第一次打开会让你设置用户名和密码,设好后登录。

🔐 面板能直接改你的穿透配置,密码一定要设复杂。设置完成后,建议把 16080 做成只允许自己 IP 访问,或者通过反代加 HTTPS。

4. 新建服务端配置文件

登录后进入 「配置」 页面:

  1. 点击左侧「配置文件」旁边的 +,新建一个服务端配置(如 frps.toml)
  2. 填写 通讯端口(bindPort):17000
  3. 填写 Token(auth.token):自己随便生成一串复杂字符,一定要记下来,客户端要用
  4. 点击 保存,再点击 启动

服务端配置

右上角的开关要切到 「服务端」 模式,状态变绿就说明 frps 已经跑起来了。

对应生成的原始配置很简单:

❗ 端口和 Token 必须和客户端完全一致, 否则客户端连不上。这是最常见的坑。

到这里,服务端就准备好了 🎉


四、第二步:在 NAS 上部署客户端 frpc

1. 编写 docker-compose.yaml

在 NAS 上新建目录,比如 docker/frp,创建 docker-compose.yaml:

以飞牛 / 群晖这类 NAS 的 Docker 管理界面为例,在「Compose 配置」里粘贴即可。

2. ⚠️ 先创建 frpc.toml,再启动(重点)

compose 里挂载了 ./frpc.toml 这个文件。如果启动时这个文件不存在,Docker 会自动创建一个叫 frpc.toml 的「文件夹」,客户端就会读取失败。

正确做法:

  • 还没启动: 先在 compose 同级目录手动新建 frpc.toml 文件,再启动
  • 已经启动过: 把自动生成的那个 frpc.toml 文件夹删掉,重新建一个同名的文件,再重启容器

3. 填写 frpc.toml

参数说明:

参数含义
serverAddrVPS 的公网 IP 或域名
serverPort要和服务端的通讯端口 17000 一致
auth.token要和服务端的 Token 一致
name这条穿透规则的名字,不能重复
type协议,常见服务用 tcp 就行
localIP / localPortNAS 上服务真实的地址和端口
remotePortVPS 上对外暴露的端口,必须在 17001-17100 范围内

想多穿透一个服务,就复制一段 [[proxies]],改 name、localPort、remotePort 即可。

4. 重启容器


五、验证:看看穿透成功了没

回到 VPS 的 Web 面板,进入 「监控」 页面:

监控页面

能看到这些,就说明成功了:

  • 客户端数 不为 0
  • 你配置的每条服务(emby、hub……)都显示 在线,并带着对应的公网端口
  • 有流量时,会看到实时网速和累计流量

现在,在外面用手机访问:

就能打开家里的 Emby 了 🎬


六、常见问题排查

现象大概率原因解决办法
客户端日志提示连接失败VPS 防火墙 / 安全组没放行 17000放行端口
提示 token 校验失败两边 Token 不一致重新复制粘贴,注意别带空格
客户端启动不了frpc.toml 被创建成了文件夹删掉文件夹,重新建文件
面板显示在线,但访问不了remotePort 对应的端口没放行放行 17001-17100
面板显示在线,但打开是空白localIP / localPort 填错在 NAS 内网先自己访问一下确认
某条规则不显示name 重复或语法错误检查 toml 缩进和引号

七、安全小提醒 🔒

  1. Token 要足够复杂,别用截图里那种示例值,也别在公开场合露出
  2. Web 面板 16080 尽量不要直接暴露在公网,至少设强密码
  3. 不需要外网访问的服务,就别穿透出去
  4. 敏感服务(NAS 管理后台等)建议加 HTTPS,或者改用 VPN 访问
  5. 发教程截图前,记得把 IP、Token 打码

八、总结

希望这篇教程对你有帮助,有问题欢迎评论区交流~

frp #内网穿透 #NAS #Docker #家庭影院 #emby

← 上一篇(更早)跟AI说高级一点?先刷这些术语

相关文章

用 Docker Compose 装好 Emby:从空文件夹到能播放

2026/10/31Docker02分钟阅读

别信「全网 0day」:群晖 LOCK3D 今晚自查清单

2026/10/28Docker04分钟阅读

还在被投屏 App 弹会员?小柚投屏:免费无广告的跨网投屏

2026/10/26Docker07分钟阅读

动态更新

喜欢我的内容的话不妨订阅支持一下。每月一封,随时可以取消订阅。
加入其他 0 位订阅者,

如何联系我

服务 / 合作方向

如果以后想联系我

私有媒体库、Docker 部署、博客搭建、自动化脚本,或者一些好玩的产品想法,都可以聊。

去留言墙

© 2026 HuanHQ.

首页博客日常热爱留言墙友链
全站访问 2万
最近访客来自 Columbus, US🇺🇸