Armbian + Docker 打造AirPrint Epson L3250系列打印机
Armbian + Docker 打造无冲突、全功能 AirPrint Epson L3250 系列打印机
一、迁移背景与“避坑”指南
为什么要折腾?
之前在 OpenWrt 路由器上使用 jysky007/cups 容器搭建打印服务器,体验非常稳定。但最近迁移到 Armbian 盒子后,却遇到严重系统冲突:
- 现象:只要 CUPS 容器在运行,宿主机上的其他 Docker 容器就无法启动或重启。必须先
docker stop cups,才能操作其他服务。 - 原因:
jysky007/cups是为嵌入式系统设计的“全家桶”镜像,容器内部运行了自己的 DBus 和 Avahi 守护进程。在 Armbian(标准 Linux + Systemd)上,容器抢占系统总线资源,导致宿主机 Systemd 与 Docker 资源冲突。
解决方案
为了彻底解决冲突,我采用了解耦架构:
- Docker (ydkn/cups):只运行 CUPS 服务,不碰 Systemd,避免冲突。
- 宿主机 Avahi:利用宿主机的稳定 Avahi 广播 AirPrint 服务。
这样做的好处:
✅ 不影响其他 Docker 容器运行
✅ 支持完整彩色打印
✅ 方便未来维护和升级
二、准备工作
- 设备:运行 Armbian 的盒子(N1、OECT等)
- 打印机:Epson L3250(或其他网络打印机),已联网
- 环境:已安装 Docker 和 Docker Compose
三、部署纯净版 CUPS 容器
使用 ydkn/cups 镜像,只运行 CUPS 服务,配置文件映射到宿主机便于修改 PPD 驱动。
- 创建数据目录:
mkdir -p /mnt/docker/cups/cups_data
cd /mnt/docker/cups
- 编写
docker-compose.yml:
services:
cups:
image: ydkn/cups
container_name: cups
restart: unless-stopped
network_mode: "host" # 直接使用宿主机网络
environment:
- ADMIN_PASSWORD=admin # 设置 CUPS 后台密码
volumes:
- ./cups_data:/etc/cups # 映射配置文件,方便修改 PPD
- 启动容器:
docker compose up -d
- 添加打印机:
- 打开浏览器访问
http://你的ArmbianIP:631/admin - 添加打印机,协议选 互联网打印协议 (IPP)
- 驱动选择:EPSON XP-322/323/325 Series, Epson Inkjet Driver (ESC/P-R, Color)
- 勾选 [✅] Share This Printer
四、配置宿主机 Avahi 广播
让宿主机负责 AirPrint 广播,保证 iPhone / iPad 能发现打印机。
- 安装 Avahi:
sudo apt update
sudo apt install -y avahi-daemon avahi-utils
systemctl enable avahi-daemon
systemctl start avahi-daemon
- 锁定广播接口:
编辑/etc/avahi/avahi-daemon.conf,只广播真实物理网卡,避免 Docker 虚拟网卡干扰:
[server]
use-ipv4=yes
use-ipv6=no
allow-interfaces=br0 # 填写真实物理网卡名,可用 ip addr 查看
- 创建 AirPrint 服务文件:
sudo vi /etc/avahi/services/AirPrint.service
内容如下(彩色打印关键):
<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">打印机名称 @ %h</name>
<service>
<type>_ipp._tcp</type>
<subtype>_universal._sub._ipp._tcp</subtype>
<port>631</port>
<txt-record>txtvers=1</txt-record>
<txt-record>qtotal=1</txt-record>
<txt-record>Transparent=T</txt-record>
<txt-record>URF=none</txt-record>
<txt-record>rp=printers/打印机名称</txt-record>
<txt-record>note=Armbian</txt-record>
<txt-record>product=(GPL Ghostscript)</txt-record>
<txt-record>printer-state=3</txt-record>
<txt-record>printer-type=0x100c</txt-record>
<txt-record>Color=T</txt-record>
<txt-record>pdl=application/octet-stream,application/pdf,application/postscript,application/vnd.cups-raster,image/gif,image/jpeg,image/png,image/tiff,image/urf,text/html,text/plain,application/vnd.adobe-reader-postscript,application/vnd.cups-pdf</txt-record>
</service>
</service-group>
- 重启 Avahi:
sudo systemctl restart avahi-daemon
验证步骤
- 打印照片,选择 Epson L3250 AirPrint (Color)
- 应该可以看到彩色预览,并正常打印
✅ 系统稳定,不再影响其他 Docker 容器
✅ AirPrint 全功能(黑白 / 彩色 / PDF / 图片)
总结
通过 **Docker 极简 CUPS + 宿主机 Avahi ** 的方式,我们成功实现了:
- 无冲突的多容器环境
- 全功能 AirPrint 彩色打印
- 轻量、易维护,升级方便
适用于 Armbian / Ubuntu / Debian 嵌入式盒子,尤其适合 Epson L 系列打印机。
本文链接:
/archives/cups
版权声明:
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
I-Meet!
喜欢就支持一下吧