Modern Docker management, auto-updates included.
A lightweight, self-hosted platform for managing and auto-updating Docker containers.
Pull, run, manage
From zero to managing every container on your host in 30 seconds.
Pull the image
A single ~15 MB image with the Go backend and embedded React UI. No external dependencies.
Open the dashboard
Browse to localhost:8080 and see every container, image, network, and volume on the host.
Set update policies
Per-container semver rules: patch, minor, major, or none. Auto-update with rollback on health check failure.
Everything Watchtower does, and a lot more
Auto-updates with rollback, real-time monitoring, and a real UI.
Auto-Update Engine
Scan, preview, and update containers with automatic rollback on health check failure.
Web Dashboard
React UI with dark and light themes, fully responsive, and PWA-installable.
Real-time Monitoring
CPU, memory, and network I/O tracking with live sparkline charts.
Container Management
Start, stop, restart, pause, and remove containers from the browser.
Compose & Volumes
Manage Compose stacks, volumes, and networks with stack-level actions.
Watchtower Compatible
Drop-in replacement that recognizes existing Watchtower labels.
Install in 30 seconds
One command, one image. Mount the Docker socket and you're managing everything.
$ docker run -d --name patrol \
-p 8080:8080 \
-v /var/run/docker.sock:/var/run/docker.sock \
ghcr.io/isaiasgv/patrol:latest
How Patrol compares
| Feature | Patrol | Watchtower | Portainer |
|---|---|---|---|
| Modern web UI | ✓ | — | ✓ |
| Auto-updates | ✓ | ✓ | — |
| Rollback on failure | ✓ | — | — |
| Real-time CPU/RAM | ✓ | — | ✓ |
| Image size | ~15 MB | ~25 MB | ~270 MB |
| Watchtower labels | ✓ | ✓ | — |
Who it's for
DevOps engineers, self-hosted enthusiasts, and Docker operators who want centralized container management on their own infrastructure.
Frequently asked
Practical answers for self-hosting and homelab operators.
Run a single container, manage them all
Patrol ships as a single Docker image. Pull it and you're done.
View on GitHub