tutorial

Monitoring Revolt.chat with Vigilmon

Revolt.chat is a self-hosted, open-source Discord alternative. Learn how to monitor its API server, WebSocket gateway, Voso voice server, MongoDB, Redis, MinIO, and microservices with Vigilmon.

Revolt.chat is a fully open-source, self-hosted messaging platform with text, voice, and video channels — a genuine Discord alternative you own entirely. Running it yourself means you're responsible for keeping every layer healthy: the Rust API backend, the React web app, the real-time WebSocket gateway, the Voso voice/video server, and the supporting microservices for file storage and link previews. Vigilmon gives you a single pane of glass across all of it, alerting you before your users notice an outage.

What You'll Set Up

  • HTTP uptime monitor for the Revolt API server (port 8000)
  • Web app availability check (port 5000)
  • WebSocket gateway health probe (port 4000)
  • Voso voice/video server availability monitor (port 3000)
  • TCP connectivity checks for MongoDB and Redis
  • MinIO / S3 file storage service health endpoint monitor
  • Autumn file storage microservice availability check
  • January link preview microservice availability check
  • SSL certificate expiry alerts for your Revolt domain

Prerequisites

  • A running Revolt.chat self-hosted instance
  • Reverse proxy (nginx or Caddy) exposing the services over HTTPS
  • A free Vigilmon account

Step 1: Monitor the Revolt API Server

The Revolt backend (revolt-backend) exposes a REST API on port 8000. This is the backbone of your instance — if it goes down, no client can authenticate, send messages, or load channel history.

  1. Log in to vigilmon.online and click Add Monitor.
  2. Set Type to HTTP / HTTPS.
  3. Enter the API root URL: https://api.yourdomain.com/ (or http://your-host:8000/).
  4. Set Check interval to 1 minute.
  5. Set Expected HTTP status to 200.
  6. Click Save.

The Revolt API returns a JSON object at the root with instance metadata. A 200 response confirms the Rust process is up and serving requests.


Step 2: Monitor the Web App Frontend

The React web app (typically served on port 5000 or via your reverse proxy) is what your users navigate to. A crash here is invisible to backend monitors.

  1. Click Add MonitorHTTP / HTTPS.
  2. URL: https://app.yourdomain.com/ (or http://your-host:5000/).
  3. Check interval: 1 minute.
  4. Expected status: 200.
  5. Click Save.

If you serve the web app as static files from nginx rather than a Node.js process, the nginx host-level check (Step 8) covers this automatically.


Step 3: Monitor the WebSocket Gateway

Revolt's real-time event gateway runs on port 4000. Clients maintain a persistent WebSocket connection to receive message events, presence updates, and typing indicators. A dead gateway means a silent outage — users can log in but messages stop appearing.

Add a TCP port monitor to confirm the gateway is accepting connections:

  1. Click Add MonitorTCP Port.
  2. Host: your-host (or api.yourdomain.com).
  3. Port: 4000.
  4. Check interval: 1 minute.
  5. Click Save.

For deeper health validation, add an HTTP monitor to the gateway's HTTP upgrade endpoint if your reverse proxy exposes it:

https://ws.yourdomain.com/

A 101 Switching Protocols or 200 response confirms the gateway process is alive.


Step 4: Monitor the Voso Voice/Video Server

Voso is Revolt's self-hosted voice and video server, running on port 3000. It handles WebRTC signaling and media routing. Monitor its HTTP health endpoint:

  1. Click Add MonitorHTTP / HTTPS.
  2. URL: http://your-host:3000/ (or https://voso.yourdomain.com/).
  3. Check interval: 2 minutes.
  4. Expected status: 200.
  5. Click Save.

Voice calls fail silently if Voso is down — users see "connecting…" indefinitely. A 2-minute check interval keeps alert lag short while reducing noise from transient WebRTC negotiation spikes.


Step 5: Monitor MongoDB Connectivity

Revolt stores all messages, channels, users, and server metadata in MongoDB. A MongoDB outage cascades immediately into API errors across every client action.

Add a TCP check for MongoDB's default port:

  1. Click Add MonitorTCP Port.
  2. Host: your-mongo-host (or localhost if running locally).
  3. Port: 27017.
  4. Check interval: 1 minute.
  5. Click Save.

If you run MongoDB in Docker, ensure the port is bound to the host interface that Vigilmon's probe can reach — or use an SSH tunnel and a local probe script that pings the Vigilmon heartbeat API.


Step 6: Monitor Redis

