CloudGuru

Open-source tool · OpenPrint

OpenPrint Server

A Docker-based CUPS print server with an admin dashboard.

OpenPrint Server packages CUPS, Avahi and a small admin dashboard into one Docker stack for a Raspberry Pi or Linux PC. The dashboard finds USB and network printers, creates shared queues and controls real CUPS jobs. Avahi then advertises the shared queues so computers on the local network can find them.

Runs on
Raspberry Pi and Linux PCs
Print system
CUPS 2.4 + Avahi
License
MIT
Dashboard
Flask + Gunicorn, HTTPS

Why it exists

Questions it answers

How do I share a USB printer with the whole network?

Plug it into the server, set up a shared queue from the dashboard, and Avahi advertises it on the LAN.

Do I need a Linux driver for my printer?

Often not. The default passthrough queue sends data rendered by the client's installed driver unchanged.

Can I manage jobs without the CUPS console?

Yes. Hold, release and cancel jobs, see recent history and filter by printer.

What about receipt or label printers?

Use a raw queue with an application that produces the printer's own language, or inject a matching PPD and filter.

Features

What it does

Printers and queues

  • Display name, queue name, model, location, device URI and status
  • Add, remove, pause and resume queues
  • Accept or reject jobs, share on the LAN, set a default printer
  • Advanced settings in the standard CUPS admin page

Discovery

  • CUPS-visible USB and network devices
  • Shows which queue already manages each device
  • Raw USB bus inventory
  • Rescans every 15 seconds while the dashboard is open

Jobs

  • Active jobs and recent history
  • Filter by printer
  • Hold and release pending jobs, cancel jobs
  • Queue view refreshes every 10 seconds

Security and storage

  • HTTPS dashboard with admin sessions
  • CSRF protection and login rate limiting
  • Persistent CUPS config, spool, cache and certificates
  • Admin password kept in a git-ignored secrets file

How it fits together

Architecture

  1. 01Client computer (print dialog, IPP or lp)
  2. 02CUPS queues
  3. 03Avahi / mDNS advertising
  4. 04USB or network printer
  5. 05Admin dashboard on port 8443

Quick start

Try it

Build and start on Linux or Raspberry Pi
git clone https://github.com/jahmed-cloud/OpenPrint-Server.git
cd OpenPrint-Server
bash scripts/setup.sh   # asks for a 12+ character admin password
docker compose ps
# dashboard at https://openprint-server.local:8443 (user: printadmin)
Print a test file to a raw queue from a client
lp -h openprint-server.local:631 -d receipt -o raw receipt.escpos

The full setup guide is in the README on GitHub.

Before you start

Requirements

Production hostRootful Docker Engine on Linux, Docker Compose v2+
ArchitectureARM64 (64-bit Raspberry Pi OS / Debian) or x86_64; build on each architecture
Ports on the trusted LAN onlyTCP 631 (IPP/CUPS), TCP 8443 (dashboard), UDP 5353 (mDNS)
Windows / macOSDocker Desktop for local testing only, without USB or LAN discovery

Good to know

Keep ports 631, 8443 and 5353 on the trusted LAN and never forward them from the internet. Printer support depends on drivers and protocols: a raw queue passes printer-ready data through unchanged and does not turn an arbitrary device into a PDF-capable printer. No versioned container image is published yet, so build it from source.