把任意 NAS / Linux 设备
变成随时随地的云打印机
互维云+ 是一款轻量、公益的远程打印解决方案:一条命令把家里的 NAS、软路由、树莓派或服务器部署为「云打印」,配合微信小程序,实现跨网络、跨设备、跨平台的远程打印。
它是什么
互维云+ 不是一台打印机,而是一个「让旧设备焕发第二春」的打印中枢。它基于 Docker 封装了 CUPS(通用 Unix 打印系统)、AirPrint / Bonjour 自动发现与云端接入能力,部署在你已有的硬件上,打印数据全程留在本地,不经过任何第三方中转服务器。你只需在微信小程序里添加设备,就能像在本地一样发起打印。
它能做什么
远程打印
人在外面,手机小程序一键把文档 / 图片发到家里的打印机,回来就能取件。
多设备共享
全家或全公司共用一台打印机,无需每台电脑单独装驱动、配网络。
跨平台发起
iOS / Android / Windows / macOS 均可发起打印,支持 AirPrint 与原生驱动。
自动发现
支持 Bonjour / mDNS,局域网内手机、电脑自动识别到打印机,零配置。
多机型支持
HP / Canon 等 GDI、激光、喷墨机型,USB 直连即插即用,内置常用固件。
本地优先 · 安全
Docker 隔离、权限最小化,打印文件不出本地网络,隐私可控。
全 NAS 兼容
群晖、威联通、飞牛、绿联、极空间、iStoreOS、Unraid 等一键部署。
极简部署
一条安装脚本自动检测环境、拉取镜像、配置网络,新手也能上手。
工作原理
打印请求从你的手机出发,经由互维云+ 云端信令,唤醒你本地部署的云打印,通过 USB 把任务送给打印机出纸——全程你只需要点一下「打印」。
📱 手机 / 电脑
在微信小程序选择文件或图片,点击远程打印。
☁️ 互维云+ 云端
负责设备绑定与信令调度,不存储你的打印内容。
🐳 本地云打印
你设备上的 Docker 服务收到任务并转为打印机语言。
🖨️ USB 打印机
连在 NAS / 小主机上的打印机自动出纸,完成。
使用方法 · 三步上手
部署
在 NAS / Linux 设备上用一键脚本安装 Docker 云打印服务。前往「一键安装」按你的系统选择网络模式。
绑定设备
打开微信小程序「互维云+」,扫码 / 添加,将本地接入云端账户,完成绑定。
远程打印
在手机或电脑选择文件,一键发送到打印机;局域网内也可直接通过 AirPrint 发现打印。
适用场景
为什么选择互维云+
极简部署
一条命令自动适配,无需手工编排容器网络。
多网络模式
macvlan / Bridge / Host 全覆盖,复杂环境也能落地。
全 NAS 兼容
群晖、威联通、飞牛、绿联、极空间、iStoreOS…通吃。
安全稳定
Docker 隔离、权限最小化,数据不出本地。
公益免费
无订阅绑架、无隐藏收费。
持续维护
固件与镜像持续更新,主流机型即插即用。
技术规格速览
| 支持系统 | Ubuntu / Armbian / 海纳斯OS / Debian · 群晖 / 威联通 / 飞牛 / 绿联 / 极空间 / iStoreOS / Unraid |
|---|---|
| 容器镜像 | tzishue/cloud-printer(Docker 镜像) |
| 部署方式 | ① 一键脚本(物理机 / Linux)· install.sh / install_lite.sh / install_old.sh ② Docker 手动部署 · docker run / Docker Compose |
| 网络模式 | macvlan(独立 IP)· Bridge · Host(推荐) |
| 打印协议 | CUPS · AirPrint / Bonjour(mDNS) · IPP · 微信小程序远程下发 |
| 服务端口 | 8088(管理) · 631(CUPS) · 8080(Web打印) · 5353/udp(mDNS) |
| 打印机支持 | HP(含 GDI 1020/1005/P1007/P1008 等)· Canon LBP 系列等 USB 机型 |
🐧 Linux 物理机一键安装
为 Ubuntu / Armbian / 海纳斯OS / Debian 等 Linux 裸机或虚拟机设计
🚀 一键安装命令 适用于所有 Linux 发行版
bash -c "$(curl -fsSL http://hhnas.eu.org:8586/install.sh)"
bash -c "$(curl -fsSL http://hhnas.eu.org:8586/install_lite.sh)"
bash -c "$(curl -fsSL http://hhnas.eu.org:8586/install_old.sh)"
📋 Linux 物理机安装须知
- 本页命令面向物理机 / 虚拟机 / Linux 裸机,不是 NAS 套件或 Docker 手动部署。
- 需要 root 权限或具有 sudo 能力(建议
sudo -i后执行命令) - 脚本会自动安装 Docker;若已安装 Docker,则会跳过该步骤并直接部署容器。
- 防火墙放行端口:631/tcp、8080/tcp、5353/udp(AirPrint / Bonjour 自动发现)
- 若使用虚拟机或容器环境,请确保网卡允许 macvlan 模式流量
- 海纳斯OS / Armbian 建议先更新证书:
apt update && apt install ca-certificates curl -y
🐳 选择你的 NAS 设备
选择你要部署云打印的 NAS 系统,我们将自动匹配默认网卡名称与挂载路径,
随后进入网络模式选择与配置页面。
🌉 安装教程(Bridge 网络模式)
支持群晖、iStoreOS、飞牛、威联通、绿联、极空间 | 标准桥接网络 + 端口映射
⚙️ 基础配置
点击下方按钮,按步骤完成 Docker 命令参数配置。
✅ 容器使用独立网络命名空间,通过端口映射对外提供服务。
✅ 与宿主机网络隔离,更安全,避免端口直接占用宿主机。
✅ 访问方式:
http://宿主机IP:631(映射后端口)⚠️ 注意:局域网设备需通过宿主机 IP + 映射端口访问。
🎨 选择你的系统
❓ 常见问题(Bridge 模式)
Q1: Bridge 模式与 Host 模式区别?
Bridge 模式容器有独立 IP,通过端口映射访问,适合需要端口隔离或多容器场景;Host 模式直接使用宿主机网络,性能稍好但端口易冲突。
Q2: 如何访问 CUPS?
Q3: 如何修改映射端口?
修改 docker run 命令中的 -p 631:631 为 -p 新端口:631 即可,例如 -p 8631:631。
Q4: 如何更新容器?
docker stop cloud-printer && docker rm cloud-printer
# 重新执行 docker run 命令
📊 Bridge 模式特点
| 特性 | Bridge 模式表现 |
|---|---|
| 独立IP | ✅ 容器拥有独立虚拟 IP (172.17.x.x) |
| 端口冲突 | ✅ 通过映射避免,可自定义宿主机端口 |
| 宿主机访问 | ✅ 通过 localhost:映射端口 或 宿主机IP:映射端口 |
| 局域网发现 | ⚠️ 依赖宿主机 IP + 端口,Bonjour 需额外配置 |
⚡ 安装教程(Host 网络模式)
支持群晖、iStoreOS、飞牛、威联通、绿联、极空间等 | 推荐 host 模式,简单稳定
⚙️ 基础配置
✅ 容器直接使用宿主机网络栈,性能无损耗,局域网设备通过宿主机 IP 即可发现打印机。
✅ 无需配置 macvlan、bridge,避免复杂网络故障。
✅ 手机 / 电脑访问
http://宿主机IP:631 即可管理 CUPS,支持 Bonjour 自动发现。
🎨 选择你的系统
❓ 常见问题(host 模式)
Q1: 为什么推荐 host 网络?
host 模式容器与宿主机共享网络,CUPS 服务和 Web 打印端口 (8088, 631, 8080, 5353/udp) 直接绑定宿主机 IP,局域网设备可通过宿主机 IP 直接访问,无需额外路由或 macvlan,简单可靠。
Q2: 如何访问 CUPS 管理界面?
Q3: 端口冲突怎么办?
如果宿主机 631 端口已被占用,请先停止占用 631 的服务。host 模式下端口直接使用宿主机端口。
Q4: 如何更新容器?
docker stop cloud-printer && docker rm cloud-printer
# 重新执行 docker run 命令
Q5: 如何卸载?
docker volume prune
📊 Host 模式特点
| 特性 | Host 模式表现 |
|---|---|
| 独立IP | ❌ 无独立 IP,共享宿主机 IP |
| 局域网发现(mDNS) | ✅ 支持,通过宿主机 IP:5353/udp 广播 |
| 宿主机访问 | ✅ localhost:631 或 宿主机IP:631 |
| 端口冲突风险 | ⚠️ 需确保 8088/631/8080/5353 未被占用 |
| 配置复杂度 | 🌟 极低,无需创建网络 |
🔌 安装教程(纯 macvlan 网络模式)
容器通过 macvlan 直接接入局域网,拥有独立 IP,性能接近物理机 | 支持群晖、iStoreOS、飞牛、威联通、绿联、极空间等
⚙️ 基础配置
点击下方按钮,按步骤完成 Docker 命令参数配置。
✅ 容器通过 macvlan 直接接入局域网,拥有独立 IP,性能接近物理机。
✅ 局域网设备可通过容器独立 IP 直接发现打印机,支持 Bonjour / mDNS。
⚠️ 注意:macvlan 模式下容器与宿主机默认无法互通,如需宿主机访问请改用 Host 模式或在宿主机创建 macvlan 子接口。
⚠️ 容器 IP 需在局域网网段内且未被占用,建议在 DHCP 地址池外选择。
🔌 macvlan 网络方案
纯 macvlan 网络
- ✅ 局域网独立 IP:手机 / 电脑通过容器 IP 自动发现打印机
- ✅ 性能最优:macvlan 直接接入局域网,无 bridge 性能损耗
- ⚠️ 宿主机无法直接访问容器(macvlan 设计限制)
- ⚠️ 如需宿主机互通,建议改用 Host 模式(或在宿主机创建 macvlan 子接口)
网络架构
局域网设备
网关
macvlan: 独立IP
直连容器
🎨 选择你的系统
❓ 常见问题(macvlan 模式)
Q1: macvlan 模式与 Host 模式区别?
纯 macvlan 模式容器有独立局域网 IP,但与宿主机默认不通;Host 模式直接共享宿主机网络栈,配置最简单、宿主机可直接访问,代价是会占用宿主机端口。
Q2: 如何访问 CUPS?
Q3: 宿主机无法访问容器怎么办?
这是 macvlan 设计限制。如需宿主机访问,可在宿主机创建 macvlan 子接口,或改用 Host 模式共享宿主机网络。
Q4: 如何更新容器?
docker stop cloud-printer && docker rm cloud-printer
# 重新执行 docker run 命令
📊 macvlan 模式特点
| 特性 | macvlan 模式表现 |
|---|---|
| 独立IP | ✅ 容器拥有局域网独立 IP |
| 局域网发现(mDNS) | ✅ 支持,通过容器 IP:5353/udp 广播 |
| 宿主机访问 | ❌ 默认无法互通(macvlan 限制) |
| 端口冲突风险 | ✅ 无,独立 IP 不占用宿主机端口 |
| 配置复杂度 | ◐ 中等,需配置 macvlan 网络参数 |
| 性能 | 🌟 最优,接近物理机 |
📖 使用教程
「互维云+ 远程打印助手」是一套基于 CUPS 的微信小程序云打印服务。你平时主要和几个入口打交道:① 手机上的微信小程序「互维云+」(远程发起打印)② 电脑浏览器里的管理页面(:8088,添加 / 配置打印机)③ 网页后台(:8080,文件上传与高级设置)。下面按真实使用顺序讲清楚每一步。
✅ 开始前请确认
- 已部署并运行(一键安装 / Docker,参考对应标签),容器处于 Up 状态
- 打印机已用 USB 或局域网接到设备,开机、装纸
- 手机微信已搜索并打开小程序「互维云+」
- 知道的局域网 IP(后续访问管理页面
:8088与网页后台:8080要用)
三个操作入口
微信小程序「互维云+」
手机远程打印主入口:微信打印 / 手机打印 / 文本打印 / 微信图片 / 微信文件,内置文档库。
管理页面 · :8088
浏览器访问 http://IP:8088,添加 / 配置打印机的主入口:USB 自动发现、填 IPP 地址、选驱动、设默认,无需登录 CUPS 后台。
网页后台 · :8080
浏览器访问 http://IP:8080,默认账号 admin / admin,拖拽上传文件、参数设置、多用户管理与打印记录。
第一步 · 绑定设备(关键)
获取设备 ID / 绑定二维码
在上执行 docker logs cloud-printer 查看启动日志,里面会打印出设备 ID 和绑定二维码;一键脚本安装完成后终端通常也会直接显示。
小程序里添加设备
打开「互维云+」→「打印机管理 / 添加设备」,有三种方式:云ID添加(输入设备 ID)、扫码绑定(扫显示的二维码)。
确认绑定成功
绑定后设备出现在列表并标注在线;点击设备可进入详情页。这一步做对,后面才能选到打印机。
第二步 · 添加并配置打印机
方式一 · 管理页面添加(推荐,最简单)
- 浏览器访问
http://IP:8088,打开管理页面 - 进入「添加打印机」:USB 打印机通常会自动发现,列表里直接选中即可;网络打印机选「网络打印机 / IPP」并填
ipp://打印机IP/ipp(是打印机自身的 IP,不是 IP) - 给打印机起个易记的名字(如「客厅HP」),没有对应型号就选 IPP Everywhere / 通用驱动
- 设为默认打印机并保存,添加即完成
- 点打印测试页验证,能出纸即配置正确
方式二 · 小程序添加:绑定设备后,管理页面里已添加的打印机会自动同步到小程序,无需重复配置;也可在「打印机管理」里手动添加并配置驱动。
ℹ️ 早期版本需登录 CUPS 后台(:631,root / admin123)手动添加;现版本已内置管理页面(:8088),日常添加打印机无需再登录 CUPS 后台。CUPS 后台仍保留,仅在需要高级手动配置时访问。
第三步 · 手机远程打印
在小程序首页选入口
首页提供:微信打印(从聊天记录选图片 / 文档)、手机打印(从相册 / 文件)、文本打印、微信图片、微信文件。
选文件 → 选打印机 → 设参数 → 提交
选好要打印的内容,选择目标打印机,设置份数、色彩(彩色 / 灰度)、纸张尺寸、横向 / 纵向等,提交后自动接收并打印。
查看记录
打印历史(含份数、时间)可在小程序查看,方便回溯。
第四步 · 网页管理后台(电脑端)
- 访问
http://IP:8080,默认账号 / 密码均为admin - 拖拽上传 Word / Excel / PPT / PDF / 图片,自动转 PDF 并预览
- 自定义 黑白 / 彩色、双面、份数、纸张尺寸 等参数
- 支持多用户账号管理、打印记录查询、自动清理数据
支持的文件与格式
文档
PDF / Word / Excel / PPT / TXT
图片
JPG / PNG 等常见格式
文本
直接粘贴文本打印
微信文件
聊天记录里的图片 / 文档直接打印
共享给家人 / 同事
- 网页后台:在管理后台创建多个用户账号,各自登录即可共用同一台打印机
- 小程序:在管理→点击要分享的设备下方的分享按钮,将小程序发给对方,对方在小程序里「添加」即可
使用常见问题
小程序里绑定失败 / 搜不到设备?
确认容器在跑、设备 ID 输入无误。可在「问题排查」标签用 docker logs cloud-printer 复核设备 ID 与二维码。
打印出来是空白 / 乱码?
多半是 CUPS 驱动选错。回到 IP:631 重新 Add Printer,型号选 IPP Everywhere / General,再 Print Test Page 验证。
设置双面却打出单面?
部分 Windows 客户端(PrinterClient)版本有此已知问题;建议改用 CUPS 后台或网页管理后台(:8080)勾选双面后提交,检查是否支持双面打印。
不在同一 WiFi 能打印吗?
可以。在线后任务经云端下发,手机只要有网络就能远程提交。
🔧 问题排查与调试命令
按顺序执行快速自检,再用下方命令定位问题;仍无法解决可加入交流群获取技术支持
🧠 智能排错助手
粘贴 Docker 日志,自动匹配常见错误,给出排查步骤和解决命令(纯本地分析,无需配置任何 Token)
docker logs --tail 100 cloud-printer
docker ps -a | grep cloud-printer
journalctl -u docker --tail 50
💬 AI 在线助手
本地分析没解决?点击下方按钮,与 AI 助手实时对话获取更详细的排查帮助和解决方案
🩺 快速自检流程
看容器是否在跑
执行 docker ps | grep cloud-printer,确认 STATUS 为 Up。
看日志报什么错
执行 docker logs --tail 100 cloud-printer,根据错误关键词搜索下方常见报错。
看网络和端口
确认防火墙放行 631/tcp、8080/tcp、5353/udp,且容器 IP/端口可连通。
看打印机是否被识别
执行 lsusb 或 usb-devices,确认 USB 打印机在宿主机已列出。
🖥️ 物理机 / 虚拟机部署排查
如果你使用的是「一键安装」脚本(install.sh / install_lite.sh / install_old.sh)而不是手动 Docker 部署,先执行下面这组命令。
| 检查项 | 命令 | 操作 |
|---|---|---|
| 查看系统架构 | uname -m && cat /etc/os-release | grep -E '^(NAME|VERSION|ID)=' | |
| 检查 Docker 是否安装 | docker --version && docker compose version | |
| 检查 Docker 服务状态 | systemctl status docker || service docker status | |
| 检查安装脚本是否下载完整 | ls -la install.sh install_lite.sh install_old.sh 2>/dev/null || echo '脚本不在当前目录' | |
| 查看安装脚本运行日志 | cat /tmp/cloud-printer-install.log 2>/dev/null || echo '未找到安装日志' | |
| 检查网络连通性 | ping -c 4 baidu.com && curl -fsSL -I https://registry.hub.docker.com | head -n 1 | |
| 检查 CUPS 服务是否启动 | docker exec cloud-printer sh -c 'service cups status || systemctl status cups' | |
| 重新运行一键安装 | sudo bash install.sh |
🐳 容器状态检查
| 检查项 | 命令 | 操作 |
|---|---|---|
| 容器是否运行 | docker ps | grep cloud-printer | |
| 查看容器详情 | docker inspect cloud-printer | |
| 查看实时日志 | docker logs -f cloud-printer | |
| 查看最近 100 行日志 | docker logs --tail 100 cloud-printer | |
| 进入容器内部 | docker exec -it cloud-printer /bin/bash | |
| 重启容器 | docker restart cloud-printer | |
| 停止并删除容器 | docker stop cloud-printer && docker rm cloud-printer |
🌐 网络与端口检查
| 检查项 | 命令 | 操作 |
|---|---|---|
| 查看容器 IP | docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' cloud-printer | |
| 查看 macvlan 网络 | docker network inspect cloud-printer-net | |
| 测试端口连通性 | curl -v http://localhost:631 | |
| 查看宿主机监听端口 | ss -tlnp | grep -E '631|8080|8088' | |
| 查看网卡名称 | ip link | grep -E '^[0-9]+:' | grep -v 'lo|docker|veth|tun' | |
| mDNS 发现测试 | avahi-browse -a -t |
🖨️ 打印机硬件检查
| 检查项 | 命令 | 操作 |
|---|---|---|
| 列出 USB 设备 | lsusb | |
| 查看 USB 设备详情 | usb-devices | grep -A 5 Printer | |
| 查看 CUPS 已识别打印机 | docker exec cloud-printer lpstat -v | |
| 查看 CUPS 队列状态 | docker exec cloud-printer lpstat -p | |
| 打印测试页 | docker exec cloud-printer lp -d 打印机名 /usr/share/cups/data/testprint.pdf |
❗ 常见报错处理
执行
docker logs cloud-printer 查看错误;常见原因:CUPS 管理员密码为空、macvlan 网卡错误、端口被占用。Host / macvlan 模式下 mDNS 依赖 5353/udp;Bridge 模式默认不支持 Bonjour 跨网段发现,建议改用 Host 或 macvlan 模式。
在 CUPS 管理页
http://宿主机IP:631 找到打印机,点击「Resume Job」;或执行 docker exec cloud-printer cupsenable 打印机名。检查是否能访问互联网(用于云端信令),同时检查容器日志中是否有 WebSocket 连接成功提示。
这是 macvlan 设计限制,可改用 Host 模式共享宿主机网络;若只用 macvlan,需在宿主机创建 macvlan 子接口访问。
📞 仍无法解决?
- 容器日志(
docker logs cloud-printer输出,建议前 50 行) - 宿主机系统与版本(如 群晖 DSM 7.2 / Ubuntu 22.04 / iStoreOS 22.03)
- 网络模式(macvlan / Bridge / Host)
- 打印机型号与连接方式(USB / 网络打印机)
页面右侧扫码添加机器人助手并发送 “云打印” 加入交流群;或直接扫描页内小程序码体验远程打印。
🖨️ 打印机驱动支持查询
选择数据源,输入打印机型号或驱动名称,即时查询是否被本镜像 / 物理机支持。
🖨️ 喷墨打印机喷头防堵维护工具
解决闲置喷墨打印机喷头干涸堵塞,延长喷头使用寿命 | 支持物理机与 Docker 容器环境
📦 一键安装命令
一条命令完成安装,支持物理机与 Docker 容器环境。
🛠️ 四大养护能力
智能机制全方位保护喷头,让喷墨打印机始终保持最佳状态。
周期自动养护
按照设定周期自动打印测试页,疏通喷嘴,避免长期静置墨水干涸堵头。
空闲智能触发
长时间没有打印任务时,自动启动喷头维护,有打印任务自动跳过维护。
低损耗轻冲洗
轻量喷头冲洗机制,相比频繁深度冲洗,节约墨水,减少耗材损耗。
Web 可视化管理
浏览器网页操作,无需敲命令,查看运行状态、定时任务、执行日志。物理机、Docker 容器全部兼容。
📋 功能介绍
专为喷墨打印机设计的智能养护方案。
适配市面绝大多数彩色喷墨打印机,专门处理机器长期闲置不用,喷头墨水干涸、出现白条、断线堵头等问题。
搭载喷头智能养护机制,系统空闲时段自动执行喷头保湿、定时轻冲洗;长时间无打印任务自动触发维护作业。有效降低喷头堵塞概率,减少维修更换喷头成本,延长打印机喷头使用寿命。
部署简单,一条命令完成安装,支持物理机、容器环境,网页端可视化管理全部功能。
🎯 适用场景
凡是长期闲置或使用频率不高的喷墨打印机,都建议部署喷头养护。