You sit down to write an important meeting summary on your phone. Joplin opens, but sync fails. You switch to your laptop — same error. Your self-hosted Joplin Server has been down for three hours. Every note you wrote on mobile is stuck there, unsynced, while your desktop shows the last version from yesterday.
Joplin Server is the self-hosted sync backend for the Joplin note-taking app — open-source, privacy-respecting, and compatible with all Joplin clients across desktop, mobile, and terminal. Teams and individuals rely on it for continuous note synchronization. When Joplin Server goes down, syncs silently fail and data diverges across devices. Vigilmon gives you the external uptime monitor that catches Joplin Server failures before your notes end up out of sync.
This tutorial covers complete Joplin Server monitoring with Vigilmon.
What You'll Build
- A Vigilmon HTTP monitor on the Joplin Server web UI
- An API health monitor using Joplin's
/api/pingendpoint - A sync endpoint availability check
- An SSL certificate expiry alert
- A database connectivity health check
Prerequisites
- A self-hosted Joplin Server instance (Docker Compose recommended)
- A free account at vigilmon.online
Step 1: Monitor the Joplin Server Web UI
Joplin Server includes a lightweight web admin interface. A crash in the Node.js process, a misconfigured Docker volume, or a failed upgrade can take the entire service down — including the sync API that your clients depend on.
Test it:
curl -I https://joplin.your-domain.com/
Expected response:
HTTP/2 200
content-type: text/html; charset=utf-8
Set up the Vigilmon monitor:
- Log in to Vigilmon and click New Monitor → HTTP.
- Set URL to
https://joplin.your-domain.com/. - Set Check interval to 60 seconds.
- Set Expected status code to
200. - Under Advanced → Keyword check, add:
- Keyword present:
"Joplin"
- Keyword present:
- Save.
Vigilmon now monitors the Joplin Server web interface every minute from multiple regions.
Step 2: Monitor the Joplin API Ping Endpoint
Joplin Server exposes a dedicated ping endpoint at /api/ping. This is the official health check — it's lightweight, unauthenticated, and explicitly designed for monitoring tools. It confirms that the Node.js process is running, the HTTP server is accepting requests, and the service is initialized.
Test it:
curl https://joplin.your-domain.com/api/ping
Expected response:
{
"status": "ok",
"message": "Joplin Server is running"
}
A non-200 response or an unexpected body means the Joplin Server process has crashed, failed to start, or is in an error state.
Set up the Vigilmon monitor:
- Click New Monitor → HTTP in Vigilmon.
- Set URL to
https://joplin.your-domain.com/api/ping. - Set Check interval to 60 seconds.
- Set Expected status code to
200. - Under Advanced → JSON body assertion, add:
- Path:
status - Operator:
equals - Value:
ok
- Path:
- Save.
Step 3: Sync Endpoint Availability
The sync endpoint is the core of Joplin Server — every client connects here to upload and download note changes. It's typically served at /sync/<version> or as a WebDAV-compatible endpoint. When this endpoint goes down, all client synchronization silently fails without showing a clear error to users.
Test the sync endpoint:
curl -I https://joplin.your-domain.com/api/items/root/children
Expected response:
HTTP/2 401
www-authenticate: Bearer
A 401 Unauthorized is the correct response for an unauthenticated probe — it confirms the sync API layer is operational and enforcing authentication.
Set up the Vigilmon monitor:
- Click New Monitor → HTTP in Vigilmon.
- Set URL to
https://joplin.your-domain.com/api/items/root/children. - Set Check interval to 2 minutes.
- Set Expected status code to
401. - Save.
If this returns 502 or 404, the sync API is broken even if the ping endpoint looks healthy.
Step 4: SSL Certificate Monitoring
Joplin clients communicate with your server over HTTPS for all sync operations. If your Let's Encrypt certificate expires or fails to renew, every Joplin client throws a TLS error and stops syncing — with a cryptic error message that non-technical users will struggle to diagnose.
Vigilmon tracks SSL certificate expiry on all HTTPS monitors. Add a dedicated certificate alert:
- Click New Monitor → HTTP in Vigilmon.
- Set URL to
https://joplin.your-domain.com/api/ping. - Under Advanced → SSL certificate, enable Alert when certificate expires within 14 days.
- Save.
Two weeks' notice gives you time to renew or troubleshoot Certbot/Traefik before clients start hitting TLS errors.
Step 5: Database Connectivity
Joplin Server stores all notes, attachments, and user data in PostgreSQL. When the database container goes down, restarts, or runs out of connections, the Joplin Server process remains running but all sync operations fail with database errors. The ping endpoint may still return 200 while sync is completely broken.
Check database-backed functionality:
curl -I https://joplin.your-domain.com/api/ping
For deeper database health, check the user login endpoint — it requires a DB round-trip:
curl -X POST https://joplin.your-domain.com/api/sessions \
-H "Content-Type: application/json" \
-d '{"email": "monitor@example.com", "password": "wrong"}'
Expected response:
{
"error": "Invalid email or password",
"code": "invalidCredentials"
}
A 400 or 401 response with this JSON body means the database is reachable and queries are executing. A 500 or 503 means DB connectivity is broken.
Set up the Vigilmon monitor:
- Click New Monitor → HTTP in Vigilmon.
- Set URL to
https://joplin.your-domain.com/api/sessions. - Set Method to
POST. - Set Request body to
{"email":"monitor@example.com","password":"wrong"}. - Set Request header:
Content-Type: application/json. - Set Expected status code to
400(invalid credentials = DB working). - Save.
Step 6: Alert Channels
Go to Notifications → New Channel in Vigilmon and configure:
- Email — instant alerts to your personal inbox or team
- Webhook — post to Slack, Discord, or a PagerDuty integration
A Slack alert when Joplin Server's ping endpoint fails:
🔴 DOWN: joplin.your-domain.com/api/ping
Status: 502 Bad Gateway
Region: EU-Central
Triggered: 2026-02-18 23:05 UTC
Recovery:
✅ RECOVERED: joplin.your-domain.com/api/ping
Downtime: 31 minutes
Step 7: Status Page
Go to Status Pages → New Status Page in Vigilmon. Add all monitors and publish the page. If you share your Joplin Server with family or a small team, the status page gives everyone a place to check service health without asking you:
<a href="https://vigilmon.online/status/<your-slug>">
<img src="https://vigilmon.online/badge/<monitor-slug>" alt="Joplin Server Status" />
</a>
What You've Built
| Scenario | How Vigilmon catches it |
|---|---|
| Joplin Server process crash | Web UI and ping endpoint both return non-200 |
| API server down (sync fails silently) | /api/ping returns non-200 |
| Sync API broken (notes diverge across devices) | Sync endpoint returns non-401 |
| SSL certificate expired or not renewed | Certificate monitor fires 14 days before expiry |
| PostgreSQL database unavailable | Sessions endpoint returns 500 instead of 400 |
| Docker volume or storage failure | Ping or sync endpoint returns 5xx |
| DNS misconfiguration | HTTP monitor detects DNS resolution failure |
Joplin Server gives you a private, self-hosted sync layer for all your notes — but self-hosted means silent failures are your responsibility to catch. Vigilmon provides the external monitoring that keeps your notes synchronized and your data safe.
Start monitoring Joplin Server today — register free at vigilmon.online.