资讯动态

飞牛 NAS + Docker CUPS 搭建 HP LaserJet 1020 打印服务器操作记录

发布时间:2026/10/8 6:47:29 来源:尧图企业网站定制
目标用 Docker 跑 CUPS不污染飞牛宿主机系统实现 HP 1020 局域网共享打印支持 Windows / macOS / iOS / Android。核心CUPS 容器 foo2zjs-z1 驱动 宿主机 udev 自动写固件。一、前置条件飞牛 NAS 已开启 SSH能sudo -i拿 rootDocker 已安装HP LaserJet 1020 通过 USB 连接飞牛打印机先断电等 NAS 完全启动后再给打印机通电确认 USB 识别bashlsusb | grep -i hp # 应看到 Bus 001 Device 00x: ID 03f0:2b17 HP, Inc LaserJet 1020 ls -l /dev/usb/lp* 2/dev/null # 应看到 /dev/usb/lp0如果/dev/usb/lp0不存在bashmodprobe -r usblp modprobe usblp ls -l /dev/usb/lp0二、启动 CUPS 容器用作者官方推荐的--device /dev/bus/usb不要用-v /dev/:/dev/否则容器里lpinfo -v看不到 USBbashdocker run -d --name cups --restart unless-stopped \ -p 631:631 \ --device /dev/bus/usb \ -e CUPSADMINadmin \ -e CUPSPASSWORDadminadmin \ -e TZAsia/Shanghai \ anujdatar/cups验证容器能看到打印机bashdocker exec -it cups lpinfo -v | grep usb应看到textdirect usb://HP/LaserJet%201020?serialS406EEX direct hp:/usb/HP_LaserJet_1020?serialS406EEX三、CUPS 网页添加打印机浏览器打开http://飞牛IP:631用户名/密码admin / adminadminAdministration→Add PrinterLocal Printers 里选textHP LaserJet 1020 USB S406EEX HPLIP (HP LaserJet 1020)Connection 对应texthp:/usb/HP_LaserJet_1020?serialS406EEX也可以选HP LaserJet 1020 (HP LaserJet 1020)对应usb://HP/LaserJet%201020?serialS406EEX。勾选Share This PrinterModel 选textHP LaserJet 1020 Foomatic/foo2zjs-z1不要选hpcups或带requires proprietary plugin的。Add Printer设置默认A4、600 dpi、Plain Paper →Set Default Options添加成功后 CUPS 提示Printer drivers and raw queues are deprecated...是通用提示忽略即可。四、下载固件 sihp1020.dlHP 1020 无内置存储每次断电重启后必须写固件否则打印任务石沉大海。下载地址社区镜像可用bashmkdir -p /root/hp1020 cd /root/hp1020 wget -O sihp1020.dl https://opt.cn2qq.com/opt-file/printer/sihp1020.dl ls -lh /root/hp1020/sihp1020.dl file /root/hp1020/sihp1020.dl正常应为123KB 二进制文件不是几字节文本。五、把固件拷进容器容器里默认没有firmware/目录先建再拷bashdocker exec -it cups mkdir -p /usr/share/foo2zjs/firmware docker cp /root/hp1020/sihp1020.dl cups:/usr/share/foo2zjs/firmware/ docker exec -it cups ls -l /usr/share/foo2zjs/firmware/sihp1020.dl六、手动写一次固件测试打印bashcat /root/hp1020/sihp1020.dl /dev/usb/lp0打印机应响一声。bashdocker exec -it cups lp -d HP_LaserJet_1020 /usr/share/cups/data/testprint测试页应正常打出。七、配 udev 自动写固件宿主机1. 脚本/root/hp1020/hp1020.shbashnano /root/hp1020/hp1020.sh内容bash#!/bin/bash logger HP1020: firmware upload... sleep 3 cat /root/hp1020/sihp1020.dl /dev/usb/lp0 logger HP1020: firmware uploaded.# 新增这一行让容器重新绑定新的 USB 设备节点 sleep 1 docker restart cups logger HP1020: CUPS container restarted.赋权bashchmod x /root/hp1020/hp1020.sh2. udev 规则/etc/udev/rules.d/10-usb-hp1020.rulesbashnano /etc/udev/rules.d/10-usb-hp1020.rules内容一行textACTIONadd, SUBSYSTEMusb, ATTRS{idVendor}03f0, ATTRS{idProduct}2b17, RUN/root/hp1020/hp1020.sh赋权并重载bashchmod 644 /etc/udev/rules.d/10-usb-hp1020.rules chown root:root /etc/udev/rules.d/10-usb-hp1020.rules udevadm control --reload-rules udevadm trigger3. 验证拔掉打印机 USB再插上等 10 秒打印机应自动响一声。没响就手动跑一次bash/root/hp1020/hp1020.sh八、局域网设备连接Windows / macOS添加网络打印机地址填texthttp://飞牛IP:631/printers/HP_LaserJet_1020iPhone / iPadAirPrint 自动发现搜不到用 IPP 手动加地址同上。Android如 Mate 30协议IPP地址飞牛IP端口631路径printers/HP_LaserJet_1020或直接textipp://飞牛IP:631/printers/HP_LaserJet_1020九、常见问题排查现象原因处理容器里lpinfo -v无 USB用了-v /dev/:/dev/改用--device /dev/bus/usb重起容器docker cp报no such directory容器里没有firmware/目录先docker exec -it cups mkdir -p /usr/share/foo2zjs/firmware/dev/usb/lp0不存在usblp 模块掉了modprobe -r usblp modprobe usblp或物理拔插 USB任务发出但打印机无反应固件未加载cat /root/hp1020/sihp1020.dl /dev/usb/lp0队列卡住任务异常docker exec -it cups cupsenable HP_LaserJet_1020、cupsaccept HP_LaserJet_1020查看日志—docker exec -it cups tail -50 /var/log/cups/error_log十、关键要点回顾容器 USB 权限用--device /dev/bus/usb不要用-v /dev/:/dev/驱动必须选foo2zjs-z1不要选hpcups或带 proprietary plugin 的必须勾Share This Printer否则局域网看不到HP 1020 每次断电重启必须写固件用 udev 规则自动处理固件文件必须拷进容器/usr/share/foo2zjs/firmware/网络发现失效时统一用 IPP 手动添加只要打印机因为任何原因重新连接 USB例如开机、休眠唤醒、供电波动udev规则就会触发这个脚本自动完成“写固件 重启容器”这两个动作十一、文件清单路径用途/root/hp1020/sihp1020.dlHP 1020 固件/root/hp1020/hp1020.shudev 触发脚本/etc/udev/rules.d/10-usb-hp1020.rulesudev 规则容器/usr/share/foo2zjs/firmware/sihp1020.dl容器内固件副本容器 anujdatar/cupsCUPS 服务http://飞牛IP:631/printers/HP_LaserJet_1020打印机共享地址

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