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
- 01Client computer (print dialog, IPP or lp)
- 02CUPS queues
- 03Avahi / mDNS advertising
- 04USB or network printer
- 05Admin dashboard on port 8443
Quick start
Try it
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)lp -h openprint-server.local:631 -d receipt -o raw receipt.escposThe full setup guide is in the README on GitHub.
Before you start
Requirements
| Production host | Rootful Docker Engine on Linux, Docker Compose v2+ |
| Architecture | ARM64 (64-bit Raspberry Pi OS / Debian) or x86_64; build on each architecture |
| Ports on the trusted LAN only | TCP 631 (IPP/CUPS), TCP 8443 (dashboard), UDP 5353 (mDNS) |
| Windows / macOS | Docker 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.
