How to Monitor Your Self-Hosted PhotoPrism Instance with Vigilmon
PhotoPrism takes on a serious job: managing your entire photo library with AI-powered tagging, facial recognition, and automatic album generation. When it's self-hosted, a failure isn't just inconvenient — it can mean photos don't get indexed, backups from your phone stop syncing, and new memories are quietly lost.
This guide sets up four layers of monitoring with Vigilmon: the API status endpoint, web UI availability, thumbnail service, and SSL certificate. All on the free tier.
What can go wrong with a self-hosted PhotoPrism
PhotoPrism runs a Go backend with a built-in web server, SQLite or MariaDB, and a thumbnail/preview generation pipeline. Common failure modes:
- Go process crash — the main process exits; the UI and all clients stop working
- Thumbnail service failure — new photos index but thumbnails don't generate; the web UI shows empty gray squares
- AI indexing stalls — photos upload but never get auto-tagged or face-matched; the library grows but search stops improving
- Database lock or corruption — especially with SQLite under heavy concurrent access from multiple clients
- SSL certificate expiry — all clients (browser, mobile app, third-party sync) stop connecting
Step 1: Monitor the /api/v1/status health endpoint
PhotoPrism exposes a status endpoint at /api/v1/status that returns application state. It's the fastest signal that the Go process is running and responsive:
curl https://photoprism.yourdomain.com/api/v1/status
# {"status":"operational"}
In Vigilmon:
- Click New Monitor → HTTP
- URL:
https://photoprism.yourdomain.com/api/v1/status - Expected status:
200 - Check interval: 5 minutes
- Save
If the process crashes or the database becomes unreachable, this endpoint stops responding and you'll be alerted within minutes.
Step 2: Monitor web UI availability
PhotoPrism's web UI serves as both the primary interface and a quick sanity check for the whole stack:
- Click New Monitor → HTTP
- URL:
https://photoprism.yourdomain.com - Expected status:
200 - Check interval: 5 minutes
- Save
| Monitor | URL | What it catches |
|---|---|---|
| API status | /api/v1/status | Process crash, DB failure |
| Web UI | / | Reverse proxy failure, static asset issues |
Step 3: Monitor the thumbnail service
PhotoPrism generates thumbnails on demand and caches them. The thumbnail endpoint is separate from the status API — a broken thumbnail pipeline returns errors on specific image paths even while the main API appears healthy.
The cleanest way to monitor this without a real photo ID is to check that thumbnail requests don't return 500 errors. You can do this by saving the thumbnail URL of a known photo and monitoring it:
- Open your PhotoPrism instance and right-click on any photo thumbnail
- Copy the image URL (it looks like
/api/v1/t/{hash}/public/tile_500) - In Vigilmon, click New Monitor → HTTP
- URL:
https://photoprism.yourdomain.com/api/v1/t/{your-hash}/public/tile_500 - Expected status:
200 - Check interval: 10 minutes
- Save
If thumbnail generation breaks (a dependency like ImageMagick or ffmpeg fails, or storage runs out), this specific URL will start returning 500 while /api/v1/status still shows operational.
Alternative: Monitor
https://photoprism.yourdomain.com/api/v1/t/— a 404 response (wrong path) still confirms the thumbnail service is routing requests, while a 502 or 503 means it's down.
Step 4: Monitor SSL certificate expiry
PhotoPrism users include mobile apps and automatic photo sync clients — all of which hard-fail on expired certificates with cryptic "connection refused" errors instead of a clear expiry message.
In Vigilmon:
- Click New Monitor → SSL Certificate
- Domain:
photoprism.yourdomain.com - Alert threshold: 14 days before expiry
- Save
With 14 days of warning, you'll catch a broken Let's Encrypt renewal cron well before it causes an outage. Mobile clients in particular are unforgiving about SSL errors and will require manual reconnection after a cert rotation.
Step 5: Set up alert notifications
Go to Notifications → New Channel and add Slack, Discord, or email. Enable the channel on all four monitors.
Alert when the API goes down:
🔴 DOWN: photoprism.yourdomain.com/api/v1/status
Status: 503 Service Unavailable
Regions: EU-West, US-East
Started: 6 minutes ago
Alert for thumbnail service failure:
🔴 DOWN: photoprism.yourdomain.com/api/v1/t/.../tile_500
Status: 502 Bad Gateway
Regions: EU-West
Started: 2 minutes ago
The two separate alerts tell you whether the whole application is down or just the media processing pipeline.
Step 6: Add a status page
Even for a personal photo library, a Vigilmon status page gives you a clear "is it me or the server?" view:
- Status Pages → New Status Page
- Add all four monitors
- Publish and bookmark the URL
If your PhotoPrism instance serves a family or small team, share the status page URL so users can check it instead of messaging you when something seems slow.
What you're monitoring
| Monitor | Type | Catches |
|---|---|---|
| API status /api/v1/status | HTTP | Go process crash, DB failure |
| Web UI | HTTP | Reverse proxy, static asset failure |
| Thumbnail service | HTTP | Image processing pipeline failure |
| SSL Certificate | SSL | Cert expiry before client failures |
Four monitors, complete coverage. You'll know within five minutes if anything in your PhotoPrism stack goes wrong — not when you go to browse vacation photos and find a broken library.
Get started free at vigilmon.online — your first monitor is live in under a minute.