Docker 部署 SakuraFrp 客户端

参考官方文档:https://doc.natfrp.com/app/synology.html

  1. 安装 Docker 套件
  2. 拉取镜像:natfrp/frpc
  3. 在打开 Docker 套件的 网络 页面,查看 bridge 网络的 子网,把 最后一个 0 换成 1 作为 本地 IP。举个例子,子网 172.17.0.0/16 对应的 本地 IP 就是 172.17.0.1
  4. 前往 Sakura Frp 管理面板使用之前获取到的信息创建一条 TCP 隧道,本地 IP 填写上面获取到的 IP,例如172.17.0.1,端口选择 5001,即 DSM 的 HTTPS 端口。
  5. 在隧道列表中点击刚才创建的隧道右边三个点,选择 配置文件 并在弹出的对话框中复制隧道的 启动参数,类似于这样的-f 6i862oypc561ipo5ku9uz895o40jh73:7605087
  6. 新建容器,镜像选择natfrp/frpc,选择开机自启。
  7. 转到 环境 标签,在 命令 处粘贴 启动参数,然后点击上面的 新增 按钮分别填写 LANGen_US.UTF-8
  8. 启动后可以在日志中看到访问 URL。

启动多个隧道

使用以下参数即可启动多个隧道,参考 https://doc.natfrp.com/faq/frpc.html

-f <访问密钥>:<隧道ID>,<另外一个隧道ID>,<更多隧道ID>,n<节点ID>,n<另外一个节点ID>,...

例如

-f 6i862oypc561ipo5ku9uz895o40jh73:7605087,7605086,7605085

SSL 证书配置

官方文档有说明:https://doc.natfrp.com/frpc/ssl.html

但尝试过后发现无法使用,原因未知(浪费 5 个小时

最后使用 DSM 自带的反向代理解决。

首先,准备一个域名,使用 CNAME 解析到 SakuraFrp 的节点地址,参考 https://doc.natfrp.com/app/http.html#setup-dns

接着给域名申请一个 SSL 证书,格式选择 Nginx,下载保存。

DSM

直接在 DSM 的安全设置中,选择添加证书,选择刚刚自己申请的证书,并且设为默认证书,替代原有自签证书即可。

SakuraFrp 面板穿透配置:

本地 IP:172.17.0.1  # 根据自己 Docker 网卡设置
本地端口:5001
自动 HTTPS:禁用

就可以使用https://自己域名地址:穿透后端口号访问了。

Home Assistant

在 DSM 的登录门户设置中,选择高级 - 反向代理服务器,添加一个反向代理。

来源:
协议:HTTPS
主机名:*
端口:8124

目的地:
协议:HTTP
主机名:127.0.0.1
端口:8123

SakuraFrp 面板穿透配置:

本地 IP:172.17.0.1  # 根据自己 Docker 网卡设置
本地端口:8124
自动 HTTPS:禁用

Home Assistant App 配置:

内部 URL:http://NAS 局域网 IP 地址:8123
外部 URL:https://自己域名地址:穿透后端口号

参考文献

https://doc.natfrp.com/app/synology.html