Install PrinterMon on Linux
Requirements
- A Linux host. Debian, Ubuntu, Raspberry Pi OS, and Fedora are all known good. ARM (Raspberry Pi 4 / 5) and x86_64 both work.
- Docker Engine and the Docker Compose plugin installed. Test with
docker compose version. If that fails, install Docker from docs.docker.com. - Network reachability to your printers. The container runs with
network_mode: host, so it shares the host's LAN. If you firewall outbound, allow the printer ports (varies per firmware). - Outbound internet on the host so the container can pull updates and reach printermon.com.
- Port 8888 free on the host (the web UI binds here).
Step 1. Create the working directory
mkdir printermon && cd printermon
Step 2. Create docker-compose.yml
nano docker-compose.yml
Paste the following into the file and save (Ctrl+O, Enter, Ctrl+X in nano).
services:
printermon:
image: printermon/printermon:latest
container_name: printermon
network_mode: host
volumes:
- ./userdata:/app/userdata
restart: unless-stopped
Step 3. Start PrinterMon
docker compose up -d
The first start pulls the image (~200 MB), creates the ./userdata/ folder, and runs initial migrations. The whole thing takes 30 to 90 seconds on a typical home connection. Watch the logs while it boots:
docker compose logs -f
Press Ctrl+C to stop tailing the logs. The container keeps running.
Step 4. Open the web UI
Browse to http://<host-ip>:8888. The Setup Wizard runs on first boot. Continue through Login (set the local admin), Connect Node (link to your printermon.com org), then Add Printers.
Restart after editing settings on disk
cd ~/printermon && docker restart printermon
Most settings can be changed from the web UI without a restart. If you edit files in ./userdata/ directly (e.g. tweaking go2rtc.yaml for camera streams), restart the container to pick up the change.
Upgrading
cd ~/printermon
docker compose pull
docker compose up -d
Compose recreates the container with the new image while preserving the ./userdata/ volume. Migrations run on the first start of the new version. Watch docker compose logs -f if you want to see them.
Backing up the data volume
Use the built-in Backup feature in Settings > System for application-level backups (see Backup and Restore). If you want a filesystem-level backup of the data volume:
cd ~/printermon
tar czf printermon-data-$(date +%Y%m%d).tar.gz userdata/
Troubleshooting
- "port is already allocated" on
docker compose up. Something else is on port 8888. Find it:sudo ss -tlnp | grep :8888. Stop it, or change the host port (you'd need to dropnetwork_mode: hostand add a ports mapping). - The container starts but the dashboard never loads. Tail logs:
docker compose logs -f printermon. Most first-boot failures are clearly explained there. - Printer scans find nothing. Confirm the host can reach the printers:
ping <printer-ip>from the host shell. If the printer is on a separate VLAN, check routes and firewall rules. - Permission denied on userdata/ after a restart. Some systems re-own the bind-mount during docker upgrades. Fix with
sudo chown -R \$(id -u):\$(id -g) userdata/.