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

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.lryc.cn/news/511617.html

相关文章:

  • 短视频矩阵账号管理技术源码搭建详解,支持OEM
  • 【源码 导入教程 文档 讲解】基于springboot校园新闻管理系统源码和论文
  • Spark SQL DML语句
  • 开发微信小程序的过程与心得
  • 【1224】数据结构(sizeof/数组的长度定义/读取字符串函数/线性表长度/左值右值/静态变量/指针与引用)
  • Android笔记(四十一):TabLayout内的tab不滚动问题
  • 基于pytorch的深度学习基础3——模型创建与nn.Module
  • Debian-linux运维-docker安装和配置
  • Docker完整技术汇总
  • 在JavaScript文件中定义方法和数据(不是在对象里定以数据和方法,不要搞错了)
  • python爬虫爬抖音小店商品数据+数据可视化
  • 关于 覆铜与导线之间间距较小需要增加间距 的解决方法
  • uniapp中Nvue白屏问题 ReferenceError: require is not defined
  • 在 Windows 上,如果忘记了 MySQL 密码 重置密码
  • 《PyTorch:从基础概念到实战应用》
  • 前端:改变鼠标点击物体的颜色
  • Java-33 深入浅出 Spring - FactoryBean 和 BeanFactory BeanPostProcessor
  • HTML4笔记
  • python报错ModuleNotFoundError: No module named ‘visdom‘
  • linux-21 目录管理(一)mkdir命令,创建空目录
  • 总结-常见缓存替换算法
  • 【Vue】如何在 Vue 3 中使用组合式 API 与 Vuex 进行状态管理的详细教程
  • VSCode 插件开发实战(十五):如何支持多语言
  • 面试241228
  • ​Python数据序列化模块pickle使用
  • Spring Boot对访问密钥加解密——HMAC-SHA256
  • HTML 元素:网页构建的基础
  • HEIC 是什么图片格式?如何把 iPhone 中的 HEIC 转为 JPG?
  • 爆肝1个月:DDR4 的信号完整性(万字长文SI)
  • 前端js验证码插件