A self-hosted office printer management dashboard with SNMP-based toner/status monitoring, print job control, network scanning, and Telegram alerts — all from a single Node.js process.
- SNMP polling of networked printers (Canon, HP, and others)
- Toner/ink levels per cartridge with low-toner threshold alerts
- Paper tray status and empty tray detection
- Jam, cover-open, and service alert detection
- Online/offline state with consecutive-failure debounce (avoids false alarms from transient SNMP timeouts)
- Page count tracking with history per printer
- Uptime display
- View all CUPS print queues and their current status
- Submit print jobs directly from the dashboard (file upload)
- Live and completed job history with job cancellation
- Pause/resume individual print queues
- Set default printer
- Discover IPP printers on the local network and add them to CUPS in one click
- Detect connected scanners via
scanimage - Trigger scans remotely from the dashboard
- Browse and download completed scan files
- Built-in Samba config helper — generates the
/etc/samba/smb.confsnippet so Canon/HP printers can scan-to-folder directly to the server over SMB (\\SERVER_IP\scans)
- SNMP subnet scan to auto-discover printers on your network
- Automatic local subnet detection
- IPP/CUPS discovery as an alternative to SNMP
- One-click add from scan results
- Instant notifications for low toner, paper empty, jams, offline, and back-online events
- Per-alert type toggles (enable/disable individually)
- Configurable toner threshold percentage
- Alert cooldown to prevent repeated notifications for the same condition
- Alert state persisted to disk — server restarts do not re-fire already-sent alerts
- Test message button to verify your bot token and chat ID
- Dark-themed responsive web UI
- Role-based login —
admin(full access) anduser(read-only monitoring) - Admin user management (add, change password, delete)
- Settings page with live Telegram configuration
- Node.js 18+
- Network access (SNMP, UDP 161) to your printers
- CUPS for print queue management, job control, and IPP-based printer discovery
- SANE (
scanimage) for scanner support - Samba (
smbd) if you want scan-to-folder from printer web UIs
On Debian/Ubuntu:
sudo apt update
sudo apt install -y cups cups-client sane-utils sane-airscan samba printer-driver-all
sudo usermod -aG lpadmin $USER
git clone https://github.com/isuruwa/printdash.git
cd printdash
npm install
cp printers.example.json printers.json
cp settings.example.json settings.jsonnpm startProduction (PM2):
pm2 start server.js --name printdash
pm2 save
Open http://SERVER_IP:3003
Default login
Username: admin
Password: admin123
- Overview → + Add Printer
- Enter Name, IP address, Brand, SNMP community (
public) - Check "Also create CUPS print queue + SANE scan device"
- Save
This creates:
- SNMP monitoring entry
- CUPS print queue:
lpadmin -p "<name>" -E -v ipp://<ip>/ipp/print -m everywhere - SANE scan entry in
/etc/sane.d/airscan.conf:"<name>" = http://<ip>:80/eSCL, eSCL
CUPS:
lpadmin -p "PrinterName" -E -v ipp://192.168.x.x/ipp/print -m everywhere
lpstat -pSANE — edit /etc/sane.d/airscan.conf, under [devices]:
"PrinterName" = http://192.168.x.x:80/eSCL, eSCL
scanimage -L
Name must match exactly in: PrintDash printer name, CUPS queue name, airscan.conf entry.
- Users → Add User
- Enter username, password
- Select a Role
- Settings → Scans → copy the Samba config block
- Add to
/etc/samba/smb.conf
systemctl restart smbd- On printer web UI: Scan → Scan to Folder →
\\SERVER_IP\scans
USERS_FILE— default./users.jsonDATA_FILE— default./printers.jsonSETTINGS_FILE— default./settings.jsonSCAN_DIR— default/opt/scansUPLOAD_DIR— default/tmp/printdash-uploadsAIRSCAN_CONF— default/etc/sane.d/airscan.conf
MIT