Your Ergo IRC server is the communication backbone for your community. TLS renewal fails at 2 AM and nobody notices because clients with cached sessions keep chatting. New users can't connect. The WebSocket gateway for your web client stops accepting connections an hour later when the expired cert causes the gateway to refuse new TLS handshakes. Your community's front door is closed, and you're the last to know.
Ergo is a modern self-hosted IRC server written in Go. It supports IRC bouncer functionality, message history, account management via NickServ, and WebSocket connections for browser-based clients. Ergo listens on port 6667 (plaintext IRC), 6697 (TLS IRC), and 8067 (WebSocket) by default. It's fast, self-contained, and production-ready — but like all self-hosted infrastructure, it needs external monitoring.
Vigilmon watches Ergo from the outside — checking TLS certificates before they expire, confirming the WebSocket endpoint is accepting connections, and verifying that plaintext and encrypted IRC ports are responding.
What You'll Build
- An HTTP monitor on Ergo's WebSocket endpoint
- A TCP port availability check for IRC plaintext (6667) and TLS (6697)
- A TLS certificate validity monitor with expiry alerting
- A NickServ authentication service probe
- A channel persistence health check
- Alert channels for your IRC server administrators
Prerequisites
- A self-hosted Ergo server (v2.10+ recommended)
- Default ports: 6667 (plain IRC), 6697 (TLS IRC), 8067 (WebSocket)
- A free account at vigilmon.online
Step 1: Monitor the WebSocket Endpoint
Ergo's WebSocket gateway on port 8067 is the entry point for browser-based IRC clients. It's also the easiest to monitor via HTTP because you can probe it without implementing a full IRC handshake.
A bare HTTP GET to the WebSocket port returns a response indicating the endpoint is running and ready to upgrade connections:
curl -i http://your-ergo-host:8067/
Ergo will respond with a 400 Bad Request or similar — the key is that it responds at all. A connection refused or timeout means the WebSocket service is down.
If your Ergo instance serves the WebSocket endpoint over TLS (port 8097 or configured HTTPS):
curl -i https://your-ergo-host:8067/
Set up the Vigilmon monitor:
- Log in to Vigilmon and click New Monitor → HTTP.
- Set URL to
http://your-ergo-host:8067/(or the HTTPS variant if TLS is configured). - Set Check interval to 60 seconds.
- Set Expected status code to any non-timeout value —
400,426(Upgrade Required), or200depending on your Ergo version. - Save the monitor.
This is your fastest signal for WebSocket service availability. If this monitor fires, web-based IRC clients are immediately broken.
Step 2: Monitor TLS Certificate Validity on Port 6697
Ergo's TLS-encrypted IRC port on 6697 is where most modern IRC clients connect. TLS certificate expiry is the most common cause of sudden client disconnection storms — clients cached the session but new connections fail.
Vigilmon can check TLS certificate validity and warn you before expiry:
-
Click New Monitor → HTTP in Vigilmon.
-
Set URL to
https://your-ergo-host:6697/— even though this isn't HTTP, Vigilmon's TLS-aware checker will perform the TLS handshake and validate the certificate.Alternatively, if your Ergo TLS port doesn't serve HTTP, add an explicit TCP + TLS monitor:
- Click New Monitor → TCP.
- Set Host to
your-ergo-hostand Port to6697. - Enable Check TLS certificate.
-
Set TLS certificate expiry alert to 21 days — this gives you three weeks to renew before clients start failing.
-
Set Check interval to 3600 seconds (once per hour is sufficient for cert monitoring).
-
Save the monitor.
Vigilmon will alert you when the TLS certificate on port 6697 is within 21 days of expiry — and again at 7 days and 1 day as escalating warnings. You'll never be surprised by an expired IRC cert again.
Step 3: Monitor the Plaintext IRC Port (6667)
Some IRC clients, bouncers, or internal tooling connect via plaintext IRC on port 6667. Monitor TCP connectivity on this port to confirm the plain IRC listener is running:
# Test connectivity (expects an IRC server greeting)
nc -zv your-ergo-host 6667
A successful connection response (or even a RST after the TCP handshake) confirms the port is open and the listener is active.
Set up the Vigilmon monitor:
- Click New Monitor → TCP in Vigilmon.
- Set Host to
your-ergo-hostand Port to6667. - Set Check interval to 60 seconds.
- Save the monitor.
If Ergo crashes or the plaintext listener dies, this TCP monitor fires within one minute. Pair it with the TLS monitor for full IRC port coverage.
Step 4: Monitor NickServ Authentication Service
Ergo's built-in NickServ provides account management — registration, login, vhost assignment, and nickname enforcement. If NickServ's data layer becomes corrupted or the account database is inaccessible, users can't authenticate, lose their cloaks, and may be unable to join invite-only or registered-only channels.
Ergo exposes account and NickServ health indirectly through its API (when the management HTTP API is enabled in the config). If you have api.enabled: true in your Ergo config, you can probe the server management interface:
curl -u api-user:api-password http://your-ergo-host:8080/v1/server/info
This returns server metadata including uptime and version — if the API responds, the core Ergo process including NickServ is functional.
If the management API is not enabled, use the WebSocket monitor from Step 1 as a proxy for overall Ergo health, and watch for NickServ issues through log-based alerting or by testing authentication with a dedicated monitor account.
Set up the API monitor (if enabled):
- Click New Monitor → HTTP in Vigilmon.
- Set URL to
http://your-ergo-host:8080/v1/server/info. - Set Expected status code to
200. - Set Auth to your Ergo API credentials.
- Under Advanced → Keyword check, add:
- Keyword present:
"version"
- Keyword present:
- Set Check interval to 120 seconds.
- Save the monitor.
Step 5: Monitor Channel Persistence
Ergo persists channel state (topic, modes, membership) across server restarts. If the channel persistence layer fails (usually a database write error or disk full condition), channels lose their state on the next restart — topics disappear, operators lose their status, and registered channels lose their settings.
Monitor disk usage on the Ergo data directory as a prerequisite for channel persistence health. Ergo uses a bbolt (BoltDB) file for its data store — if the disk fills up, writes fail silently.
For external monitoring, the most effective check is to verify Ergo's data file is being modified (written to) periodically. If you can expose a lightweight endpoint that reads from the Ergo data store, monitor it. Otherwise, use Ergo's management API:
curl -u api-user:api-password http://your-ergo-host:8080/v1/channels
A 200 response with channel data confirms the database is readable and channel state is accessible.
Set up the Vigilmon monitor:
- Click New Monitor → HTTP in Vigilmon.
- Set URL to
http://your-ergo-host:8080/v1/channels. - Set Expected status code to
200. - Set Auth to your Ergo API credentials.
- Set Check interval to 300 seconds.
- Save the monitor.
Step 6: Alert Channels
Go to Notifications → New Channel in Vigilmon and configure:
- Email — immediate alerts to your IRC server operator team
- Webhook — Slack, Discord, or your existing monitoring platform
A TLS certificate expiry warning in Slack looks like:
⚠️ WARNING: ergo-tls-cert
TLS certificate expires in 18 days (2026-08-01)
Host: your-ergo-host:6697
A down alert for the WebSocket service looks like:
🔴 DOWN: ergo-websocket (HTTP monitor)
Expected status 400, got connection refused
Region: EU-North
Triggered: 2026-07-18 02:07 UTC
When the service recovers:
✅ RECOVERED: ergo-websocket
Downtime: 3 minutes
Recommended severity mapping:
- Critical: WebSocket endpoint down, TLS port 6697 unreachable, plaintext port 6667 down
- Warning: TLS certificate expiry within 21 days
- Info: NickServ API or channel persistence endpoint alerts (often indicate database issues needing investigation)
Step 7: Status Page for Your Community
Go to Status Pages → New Status Page in Vigilmon. Add your WebSocket, TLS IRC, and plaintext IRC monitors. Publish the page and share the URL with your community — users can check it when they're having connection trouble rather than filing duplicate support requests.
What You've Built
| Scenario | How Vigilmon catches it |
|---|---|
| Ergo process crash | TCP monitor on 6667 and 6697 both fail; WebSocket monitor fails |
| TLS certificate expired | Vigilmon reports TLS cert expiry on port 6697 monitor |
| WebSocket gateway down | HTTP monitor on port 8067 returns connection refused |
| Plaintext IRC listener stopped | TCP monitor on port 6667 fails |
| NickServ database inaccessible | Management API /v1/server/info returns error |
| Channel persistence (disk full) | /v1/channels API returns write error |
| Server OOM killed | All port monitors fail simultaneously |
Ergo is a robust IRC server, but no self-hosted service is immune to certificate expiry, disk exhaustion, or process crashes. External monitoring with Vigilmon means your IRC community's connection issues get fixed in minutes — not discovered hours later by a frustrated operator who couldn't figure out why their client stopped connecting.
Start monitoring your Ergo IRC server today — register free at vigilmon.online.