printspy

printspy

Docker app from ccmpbll's Repository

Overview

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

PrintSpy

Build Status Docker Image Size Docker Pulls License

A self-hosted dashboard for monitoring multiple 3D printers — OctoPrint and PrusaLink — from a single web interface.

Early Development — expect rough edges, breaking changes, and evolving APIs. Feedback and contributions welcome.

What it does

Each printer gets a row: webcam/snapshot, GCode thumbnail, progress/ETA, temps, layer progress (OctoPrint + DisplayLayerProgress), and smart plug power state/control. Updates push live via SSE. Everything's configured through the settings page — no config files, no restart needed.

Features

  • Real-time SSE updates, no manual refresh
  • Auto-detects camera stack, printer name, and installed plugins
  • Smart plug power control + energy monitoring — auto-detected via OctoPrint (Tasmota, PSU Control), or talk directly to a Tasmota device independent of any plugin, assignable to any printer type
  • Print control (pause/resume/cancel) and one-click reprint from recent files
  • Multi-user login with per-account passwords, no roles/tiers
  • Config backup/restore as YAML
  • Snapshot/live toggle, printer reordering, dark mode, responsive layout
  • Multi-arch (x86 + ARM)

Supported platforms

  • OctoPrint — fully supported
  • PrusaLink — experimental (Only tested on MK4S and Core One)

Plugin architecture — new platforms are straightforward to add.

Quick start

docker run -d \
  --name printspy \
  -p 8080:8080 \
  -v printspy-data:/data \
  ccmpbll/printspy:latest

Open http://localhost:8080 — first run prompts you to create a login. Once in, click the settings gear and add your first printer. You'll need the printer's URL and OctoPrint API key.

Docker Compose

services:
  printspy:
    image: ccmpbll/printspy:latest
    ports:
      - "8080:8080"
    volumes:
      - printspy-data:/data
    restart: unless-stopped

volumes:
  printspy-data:

Configuration

All printer management is done through the web UI — open the settings page to add, edit, reorder, and remove printers. No config files needed.

Login

First run redirects to a setup page to create the first account. Add or remove additional users from Settings → Users. No roles or permission tiers — every account has full access.

Smart plugs

OctoPrint printers with the Tasmota or PSU Control plugin installed get power control automatically — nothing to configure. For everything else (PrusaLink, Klipper, or an OctoPrint printer without the plugin), add a Tasmota device directly under Settings → Smart Plugs and assign it to a printer. Plugs are managed independently of printers, so deleting a printer unassigns its plug instead of deleting it.

Environment variables

Variable Default Description
PRINTSPY_PORT 8080 HTTP server port
PRINTSPY_DATA_DIR /data SQLite database location

Getting your OctoPrint API key

  1. Open your OctoPrint web interface
  2. Go to Settings (wrench icon) → API
  3. Copy the Global API Key, or create a new one under Application Keys

Tech stack

  • Go backend — single binary, low resource usage
  • SQLite — no external database needed
  • Vanilla HTML/CSS/JS frontend — no build step, no framework
  • Docker — multi-arch container (amd64 + arm64)

Building from source

# Requires Go 1.25+ and CGO (for SQLite)
make build

# Or with Docker
make docker

Contributing

PrintSpy is in early development. If you'd like to contribute:

  • Open an issue to discuss before submitting large changes
  • Bug reports with docker logs output are especially helpful
  • Plugin implementations for Moonraker/Klipper are welcome

License

AGPL-3.0 — see LICENSE for details.

Install Printspy on Unraid in a few clicks.

Find Printspy 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 Printspy Review the template variables and paths Click Install

Download Statistics

823
Total Downloads

Related apps

Explore more like this

Explore all

Details

Repository
ccmpbll/printspy:latest
Last Updated2026-06-27
First Seen2026-06-29

Runtime arguments

Web UI
http://[IP]:[PORT:8080]
Network
bridge
Shell
sh
Privileged
false

Template configuration

Web UI PortPorttcp

HTTP web interface port

Target
8080
Default
8080
Value
8080
Config PathPathrw

Path to store PrintSpy database and configuration

Target
/data
Default
/mnt/user/appdata/printspy
Value
/mnt/user/appdata/printspy