printspy
printspy 3d printer monitor octoprint dashboard print farm
ccmpbll/printspy:latest
https://hub.docker.com/r/ccmpbll/printspy
bridge
sh
false
https://github.com/ccmpbll/printspy/issues
https://github.com/ccmpbll/printspy
https://github.com/ccmpbll/printspy/blob/main/README.md
Self-hosted dashboard for monitoring multiple 3D printers from a single web interface. Connects to OctoPrint instances and displays real-time status, webcam feeds, temperatures, print progress, and more via Server-Sent Events.
Features include smart plug power monitoring and control (Tasmota/PSU Control), print control (pause/resume/cancel), recent files with one-click reprint, layer progress, and GCode thumbnails.
Open the web UI, add your printers with their OctoPrint URL and API key, and you're set. No config files needed.
Web interface: http://UNRAID_IP:8080
Tools:Utilities
http://[IP]:[PORT:8080]
https://raw.githubusercontent.com/ccmpbll/unraid-docker-templates/refs/heads/master/templates/printspy.xml
https://raw.githubusercontent.com/ccmpbll/unraid-docker-templates/main/images/printspy.png
###2026-07-02b
- Direct Tasmota smart plug support — talk to devices directly over HTTP, independent of any auto-detected plugin (works for PrusaLink, Klipper, or OctoPrint without the Tasmota plugin)
- Plugs managed independently of printers (Settings > Smart Plugs) — survive printer deletion instead of being removed with it
- Assignable to any printer type, including OctoPrint, for a second plug an auto-detected one doesn't cover
- Per-plug label visibility toggle for the dashboard power button
- Power toggles now reflect instantly instead of waiting on the next poll cycle
- Bumped to Go 1.25
###2026-07-02a
- Larger, centered logo on the login/setup pages
- Self-service password change from Settings > Your account
###2026-07-02
- Multi-user login — bcrypt-hashed accounts, SQLite-backed sessions, first-run setup page
- Login rate-limited to 5 attempts per 15 minutes per username
- Fixed SSRF via printer URL field (blocks loopback/link-local addresses, including the cloud metadata endpoint)
- Added X-Content-Type-Options: nosniff header
- Added CI (build/test) on every PR and push to main
###2026-07-01a
- Dead code removal, SSE broadcast dedupe
###2026-07-01
- Dedupe digest-auth retry and idle-reload code paths
###2026-06-27e
- Fix idle power consumption (watts) not displaying on printer cards
- Fix recent files not updating after changing count in settings
- Fix potential crash when PrusaLink camera snapshot fails to load
- Fix digest auth using wrong URI path for snapshot proxy
###2026-06-27d
- New PrusaLink printer plugin — connect Prusa MK4/MK4S, MK3.9, Mini+, XL, and Core One directly via PrusaLink API
- HTTP Digest authentication, status monitoring, print control, recent files, and camera snapshots
- Automatic print history recording for both OctoPrint and PrusaLink printers
- Printer type selector with conditional fields, pause confirmation dialog
###2026-06-27c
- Multi-plug Tasmota support with per-plug labeled controls
- Smart printing guard: only protects printer plug, auxiliary plugs (lights, fan) can be toggled while printing
- Global poll interval setting
- YAML config export/import for backup and restore
- Pause confirmation dialog
###2026-06-27b
- Recent files dropdown with thumbnails, print status, and one-click reprint
- Print control: pause, resume, cancel from the dashboard
- Recent files count configurable in settings
- Security fixes: path traversal guard, XSS fix in reprint handlers
###2026-06-27
- Smart plug power monitoring and control (Tasmota and PSU Control)
- Per-printer and bulk power on/off with printing safety guard
- Live power consumption display (watts) for Tasmota energy devices
###2026-06-24
- Full code review: 23 issues fixed across bugs, security, performance
- API keys stripped from list/SSE responses
- Graceful shutdown, settings validation, typed SSE messages
- go-sqlite3 bumped for CVE fixes
###2026-06-22
- Initial release
- Real-time SSE dashboard with webcam, temps, progress, thumbnails
- OctoPrint plugin detection (DisplayLayerProgress, camera-streamer)
- Mobile responsive layout with dark mode
8080
/mnt/user/appdata/printspy