当前位置: 首页 > article >正文

Ubuntu通过mDNS实现局域网local域名和octoprint域名访问

OctoPrint是一个开源的3D打印机控制软件,它提供了一个Web界面,允许用户远程监控和管理3D打印机。通过USB连接到打印机后,用户可以使用任何带有Web浏览器的设备来控制打印作业,包括开始、停止、暂停打印,以及在打印过程中调整温度和设置。OctoPrint的核心功能包括远程完全控制3D打印机、跟踪工作和监控能力、提供温度传感器数据、重新调整参数、通过WiFi开始打印以及在出现异常时暂停或停止打印。此外,OctoPrint还支持插件系统,可以通过社区提供的插件扩展其功能,如摄像头监控、温度管理、打印历史记录等。它遵循GNU Affero General Public License V3开源协议,用户可以自由使用、修改和分发。OctoPrint适用于多种操作系统,包括Windows、Linux和MacOS,尤其适合在Raspberry Pi等嵌入式设备上运行。

如何安装Octoprint请参考我的博文:
Docker安装Octoprint 3D打印控制软件以及常用插件-CSDN博客

但是访问Octoprint的web页面存在一个问题,就是默认只能通过IP访问,而如果路由器使用DHCP那么设备重启之后IP就有可能发生改变,IP变化之后就需要重新扫描局域网来找到这个设备,同时IP地址也不容易记住,动态变化的IP地址记忆也很容易遗忘或者记错。

要解决这个办法,可以通过mDNS的局域网local域名来访问设备,这样就无需每次IP变化之后重新扫描地址,也不需要记忆总是变化的IP地址。

我的Octoprint安装在基于Ubuntu 20.04.6 LTS的HiNAS系统上,所以就以Ubuntu为例。

1. 安装 avahi-daemon(mDNS 服务)

sudo apt update
sudo apt install avahi-daemon avahi-utils
sudo systemctl enable avahi-daemon
sudo systemctl start avahi-daemon

2. 设置动态主机名

默认情况下,avahi-daemon 会广播主机名(如 myhostname.local)。
主机名可以通过hostname命令获取:

hostname

实际上通常ssh登录服务器之后,提示符前面会有username@hostname的前缀,例如root@hi3798mv100。但是这个hostname(hi3798mv100)可能比较难记,在有些情况下还不能随意更改hostname,所以在不更改这个默认hostname的情况下可以在avahi-daemon中设置一个动态主机名来访问。

2.1 编辑 /etc/avahi/avahi-daemon.conf 文件

sudo nano /etc/avahi/avahi-daemon.conf

2.2 找到 [server] 部分,设置 host-name 为你希望广播的主机名(不包括 .local)

本例使用ender3

[server]
host-name=ender3

2.3 保存文件并重启 Avahi 服务

sudo systemctl restart avahi-daemon

2.4 验证动态主机名广播

  • Ubuntu本地验证
avahi-resolve -n ender3.local

如果成功应该看到类似如下信息:

root@hi3798mv100:~# avahi-resolve -n ender3.local
ender3.local	fe80::f8af:41fc:fe3a:c8f1

如果失败那就是:

root@hi3798mv100:~# avahi-resolve -n ender3.local
Failed to resolve host name 'ender3.local': Timeout reached
  • 从局域网其它主机验证
ping ender3.local
PING ender3.local (192.168.3.17): 56 data bytes
64 bytes from 192.168.3.17: icmp_seq=0 ttl=64 time=2.664 ms
64 bytes from 192.168.3.17: icmp_seq=1 ttl=64 time=2.036 ms
64 bytes from 192.168.3.17: icmp_seq=2 ttl=64 time=2.441 ms

注:修改/etc/avahi/hosts没用,没用,没用,我试过了。

3. 通过域名访问Octoprint

用上述域名就可以啦,我映射了8080端口到docker的octoprint的80端口,所以就在浏览器输入如下地址即可,再也不用记忆IP地址了:

ender3.local:8080

http://www.kler.cn/a/456093.html

相关文章:

  • 巧用mask属性创建一个纯CSS图标库
  • ‘pnpm’ 不是内部或外部命令,也不是可运行的程序或批处理文件。
  • 如何在嵌入式系统或计算机系统中验证boot程序
  • CountDownLatch
  • 在K8S中,CNI有什么作用?
  • Day37灯泡开关
  • vim多窗格
  • 访问网页的全过程
  • springmvc-拦截器-异常处理
  • [MySQL报错]关于发生net start mysql 服务无法启动,服务没有报告任何错误的五种解决方案。
  • 串口通信标准RS232、RS422、RS485有什么区别和不同
  • 哪些框架、软件、中间件使用了netty? 哪些中间件、软件底层使用了epoll?
  • HCIA笔记9--NAT、ACL与链路聚合
  • IDE 强大功能背后的 Language Server Protocol 详解
  • Python einops库介绍
  • uniapp中实现APP调用本地通知栏通知、震动、本地提示音或者mp3提醒
  • AMD | GPU | 深度学习 | 如何使用
  • 从零开始开发纯血鸿蒙应用之日志模块实现
  • Go语言的数据结构
  • 深度学习任务中的 `ulimit` 设置优化指南