print-blockage-stopper

print-blockage-stopper

Docker app from abadr's Repository

Overview

Automated maintenance prints for any network printer (especially pigment printers like Canon imagePROGRAF, Epson SureColor, HP DesignJet, etc.). Sends a small test image on a configurable schedule (default: every 3 days) to keep all ink channels flowing and prevent costly pigment clogs and cleaning cycles. Features: multi-printer support, network printer discovery, per-printer schedules, smart skip (won't print if the printer was recently used), preset test images for 4/6/8/11/12-colour printers, custom image upload, notifications (webhook, email, Home Assistant), and a modern React dashboard with dark mode.

Print Blockage Stopper

Automated maintenance prints for any network printer (IPP Everywhere compatible). Keeps pigment inkjet print heads healthy by sending small test prints on a schedule.

Why?

Pigment-based inkjet printers — especially large-format models like Canon imagePROGRAF, Epson SureColor, and HP DesignJet — clog when they sit idle. The pigment settles in the nozzles, leading to expensive cleaning cycles, wasted ink, and sometimes permanent damage. This container prevents that by automatically printing a tiny test image every few days.

Quick Start

docker run -d \
  --name print-blockage-stopper \
  -e PRINTER_IP=192.168.1.50 \
  -p 8631:8631 \
  -p 631:631 \
  -v /path/to/data:/data \
  abadrdh/print-blockage-stopper

Open http://YOUR_HOST:8631 to access the dashboard. You can also skip PRINTER_IP and add printers from the dashboard.

Unraid

Search for print-blockage-stopper in Community Applications and click Install.

Features

  • Multi-printer support — manage multiple printers from one container
  • Network auto-discovery — find printers via mDNS/IPP
  • Smart scheduling — skip if the printer was recently used
  • Preset test images — optimised for 4, 6, 8, 11, and 12-colour printers
  • Custom image upload — use your own test pattern (up to 5 MB)
  • Web dashboard — status, schedule controls, print history chart
  • Connection status — real-time green/red indicators
  • Ink levels — live ink level bars via IPP attributes
  • Auto-retry — retries failed prints once after 30 seconds
  • Notifications — webhook (Slack/Discord/ntfy), email (SMTP), and Home Assistant
  • CSV export — download print history
  • Mobile-friendly — responsive layout
  • Unraid notifications — alerts on print failures

Configuration

All settings are optional. Printers can be added entirely from the dashboard.

Variable Default Description
PRINTER_IP (empty) Auto-add this printer on first boot
SCHEDULE 0 10 */3 * * Default cron schedule
PAPER_SIZE A4 Default paper size (A4, Letter, A3, etc.)
SKIP_HOURS 72 Skip if printer was used within N hours
CONNECTION ipp Connection type: ipp or socket
PRINTER_PORT 9100 Socket port (only with CONNECTION=socket)
WEBHOOK_URL (empty) Webhook URL for notifications

Schedule Examples

Expression Meaning
0 10 */3 * * Every 3 days at 10 AM
0 10 */5 * * Every 5 days at 10 AM
0 8 * * 1,4 Monday and Thursday at 8 AM
0 9 * * * Daily at 9 AM

Notifications

Configure notifications from the dashboard under the Notifications card. Three independent channels:

Webhook — Any URL that accepts JSON POST. Compatible with Slack, Discord, ntfy.

Email — SMTP configuration (server, port, from/to, optional auth). Works with Gmail, Outlook, Mailgun, or any SMTP provider.

Home Assistant — Creates persistent notifications via the HA REST API. Requires a long-lived access token (HA profile > Long-Lived Access Tokens > Create Token). Supports self-signed certificates.

Each channel has a Test button to verify your setup.

Ports

Port Purpose
8631 Dashboard
631 CUPS web UI (advanced)

Volumes

Path Purpose
/data Printer config, logs, uploads, CUPS state

How It Works

  1. On startup, the container runs CUPS and registers your printers
  2. A cron job triggers auto-print.sh on each printer's schedule
  3. The script checks if the printer was recently used (smart skip)
  4. If not, it sends a small test image via CUPS/IPP
  5. Results are logged and notifications sent to enabled channels
  6. The web dashboard (Python HTTP server on port 8631) provides controls and monitoring

Requirements

  • Any network printer with IPP Everywhere support
  • Printer powered on with paper loaded
  • Network access from Docker host to printer

License

MIT

Install print-blockage-stopper on Unraid in a few clicks.

Find print-blockage-stopper in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for print-blockage-stopper Review the template variables and paths Click Install

Requirements

Any network printer with IPP Everywhere support (usually any modern networked printer). Especially useful for pigment printers.

Download Statistics

1,013
Total Downloads

Related apps

Details

Repository
abadrdh/print-blockage-stopper
Last Updated2026-04-05
First Seen2026-03-29

Runtime arguments

Web UI
http://[IP]:[PORT:8631]
Network
bridge
Privileged
false
Extra Params
--cap-drop=ALL --cap-add=DAC_OVERRIDE --cap-add=CHOWN --cap-add=FOWNER --cap-add=SETUID --cap-add=SETGID --security-opt=no-new-privileges

Template configuration

DashboardPorttcp

Web dashboard for managing printers, schedules, and test images.

Target
8631
Default
8631
Value
8631
CUPS Web UIPorttcp

CUPS print server interface for advanced monitoring.

Target
631
Default
631
Value
631
Printer IP AddressVariable

(Optional) IP address of a printer to auto-add on first boot. You can also add printers from the dashboard after starting the container.

Target
PRINTER_IP
Default Print ScheduleVariable

Default cron expression for new printers. Can be customised per-printer in the dashboard. Default: every 3 days at 10 AM.

Target
SCHEDULE
Default
0 10 */3 * *
Value
0 10 */3 * *
Default Paper SizeVariable

Default paper size for new printers (e.g., A4, Letter, A3). Can be changed per-printer.

Target
PAPER_SIZE
Default
A4
Value
A4
Default Skip HoursVariable

Default hours to skip maintenance print if printer was recently used. Adjustable per-printer in the dashboard.

Target
SKIP_HOURS
Default
72
Value
72
Connection TypeVariable

Default connection type for new printers: 'ipp' (recommended) or 'socket' (port 9100).

Target
CONNECTION
Default
ipp
Value
ipp
Webhook URLVariable

(Optional) URL for print success/failure notifications. Works with Slack incoming webhooks, Discord webhooks, ntfy.sh, or any endpoint accepting JSON POST.

Target
WEBHOOK_URL
Printer PortVariable

Default port for socket connections (only used when Connection Type is 'socket').

Target
PRINTER_PORT
Default
9100
Value
9100
Data / LogsPath

Persistent storage for printer config, logs, uploads, and CUPS state.

Target
/data
Default
/mnt/user/appdata/print-blockage-stopper
Value
/mnt/user/appdata/print-blockage-stopper
Unraid NotificationsPath

Mount Unraid's notification script to get alerts on print failures. Leave default for standard Unraid installs.

Target
/unraid/notify
Default
/usr/local/emhttp/webGui/scripts/notify
Value
/usr/local/emhttp/webGui/scripts/notify