Docker部署Cups-Web网页打印机

  • 很难遇到的一个不错的打印机项目,毕竟cups单用的话太丑了,配合web端完美正解。
  • 有需要可以自部署。

cups.png
cups-web.png

  • 项目地址:hanxi/cups-web

    功能特点:

    核心功能

  • 远程打印:随时随地通过网页上传文件进行打印
  • 多格式支持:

    • PDF 文档
    • 图片文件(JPG、PNG、GIF)
    • Office 文档(docx、xlsx、pptx 等)自动转换为 PDF(基于 LibreOffice)
    • 文本文件(txt)自动转换为 PDF

    用户管理

  • 多用户系统:支持管理员和普通用户两种角色
  • 打印记录:完整的打印历史记录

    管理后台

  • 用户管理:创建、编辑、删除用户账号
  • 打印记录查询:按用户、时间范围查询打印记录
  • 系统设置:配置数据保留天数等

    安全特性

  • Session 认证:安全的会话管理机制
  • CSRF 保护:防止跨站请求伪造攻击
  • 密码加密:使用 bcrypt 加密存储用户密码

    部署优势

  • Docker 一键部署:使用 Docker Compose 快速启动
  • 数据持久化:数据库和上传文件独立存储
  • 易于维护:简洁的配置和管理界面

Docker部署:

services:
  cups:
    image: docker.1ms.run/hanxi/cups:latest
    user: root
    environment:
      - CUPSADMIN=${CUPSADMIN}
      - CUPSPASSWORD=${CUPSPASSWORD}
    ports:
      - "631:631"
    devices:
      - /dev/bus/usb:/dev/bus/usb
    volumes:
      - ./.etc:/etc/cups
    restart: unless-stopped

  web:
    image: docker.1ms.run/hanxi/cups-web:latest
    user: root
    environment:
      - SESSION_HASH_KEY=${SESSION_HASH_KEY}
      - SESSION_BLOCK_KEY=${SESSION_BLOCK_KEY}
      - SESSION_SECURE=${SESSION_SECURE}
      - CUPS_HOST=cups:631
    volumes:
      - ./.data:/data
      - ./.uploads:/uploads
    ports:
      - "1180:8080"
    depends_on:
      - cups
    restart: unless-stopped

环境配置

  • CUPS 管理员账号(用于管理打印机)
    CUPSADMIN=admin
    CUPSPASSWORD=your_cups_password
  • 如果使用 HTTPS,设置为 true
    SESSION_SECURE=false

必要配置

- SESSION_HASH_KEY=your_hash_key_here
- SESSION_BLOCK_KEY=your_block_key_here
- 这里需要生成安全的密钥,可以发给AI让帮忙生成,这里必须生成密钥,否者web服务无法登录:
- 生成 SESSION_HASH_KEY
openssl rand -base64 32 | tr -d '\n'
- 生成 SESSION_BLOCK_KEY
openssl rand -base64 32 | tr -d '\n'

已有 51 条评论

    1. 2026年04月14日 09:09 Windows 10+ · Chrome 146 IP 湖北省武汉市 电信 回复

      我孩子还没上学,估计后面也会买一个

      1. 2026年04月14日 14:22 Windows 10+ · Edge 146 IP 河南省漯河市 联通 回复

        哈哈 大概是需要的。

    2. 2026年04月14日 21:58 Windows 10+ · Chrome 147 IP 湖北省黄冈市 联通 回复

      现在都搞docker了,都没什么好php程序了。

      1. 2026年04月15日 02:23 Windows 10+ · Edge 146 IP 河南省漯河市 联通 回复

        其实主要是方便

    3. 2026年04月15日 10:06 Windows 10+ · Chrome 132 IP 安徽省 移动数据上网公共出口 回复

      打印小孩子作业确实方便,赞!

      1. 2026年04月15日 14:50 Windows 10+ · Edge 147 IP 河南省漯河市 联通 回复

        确实很不错。

    4. 2026年04月15日 14:53 Windows 7 · Chrome 86 IP 河南省郑州市 移动 回复

      又学习到知识了。。我家的打印机是之前公司搬回来的,孩子的作业几乎每天都要用到,还是必备的,家里没打印机的只能去打印店去打印。。

      1. 2026年04月16日 01:59 Windows 10+ · Edge 147 IP 河南省漯河市 联通 回复

        可以尝试部署

    5. 2026年04月15日 16:08 Windows 10+ · Edge 92 IP 广东省广州市 移动 回复

      曾经:PHP是这个世界上最伟大的语言!
      现在:Docker是这个世界上最简单的程序!
      长江后浪推前浪,前浪死在沙滩上/-\

      1. 2026年04月16日 01:59 Windows 10+ · Edge 147 IP 河南省漯河市 联通 回复

        的确简单

    6. 红叶
      2026年04月17日 16:48 Windows 10+ · Edge 143 IP 河北省石家庄市 联通 回复

      局域网使用,有扫描功能吗,现在局域网共享,可以打印,但是不能扫描

      1. 2026年04月18日 01:57 Windows 10+ · Edge 147 IP 河南省漯河市 联通 回复

        应该没有的。

    7. 2026年04月19日 10:11 Windows 10+ · Chrome 132 IP 湖南省 移动(全省通用) 回复

      这种的是需要打印机支持吧,我这里的打印发票的一台针式打印机一般的都不支持,还得安装驱动。我搞了太j180024小时开机来订单自动打印的

      1. 2026年04月19日 14:51 Windows 10+ · Edge 147 IP 河南省漯河市 联通 回复

        不清楚哈,可以试试驱动

    8. 2026年04月22日 16:33 Windows 10+ · Edge 147 IP 广东省珠海市 联通 回复

      需要打印机支持什么嘛,我家里的打印机是佳能的2500s,不知道行不行。

      1. 2026年04月23日 03:27 Windows 10+ · Edge 147 IP 河南省漯河市 联通 回复

        你可以先部署一个镜像,应该有的。

发表评论