Revolt uses Redis for session management, rate limiting, and pub/sub message passing between microservices. Redis downtime causes authentication failures and message delivery gaps.

  1. Click Add MonitorTCP Port.
  2. Host: your-redis-host.
  3. Port: 6379.
  4. Check interval: 1 minute.
  5. Click Save.

For a richer check, use a Vigilmon cron heartbeat pinged by a Redis health script:

#!/bin/bash
# /opt/revolt/redis-health.sh
redis-cli -h localhost ping | grep -q PONG && \
  curl -s https://vigilmon.online/heartbeat/YOUR_HEARTBEAT_ID

Schedule via cron:

* * * * * /opt/revolt/redis-health.sh

Step 7: Monitor MinIO / S3 File Storage

Revolt uses MinIO (or compatible S3 storage) for user-uploaded files, avatars, and attachments. MinIO exposes a health endpoint at /minio/health/live:

  1. Click Add MonitorHTTP / HTTPS.
  2. URL: http://your-minio-host:9000/minio/health/live.
  3. Check interval: 2 minutes.
  4. Expected status: 200.
  5. Click Save.

A 200 response means MinIO is healthy and accepting uploads. Add a second monitor for the readiness probe at /minio/health/ready to confirm it can serve reads as well.


Step 8: Monitor Autumn (File Storage Microservice)

Autumn is Revolt's file storage microservice that fronts MinIO — it handles file uploads, download proxying, and virus scanning integration. It runs alongside the main backend.

  1. Click Add MonitorHTTP / HTTPS.
  2. URL: http://your-host:3003/ (default Autumn port — verify in your Revolt.toml).
  3. Check interval: 2 minutes.
  4. Expected status: 200.
  5. Click Save.

If Autumn is unreachable, file uploads in Revolt return errors and existing attachments fail to load.


Step 9: Monitor January (Link Preview Microservice)

January fetches and caches Open Graph metadata for URLs shared in messages. It's non-critical for core messaging but degrades the user experience noticeably when down — link embeds stop appearing.

  1. Click Add MonitorHTTP / HTTPS.
  2. URL: http://your-host:7000/ (default January port — verify in your config).
  3. Check interval: 5 minutes.
  4. Expected status: 200.
  5. Click Save.

A 5-minute check interval is appropriate here: January failures are user-facing annoyances, not outages, so a slightly longer detection window reduces noise.


Step 10: SSL Certificate Alerts

Your Revolt instance likely uses Let's Encrypt certificates via your reverse proxy. Certificate expiry brings down all HTTPS services simultaneously.

Enable SSL monitoring on each HTTPS monitor you created:

  1. Open each HTTP / HTTPS monitor.
  2. Enable Monitor SSL certificate.
  3. Set Alert when certificate expires in less than 21 days.
  4. Click Save.

With Caddy, auto-renewal is generally reliable. With nginx + Certbot, renewal can fail silently if port 80 is blocked. A 21-day alert window gives you enough time to investigate and renew manually:

certbot renew --dry-run

Step 11: Configure Alert Channels

  1. Go to Alert Channels in Vigilmon.
  2. Add email, Slack, or a webhook to your own Revolt instance (meta-alert!).
  3. Set Consecutive failures before alert to 2 on all monitors — container restarts and proxy reloads cause transient single-probe failures.

To alert into a Revolt channel itself, use the Vigilmon webhook channel with Revolt's incoming webhook URL:

POST https://api.yourdomain.com/webhooks/YOUR_WEBHOOK_ID/YOUR_WEBHOOK_TOKEN
Content-Type: application/json
{"content": "🚨 Revolt monitor alert: {{monitor_name}} is DOWN"}

Summary

| Monitor | Target | What It Catches | |---|---|---| | API server (HTTP) | https://api.yourdomain.com/ | Rust backend crash | | Web app (HTTP) | https://app.yourdomain.com/ | Frontend unavailability | | WebSocket gateway (TCP) | Port 4000 | Real-time event delivery failure | | Voso voice server (HTTP) | Port 3000 | Voice/video call failures | | MongoDB (TCP) | Port 27017 | Database connectivity loss | | Redis (TCP) | Port 6379 | Session/auth failures | | MinIO (HTTP) | /minio/health/live | File upload/download failure | | Autumn (HTTP) | Port 3003 | Attachment proxy failure | | January (HTTP) | Port 7000 | Link preview failure | | SSL certificate | All domains | Certificate expiry |

Revolt gives you a self-hosted messaging platform with the feature set of a commercial chat tool — but self-hosting means you own the uptime. With Vigilmon watching each layer of the stack, you'll catch Redis disconnects, MongoDB outages, and microservice crashes before your users file bug reports.

Monitor your app with Vigilmon

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

Start free →