Schildichat is an open source fork of Element Web — the official Matrix chat client — with extra features, usability improvements, and custom theming. Like Element Web, it's a JavaScript single-page application (SPA) served as static files via nginx or Caddy, connecting at runtime to a Matrix homeserver (Synapse, Conduit, or Dendrite). That means monitoring Schildichat requires watching two distinct layers: the static web server hosting the JS bundle, and the Matrix homeserver it depends on. Vigilmon lets you cover both from a single dashboard, catching nginx outages, TLS expiry, homeserver connectivity failures, and WebSocket relay issues before your chat users lose connection.
What You'll Set Up
- nginx/Caddy web server uptime and HTTPS monitoring
- Static asset serving health (JS bundle response time)
- Matrix homeserver API connectivity monitoring
- TLS certificate expiry for both the Schildichat domain and the Matrix server domain
- Configuration file (
config.json) accessibility check - WebSocket connectivity health via TCP port monitoring
- SSL/TLS certificate expiry alerts
Prerequisites
- Schildichat deployed and served over HTTPS via nginx or Caddy
- A Matrix homeserver (Synapse, Conduit, or Dendrite) configured and reachable
- A free Vigilmon account
Step 1: Monitor the nginx/Caddy Web Server
The web server hosts Schildichat's JS bundle, CSS, and HTML. If it goes down, no one can load the chat interface.
- Log in to vigilmon.online and click Add Monitor.
- Set Type to
HTTP / HTTPS. - Enter your Schildichat URL:
https://chat.yourdomain.com. - Set Check interval to
1 minute. - Set Expected HTTP status to
200. - Enable Monitor SSL certificate and set Alert when certificate expires in less than
21 days. - Click Save.
This catches nginx/Caddy crashes, server reboots, and Let's Encrypt renewal failures.
Step 2: Monitor Static Asset Serving
Schildichat is a JavaScript SPA — if the JS bundle fails to load (wrong Content-Type, missing file, broken nginx try_files rule), users see a blank page even though the server returns 200 for the root. Monitor the main JS bundle directly:
- In your browser's DevTools Network tab, note the hashed bundle filename:
schildichat-app.12345abc.js(or check the<script src>in the servedindex.html). - Click Add Monitor → HTTP / HTTPS.
- URL:
https://chat.yourdomain.com/bundles/schildichat-app.12345abc.js(adjust the path to your deployment). - Expected HTTP status:
200. - Check interval:
5 minutes. - Click Save.
Set a Response time alert threshold of 2000ms — slow bundle serving causes perceptible load delays.
Note: The bundle filename changes on each Schildichat upgrade. Update this monitor's URL after each upgrade.
Step 3: Monitor Matrix Homeserver API Connectivity
Schildichat connects to your Matrix homeserver at runtime. If the homeserver is unreachable, users can open the client but cannot log in, send messages, or receive updates. Monitor the Matrix client-server API health endpoint:
- Click Add Monitor → HTTP / HTTPS.
- URL:
https://matrix.yourdomain.com/_matrix/client/versions - Expected HTTP status:
200. - Check interval:
1 minute. - Click Save.
The /_matrix/client/versions endpoint returns the list of Matrix spec versions supported by the homeserver — a 200 response confirms the homeserver is alive and serving the Matrix API.
For Synapse specifically, also monitor the federation API health:
https://matrix.yourdomain.com/_matrix/federation/v1/version
Step 4: TLS Certificate Expiry for Both Domains
Schildichat users depend on two TLS certificates: one for the Schildichat web domain and one for the Matrix homeserver domain. Either expiring will break chat.
For the Schildichat domain — already covered in Step 1 by enabling SSL monitoring on the main HTTP monitor.
For the Matrix homeserver domain — add a dedicated SSL monitor:
- Click Add Monitor → HTTP / HTTPS.
- URL:
https://matrix.yourdomain.com/_matrix/client/versions. - Enable Monitor SSL certificate.
- Alert when certificate expires in less than:
21 days. - Click Save.
Set a 21-day alert window. Matrix clients (and server-to-server federation) fail immediately when a certificate expires — renewal failures here affect all connected users.
Step 5: Monitor config.json Accessibility
Schildichat reads config.json on every page load to determine which Matrix homeserver to connect to, the default theme, and feature flags. If this file is missing or returns an error, Schildichat cannot initialize.
- Click Add Monitor → HTTP / HTTPS.
- URL:
https://chat.yourdomain.com/config.json. - Expected HTTP status:
200. - Check interval:
5 minutes. - Click Save.
A misconfigured nginx location block or a failed deployment that removes config.json will trigger this alert immediately.
Step 6: Monitor WebSocket Connectivity via TCP
Matrix uses persistent WebSocket connections for real-time event streaming. If the WebSocket port is blocked by a firewall rule or the reverse proxy stops upgrading connections, clients appear "connected" but receive no new messages.
Monitor the underlying TCP port to confirm WebSocket connections can be established:
- Click Add Monitor → TCP Port.
- Hostname:
matrix.yourdomain.com. - Port:
443. - Check interval:
1 minute. - Click Save.
For Synapse with a separate port (e.g. 8448 for federation), add a second TCP monitor:
- Click Add Monitor → TCP Port.
- Hostname:
matrix.yourdomain.com. - Port:
8448. - Check interval:
5 minutes. - Click Save.
Step 7: Monitor Push Notification Relay Health
If you've configured push notifications for Schildichat (via a Sygnal push gateway), add a health check for the Sygnal HTTP interface:
- Click Add Monitor → HTTP / HTTPS.
- URL:
https://sygnal.yourdomain.com/_matrix/push/v1/notify(adjust to your Sygnal URL). - Expected HTTP status:
405(Method Not Allowed — Sygnal only accepts POST; a GET returns 405, confirming the service is running). - Check interval:
5 minutes. - Click Save.
If Sygnal is down, mobile push notifications stop silently — users don't notice until they miss an important message.
Step 8: Configure Alert Channels
- Go to Alert Channels in Vigilmon and add Slack, email, or a webhook.
- Set Consecutive failures before alert to
2for the web server monitor to absorb transient nginx restarts. - Set it to
1for the Matrix homeserver API monitor — a single failure means your entire userbase is offline. - Use Maintenance windows during Schildichat upgrades (static file deployments take only seconds, but brief gaps can occur):
curl -X POST https://vigilmon.online/api/maintenance \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{"monitor_id": "MONITOR_ID", "duration_minutes": 5}'
Summary
| Monitor | Target | What It Catches |
|---|---|---|
| Web server uptime | https://chat.yourdomain.com | nginx/Caddy crash, network outage |
| JS bundle serving | /bundles/schildichat-app.*.js | Missing bundle, broken nginx config |
| Matrix API health | /_matrix/client/versions | Homeserver crash, API failure |
| Matrix domain SSL | Homeserver domain | Matrix TLS certificate expiry |
| config.json | /config.json | Deployment failure, misconfiguration |
| WebSocket TCP | matrix.yourdomain.com:443 | WebSocket blocked, port closed |
| Push relay | Sygnal health endpoint | Push notifications stopped |
| SSL certificate | Schildichat domain | Let's Encrypt renewal failure |
Schildichat's two-tier architecture — static web server plus Matrix homeserver — means failures in either layer silently break chat for your users. With Vigilmon watching the nginx server, Matrix API, both TLS certificates, config file, and WebSocket port, you'll know which layer failed and can restore service before your team loses its communication channel.