Klipper 的外网访问

网络上有关 Klipper 的中文教程少之又少,固作此教程介绍一下如何在外网优雅地访问家中装有 Klipper 的 3D 打印机。

方法一:端口转发

此方法仅适用于拥有公网 IP 的用户

首先,使用 DDNS 将家庭宽带动态变化的 IP 绑定至域名,教程如下:

在配置端口映射之前,先介绍一下 Klipper 的网络结构:

graph LR;
	A("你的设备") <--80-->
	B("前端网页(Fluidd/Mainsail/Octoprint)") <--7125-->
	C("API 服务器 Moonraker") 	<-->
	D("你的 3D 打印机");

线上的数字便是通讯的端口。

由上图,我们不难看出,若需要在外网访问家中的 Klipper,就需要映射 807125 两个端口。

于路由器的 端口转发/端口映射 界面配置 80 和 7125 的转发即可。家庭宽带的公网 IP 不会开放 80 端口,可将外网端口配置为 8080,对应的内网端口为 80 即可。

接着,在 Moonraker 配置 moonraker.conf [authorization] 模块的 cors_domains 模块中添加你的域名,格式为 *://你们域名

也可以选择不使用自己搭建的前端网页,而使用 Fluidd 或者 Mainsail 作者搭建的前端网页。在 Moonraker 配置 moonraker.conf [authorization] 模块的 cors_domains 模块中添加 *://my.mainsail.xyz 与 *://app.fluidd.xyz

方法二:内网穿透

本人不推荐使用这个方法,固仅简述一下

可以使用花生壳等内网穿透服务,但给的带宽太小,只能使用控制界面,不能使用摄像头。

也可以选择自建内网穿透,例如 Frp, Ngrok 等服务。但最近越来越多 Frp 服务器遭到攻击,固不建议自建。

方法三:使用 VPN

此 VPN 非彼 VPN,请分清楚

这是我本人推荐的方法。

与 Octoprint + Marlin 仅需要映射 80 端口不同,Klipper 还需要映射 Moonraker 的 7125 端口,配置端口转发与实际使用都不如前者来的方便。

我个人推荐用诸如 Zerotier, Tailscale 一类的 VPN 软件,搭建自己的小内网,通过内网 IP 直接访问 Klipper,既安全又方便。

Zerotier 或者 Tailscale 的使用技巧网上一大片,我就不赘述了。


Klipper 的外网访问
https://blog.laoliu.eu.org/archives/7263a385.html
作者
Lao_Liu
发布于
2022年2月12日
许可协议