tutorial

How to Monitor Your Self-Hosted PhotoPrism Instance with Vigilmon

PhotoPrism handles your entire photo library — if the thumbnail service or AI indexing stops working, you won't notice until photos stop appearing. Set up comprehensive monitoring with Vigilmon in minutes.

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:

  1. Click New Monitor → HTTP
  2. URL: https://photoprism.yourdomain.com/api/v1/status
  3. Expected status: 200
  4. Check interval: 5 minutes
  5. 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:

  1. Click New Monitor → HTTP
  2. URL: https://photoprism.yourdomain.com
  3. Expected status: 200
  4. Check interval: 5 minutes
  5. 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:

  1. Open your PhotoPrism instance and right-click on any photo thumbnail
  2. Copy the image URL (it looks like /api/v1/t/{hash}/public/tile_500)
  3. In Vigilmon, click New Monitor → HTTP
  4. URL: https://photoprism.yourdomain.com/api/v1/t/{your-hash}/public/tile_500
  5. Expected status: 200
  6. Check interval: 10 minutes
  7. 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:

  1. Click New Monitor → SSL Certificate
  2. Domain: photoprism.yourdomain.com
  3. Alert threshold: 14 days before expiry
  4. 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:

  1. Status Pages → New Status Page
  2. Add all four monitors
  3. 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.

Monitor your app with Vigilmon

Free plan — 5 monitors, no credit card required. Up and running in 60 seconds.

Start free →