tutorial

FreshRSS Monitoring with Vigilmon: Uptime, Health Checks & Feed Update Alerts

Monitor your self-hosted FreshRSS RSS aggregator with Vigilmon — track health endpoint availability, web UI, feed update API, and SSL certificate expiry.

Your FreshRSS server went down at 6 AM. By the time you checked your feeds at lunch, you'd missed six hours of updates from every source you follow. The cron job that triggers feed refreshes kept firing — but with no server to respond, each run silently failed. Your unread count is frozen and your feeds are stale.

FreshRSS is a self-hosted RSS and Atom feed aggregator with a web UI, mobile API support, and a multi-user architecture. Vigilmon gives you continuous external monitoring so FreshRSS downtime and feed update failures surface in seconds, not after an entire morning of news has passed you by.

This tutorial covers monitoring FreshRSS end-to-end with Vigilmon.

What You'll Build

  • A Vigilmon HTTP monitor on FreshRSS's availability endpoint
  • A web UI availability monitor
  • A feed update API check
  • SSL certificate expiry alerts
  • Alert channels for immediate notification

Prerequisites

  • A running FreshRSS instance (typically on port 80/443 behind a reverse proxy)
  • A free account at vigilmon.online

Step 1: Monitor the Health Endpoint

FreshRSS does not ship with a dedicated /health endpoint, but the application root serves as a reliable availability probe. A GET request to the FreshRSS base URL exercises the PHP stack, the database connection, and the routing layer.

Test it:

curl -I https://freshrss.yourdomain.com/

Expected response:

HTTP/2 302
location: https://freshrss.yourdomain.com/i/

FreshRSS redirects the root URL to /i/ (the main interface). A 302 redirect from the root confirms the PHP application is running and routing correctly. You can also monitor the redirect target directly:

curl -I https://freshrss.yourdomain.com/i/

Expected response:

HTTP/2 200
content-type: text/html; charset=UTF-8

Set up the Vigilmon monitor:

  1. Log in to Vigilmon and click New Monitor → HTTP.
  2. Set URL to https://freshrss.yourdomain.com/i/.
  3. Set Check interval to 60 seconds.
  4. Set Expected status code to 200.
  5. Under Advanced → Keyword check:
    • Keyword present: FreshRSS
  6. Save the monitor.

Vigilmon now polls your FreshRSS availability every minute from multiple geographic regions.


Step 2: Monitor Web UI Availability

The root availability check verifies basic PHP and database connectivity, but the web UI can fail for other reasons — a broken CSS/JS asset build, a misconfigured DATA_PATH, or a failed database migration can leave the UI broken while the PHP process keeps running.

Add a UI monitor:

  1. Click New Monitor → HTTP in Vigilmon.
  2. Set URL to https://freshrss.yourdomain.com/i/ (the FreshRSS main interface).
  3. Set Expected status code to 200.
  4. Under Advanced → Keyword check, configure:
    • Keyword present: FreshRSS
    • Keyword absent: Fatal error, Bad Gateway, 500
  5. Save.

FreshRSS includes its own name in the page title and in several UI elements, making it a reliable keyword target across theme configurations.


Step 3: Monitor the Feed Update API

FreshRSS provides a Google Reader-compatible API used by mobile clients (like Reeder, ReadKit, and NetNewsWire) and the Fever API used by other RSS readers. If this API breaks, mobile clients stop syncing even when the web UI appears functional.

The API root endpoint can be checked without authentication to confirm the layer is up:

curl https://freshrss.yourdomain.com/api/greader.php

Expected response:

Empty username.

A text response — even an error message — confirms the PHP API handler is running. A 502 or 404 indicates the API layer has broken.

Set up the API monitor in Vigilmon:

  1. Click New Monitor → HTTP in Vigilmon.
  2. Set URL to https://freshrss.yourdomain.com/api/greader.php.
  3. Set Expected status code to 200.
  4. Under Advanced → Keyword check:
    • Keyword present: username
  5. Set Check interval to 2 minutes.
  6. Save.

This confirms the Google Reader API is responding — the same endpoint your mobile RSS readers use to sync unread state and fetch new articles.


Step 4: SSL Certificate Monitoring

FreshRSS mobile clients connect over HTTPS and will silently fail to sync if the TLS certificate expires. Feed refresh jobs triggered by external cron services also break on certificate errors.

Vigilmon monitors SSL certificate validity automatically alongside your HTTP checks. To configure expiry alerts:

  1. Open any of your HTTPS FreshRSS monitors in Vigilmon.
  2. Go to Settings → SSL.
  3. Enable Alert when certificate expires within 14 days.
  4. Enable Alert when certificate expires within 30 days for early warning — especially important if mobile clients need uninterrupted sync.

Sample alert:

⚠️  SSL Warning: freshrss.yourdomain.com
Certificate expires in 12 days (2026-07-11)
Action: renew via Certbot or verify Caddy ACME config

Step 5: Alert Channels

Go to Notifications → New Channel in Vigilmon and configure delivery:

  • Email — immediate alerts to your inbox
  • Webhook — post to Discord or Slack

A FreshRSS downtime alert looks like:

🔴 DOWN: freshrss.yourdomain.com/i/
FreshRSS availability check failed
Region: US-West
Triggered: 2026-03-01 06:03 UTC

Recovery:

✅ RECOVERED: freshrss.yourdomain.com/i/
Downtime: 11 minutes

Step 6: Status Page

Go to Status Pages → New Status Page in Vigilmon. Add your FreshRSS monitors — UI availability, and API endpoint — and publish. A status page is useful for multi-user FreshRSS instances so all users can quickly check whether an issue is on the server side or local.


What You've Built

| Scenario | How Vigilmon catches it | |---|---| | PHP process crash | UI availability check returns non-200 | | Database (MySQL/PostgreSQL/SQLite) unreachable | UI keyword check detects error page | | Web UI rendering broken | UI keyword monitor detects fatal error | | Google Reader API broken (mobile sync fails) | API endpoint monitor detects non-200 | | Feed update cron failing silently | API availability monitor; FreshRSS logs for detail | | SSL certificate expired or expiring | SSL expiry alert triggers | | Reverse proxy (Nginx/Caddy/Apache) down | HTTPS monitor detects 502 or timeout | | DNS misconfiguration | HTTP monitor detects DNS resolution failure |


FreshRSS keeps your information diet under your control, free from algorithmic feeds and platform surveillance. Keeping your instance healthy means every feed refresh runs on schedule and every mobile client stays in sync. Vigilmon handles the monitoring so you never miss a headline because of a silent server failure.

Start monitoring your FreshRSS instance today — register free at vigilmon.online.

Monitor your app with Vigilmon

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

Start free →