Snapdrop is a brilliant self-hosted alternative to Apple AirDrop — open a browser on any device on the same network and you can share files instantly without accounts or apps. But because it runs on your own server, there's no cloud team watching over it. If the web server crashes or the WebSocket drops, file transfers silently fail. Vigilmon gives you external uptime monitoring, WebSocket health checks, and SSL certificate alerts so you know before your users do.
What You'll Set Up
- HTTP uptime monitor for the Snapdrop web interface at port 80 (or your proxied HTTPS domain)
- WebSocket connectivity check to verify the real-time transfer layer is alive
- SSL certificate expiry alerts if you proxy Snapdrop through nginx or Caddy
- External Vigilmon uptime check to confirm the sharing service is reachable from outside your network or VPN
Prerequisites
- Snapdrop running via Docker or bare Node.js (default port:
80) - A domain or local IP your Vigilmon checks can reach (LAN, VPN, or public URL)
- A free Vigilmon account
Step 1: Monitor the Snapdrop Web Interface
The core check is a plain HTTP probe against the Snapdrop server root. This confirms the Node.js process is up and serving the web app.
- Log in to vigilmon.online and click Add Monitor.
- Set Type to
HTTP / HTTPS. - Enter your Snapdrop URL. If you're running it directly:
http://your-server-ip:80. If proxied with HTTPS:https://snapdrop.yourdomain.com. - Set Check interval to
1 minute. - Set Expected HTTP status to
200. - Click Save.
Snapdrop doesn't have a dedicated /health route — the root / returns the full web app, which is sufficient for availability checks. A 200 response means the server is running and serving the application.
Step 2: Verify WebSocket Connectivity
Snapdrop's file transfer magic runs over WebSockets (ws:// or wss://). The HTTP check in Step 1 confirms the web server is up, but the WebSocket server is a separate process that can fail independently. Test it directly from the Snapdrop host:
# Install wscat if not already present
npm install -g wscat
# Test WebSocket connectivity (adjust host/port to match your setup)
wscat -c ws://localhost:3000
# You should see: Connected (press CTRL+C to quit)
For automated monitoring, add a lightweight WebSocket probe script as a cron job that pings Vigilmon's heartbeat URL on success:
#!/bin/bash
# /usr/local/bin/check-snapdrop-ws.sh
if wscat -c ws://localhost:3000 --wait 5 --execute '' 2>/dev/null; then
curl -s https://vigilmon.online/heartbeat/YOUR_HEARTBEAT_ID
fi
Then in Vigilmon:
- Click Add Monitor → Cron Heartbeat.
- Set the expected ping interval to
5 minutes. - Copy the heartbeat URL and paste it into the script above.
- Schedule the script with cron:
*/5 * * * * /usr/local/bin/check-snapdrop-ws.sh
If the WebSocket server crashes and the heartbeat stops arriving, Vigilmon alerts after 5 minutes.
Step 3: Add a TCP Port Monitor
For a faster, low-overhead signal that the listening socket is open, add a TCP port check alongside the HTTP monitor:
- In Vigilmon, click Add Monitor.
- Set Type to
TCP Port. - Enter your server's hostname or IP and port
80(or3000for the raw Node.js WebSocket port). - Set Check interval to
1 minute. - Click Save.
The TCP check detects port-level failures — a dead process, a crashed container, or a firewall rule change — faster than a full HTTP round-trip.
Step 4: SSL Certificate Alerts for Proxied Deployments
If you're running Snapdrop behind nginx or Caddy with HTTPS, add a certificate expiry monitor:
- Open the HTTPS monitor created in Step 1.
- Enable Monitor SSL certificate under the SSL section.
- Set Alert when certificate expires in less than
21 days. - Click Save.
A sample nginx reverse proxy config that enables HTTPS for Snapdrop:
server {
listen 443 ssl;
server_name snapdrop.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/snapdrop.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/snapdrop.yourdomain.com/privkey.pem;
location / {
proxy_pass http://localhost:80;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
}
The Upgrade and Connection headers are required for WebSocket proxying — without them, file transfers fail even when the HTTP check passes.
Step 5: External Reachability Check
Snapdrop is typically used on a local network or over VPN. An external Vigilmon check from outside your network confirms:
- Your VPN gateway is up and routing correctly
- The Snapdrop container or process is running
- No firewall change has blocked inbound traffic
If you expose Snapdrop publicly (not recommended for production, but common for homelab use), the standard HTTP monitor in Step 1 already covers this. For LAN-only setups, run a Vigilmon agent on the same network segment or use a self-hosted Vigilmon probe.
Step 6: Alert Channel Configuration
- Go to Alert Channels in Vigilmon and add Slack, email, or a webhook.
- Set Consecutive failures before alert to
2— Snapdrop's Docker container restarts in a few seconds and may cause a single probe to fail. - On-call engineers should receive alerts immediately; for less critical setups a 5-minute delay avoids alert fatigue from transient network hiccups.
Summary
| Monitor | Target | What It Catches |
|---|---|---|
| HTTP uptime | http(s)://snapdrop.yourdomain.com | Web server crash, container down |
| TCP port | :80 or :3000 | Process exit, port blocked |
| Cron heartbeat | WebSocket probe script | WebSocket server failure |
| SSL certificate | Your proxied domain | Let's Encrypt renewal failure |
Snapdrop's zero-friction file sharing is only zero-friction when it's actually running. With Vigilmon watching the web interface, WebSocket layer, and SSL certificate, you'll know the moment anything breaks — before you get a Slack message asking why files aren't transferring.