Your Lemmy instance looked fine from the outside — the front page loaded, users were voting, and new posts appeared. But for three hours, no posts from subscribed communities on other instances were arriving. The federation worker had silently stopped. There was no error page, no alert, and no indication anything was wrong until a user checked manually.
Lemmy is a self-hosted federated link aggregator and Reddit alternative built on the ActivityPub protocol. A healthy Lemmy instance depends on the Lemmy backend process, the lemmy-ui frontend, PostgreSQL, and the federation system all working in concert. When federation quietly stalls, your instance becomes an island. Vigilmon gives you the external monitoring to detect these failures before your users do.
This tutorial walks through monitoring Lemmy end-to-end with Vigilmon.
What You'll Build
- A Vigilmon HTTP monitor on the Lemmy web UI
- An API health check using Lemmy's
/api/v3/siteendpoint - A federation endpoint check
- An image upload service availability check
- SSL certificate expiry alerts
- A response-time-based database connectivity signal
Prerequisites
- A running Lemmy instance (v0.19.x or later recommended)
- A free account at vigilmon.online
Step 1: Monitor the Lemmy Web UI
The Lemmy frontend (lemmy-ui) renders the community feed and is the first thing users see. A 200 response from the root URL confirms that Nginx and the lemmy-ui Node.js process are running.
Test it:
curl -I https://lemmy.yourdomain.com/
You should see 200 OK with a Content-Type: text/html response.
Set up the Vigilmon monitor:
- Log in to Vigilmon and click New Monitor → HTTP.
- Set URL to
https://lemmy.yourdomain.com/. - Set Check interval to 60 seconds.
- Set Expected status code to
200. - Under Advanced → Keyword check, add keyword present:
Lemmy. - Save the monitor.
Step 2: Monitor the Site API Endpoint
Lemmy's /api/v3/site endpoint returns instance metadata, site settings, and active user counts. It requires a live backend process and a functioning PostgreSQL connection. A non-200 response here almost always means the backend is down or the database is unreachable.
Test it:
curl https://lemmy.yourdomain.com/api/v3/site
Healthy response (truncated):
{
"site_view": {
"site": {
"name": "My Lemmy",
"description": "A community instance"
}
},
"version": "0.19.3"
}
Set up the API monitor:
- Click New Monitor → HTTP in Vigilmon.
- Set URL to
https://lemmy.yourdomain.com/api/v3/site. - Set Expected status code to
200. - Under Advanced → Keyword check, add:
- Keyword present:
"version" - Keyword absent:
"error"
- Keyword present:
- Under Advanced → Response time alert, set alert threshold to
3000 ms. - Save.
The response time alert acts as a database connectivity signal — a slow response to this endpoint typically means PostgreSQL is under pressure or struggling to respond.
Step 3: Monitor the Federation Endpoint
Lemmy's ActivityPub federation relies on the .well-known/nodeinfo and .well-known/webfinger endpoints. Remote Lemmy and Mastodon instances query these to discover and interact with your communities. If these endpoints fail, your instance stops receiving federated posts and follows from the wider fediverse.
Test it:
curl https://lemmy.yourdomain.com/.well-known/nodeinfo
Healthy response:
{
"links": [
{
"rel": "http://nodeinfo.diaspora.software/ns/schema/2.0",
"href": "https://lemmy.yourdomain.com/nodeinfo/2.0.json"
}
]
}
Set up the monitor:
- Click New Monitor → HTTP in Vigilmon.
- Set URL to
https://lemmy.yourdomain.com/.well-known/nodeinfo. - Set Expected status code to
200. - Under Advanced → Keyword check, add keyword present:
nodeinfo. - Save.
Step 4: Monitor the Image Upload Service
Lemmy uses pict-rs for image hosting. Profile pictures, community icons, and post images all go through this service. When pict-rs goes down, image uploads silently fail and existing images return 404s — but Lemmy itself continues to respond normally.
Test the pict-rs health endpoint:
curl https://lemmy.yourdomain.com/pictrs/image/health
A 200 response indicates pict-rs is running. If you use a separate subdomain for media (e.g., media.yourdomain.com), test that URL instead.
Set up the Vigilmon monitor:
- Click New Monitor → HTTP in Vigilmon.
- Set URL to
https://lemmy.yourdomain.com/pictrs/image/health. - Set Expected status code to
200. - Save.
Step 5: SSL Certificate Monitoring
ActivityPub federation is HTTPS-only. An expired certificate causes remote instances to reject delivery attempts, breaking federation without generating visible errors on your instance. Vigilmon automatically monitors SSL certificate validity on all HTTPS monitors.
- Open your Lemmy web UI monitor in Vigilmon.
- Under Advanced → SSL, ensure Alert before expiry is enabled (default: 14 days).
- Save.
Step 6: Alert Channels
Go to Notifications → New Channel in Vigilmon and configure:
- Email — for your instance admin
- Webhook — for Slack, Discord, or Matrix
A federation endpoint alert looks like:
🔴 DOWN: Lemmy NodeInfo Federation Endpoint
Status: 502 Bad Gateway (expected 200)
Triggered: 2026-03-01 11:34 UTC
What You've Built
| Scenario | How Vigilmon catches it |
|---|---|
| lemmy-ui frontend crash | HTTP monitor detects non-200 from web UI |
| Lemmy backend process crash | /api/v3/site returns 502 or times out |
| Database unavailable | /api/v3/site returns error or response time spikes |
| Federation stalled | NodeInfo or WebFinger endpoint monitor fails |
| Image uploads broken | pict-rs health endpoint returns non-200 |
| SSL certificate expired | HTTPS monitor reports TLS error |
| DNS misconfiguration | HTTP monitor detects resolution failure |
Running a Lemmy instance means being responsible for the communities that form around it. Vigilmon's layered monitoring lets you catch infrastructure failures before they affect your users' ability to post, subscribe to communities, or interact with the wider fediverse.
Start monitoring your Lemmy instance today — register free at vigilmon.online.