惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Tailwind CSS Blog
The GitHub Blog
The GitHub Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
B
Blog
Microsoft Security Blog
Microsoft Security Blog
Stack Overflow Blog
Stack Overflow Blog
量子位
Martin Fowler
Martin Fowler
月光博客
月光博客
P
Proofpoint News Feed
博客园_首页
Y
Y Combinator Blog
I
InfoQ
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
V
Visual Studio Blog
H
Help Net Security
U
Unit 42
GbyAI
GbyAI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 司徒正美
MongoDB | Blog
MongoDB | Blog
F
Fortinet All Blogs
罗磊的独立博客
酷 壳 – CoolShell
酷 壳 – CoolShell

Anyeの小站

PlayGuard,让你的播放器老实点! Peg - 命令行便签 · 把终端输出钉上布告板 2025 年终总结:折腾不止,热情常青 告别公网暴露风险:mTLS助你构建家里云安全边界 🚀 0 代码部署:Halo 博客与企业门户系统 B站跟随系统深色模式脚本——让你的B站体验更丝滑 【1024抽奖】EdgeOne下线源站防护?这个办法更简单! 全新!Edge 还是卸载不掉?来试试这个! 混元模型玩家必看:CNB API 不限量调用! 1Panel 应用商店如何上架应用 Next Terminal 实战:内网无密码安全登录 用了 EdgeOne 降本增效,源站却可能裸奔? 降本增效!上云真香! 在线重装 Proxmox VE SSL证书申请老出问题?这套组合直接帮你搞定! 🌐 森屿云:让数字化转型像呼吸一样自然 1Panel v2 首发体验(alpha) Vscode/Code-Server 安装中文包——CI/CD DockerHub Mirror 终极解决方案——零成本,速度超快! 本地跑不动 QwQ?快用 CNB,免费运行满血 QwQ! Docker Push 巨慢?Skopeo 来拯救 2024 年终总结:与 17170 位读者相遇的旅程 云厂 200Mbps 小鸡,家里云的希望 Halo 插件 thyuu-embed 主题样式注入模板 Windows 11 卸载 Edge 小破站 6 级萌新前来挑战硬核会员,答题分享 手机系统杂谈 1Panel 自建邮局 - Docker Mailserver 1Panel 推送 SSL 证书到阿里云、腾讯云 整了几个简洁的单页,欢迎来扒
PVE 8.2 LXC 容器直通 USB 设备实现局域网共享打印机
Anye · 2024-05-25 · via Anyeの小站

前言

这也可能是一个小众需求。

办公室里放了一台小主机安装了 PVE 当小服务器用,跑一些乱七八糟的服务,之前安装了 Windows 10 LTSC 版本,专门连接打印机实现办公室内共享。但是吧, 别的服务都跑在 LXC 的 Debian 容器上,单单为了一台打印机而装了 Windows 占用那么高的内存,还卡卡的,不符合我这折腾的习惯。

正好,PVE 更新了 8.2 系统,LXC 容器可以直接在 资源 处直接添加 Device Passthrough ,避免了直接编辑 conf 文件的麻烦。(嘿嘿,谁不喜欢图形化)

那么话不多说,直接进入正题。

技术栈

  • PVE LXC 直通[1]

  • OpenPrinting CUPS[2]

  • HP Linux Imaging and Printing[3]

PVE 下查看 USB 设备挂载路径并直通到 LXC 容器

PVE 8.2 的安装以及 LXC 容器的安装在这里不再赘述,如有需要可以看我这篇文章 《环境配置快速复制-PVE速配》 的内容。

PVE 查看 USB 设备挂载路径的方式很简单,在 PVE 的 shell 中执行 lsusb 命令进行查询,比如我这里

root@pve:~# lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 045: ID 03f0:1053 HP, Inc Ink Tank 310 series
Bus 001 Device 003: ID 8087:0026 Intel Corp. AX201 Bluetooth
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

可以看到 HP, Inc Ink Tank 310 series 这个打印机是 001 总线的 045 设备,那么它的设备路径就是 /dev/bus/usb/001/045 ,记住这个路径,下面会用到。

打开需要配置为共享打印机的容器,点击 资源 添加 Device PassthroughDevice Path 填写之前找到的设备路径 /dev/bus/usb/001/045 ,添加即可。

安装 CUPS 软件及打印机驱动

apt install cups hplip -y
systemctl enable cups
systemctl start cups

之前安装了 CUPS 后,死活找不到打印机,一度怀疑是打印机太老了没有驱动,但是想想也不太可能,经过在网上多方查找之后,无果,尝试安装 Ubuntu 桌面版后却发现可以直接驱动打印机,最后一通查找才发现 hplip 里带有该打印机的 PPD 文件。

关于 cups 的配置修改如下

nano /etc/cups/cupsd.conf
  • Browsing Off 改为 Browsing On, 这样是为了让局域网内的其他设备能够搜索到打印机 把 Listen localhost:631 改为 Port 631, 这样是能够让局域网访问WEB面板

  • 需要确保 CUPS 正在侦听所有接口。

<Location />
  Order allow,deny
</Location>

改为

<Location />
  Order allow,deny
  Allow @LOCAL
</Location>
  • /admin目录添加访问权限

<Location /admin>
  Order allow,deny
</Location>

改为

<Location /admin>
  AuthType Default
  Require valid-user
  Order allow,deny
  Allow @LOCAL
</Location>
  • 保存并关闭文件。然后重新启动 CUPS 以使更改生效:

systemctl restart cups

查找添加打印机

进入 https://IP:631/admin ,在 Printers 项中点击 Find New Printers,添加打印机(我这里是 HP, Inc Ink Tank 310 series ),选择对应名称的 ppd 文件安装,最后即可在 https://IP:631/printers/ 查看到添加的打印机。

关于共享操作,各种系统下均可以在局域网中搜索到共享打印机,直接添加即可。

参考资料

[1] https://pve.proxmox.com/pve-docs/chapter-pct.html

[2] https://openprinting.github.io/cups/

[3] https://developers.hp.com/hp-linux-imaging-and-printing