tutorial

Monitoring SFTPGo with Vigilmon: SFTP, WebDAV, and Admin UI Uptime Alerts

How to monitor a self-hosted SFTPGo server with Vigilmon — health endpoint checks, TCP port monitoring for SFTP and FTP/S, WebDAV availability, and SSL certificate alerts for your admin UI.

SFTPGo is a full-featured, self-hosted file transfer server that supports SFTP, FTP/S, WebDAV, and HTTP/S file access — all from a single Go binary. It handles S3-compatible backends, Google Cloud Storage, Azure Blob, and local disk, making it a popular choice for teams that need a private, managed file transfer solution. But self-hosting means you own the reliability. If the SFTP daemon stops accepting connections, or the admin UI becomes unreachable, your users hit silent failures. Vigilmon gives you external monitoring that watches every service endpoint SFTPGo exposes and alerts you the moment something breaks.

What You'll Build

  • A Vigilmon HTTP monitor on SFTPGo's /healthz endpoint
  • A TCP monitor for the SFTP service on port 2022
  • A WebDAV availability check
  • SSL certificate expiry alerts for the admin UI and data endpoints

Prerequisites

  • A running SFTPGo instance accessible over HTTPS (recommended: reverse proxy with Caddy or Nginx for the admin UI and WebDAV)
  • A free account at vigilmon.online

Step 1: Verify the Health Endpoint

SFTPGo exposes a built-in health endpoint at /healthz on its HTTP/S listener (default port 8080). It returns 200 OK when the server is running and accepting connections.

curl https://your-sftpgo-domain.com/healthz

A healthy SFTPGo returns an empty 200 response. Any non-200 status indicates the web server layer is down. If SFTPGo has crashed entirely, the connection is refused.

Proxy setup: SFTPGo's admin UI runs on :8080 by default. Put Caddy or Nginx in front to terminate TLS before Vigilmon can monitor it over HTTPS:

sftpgo.yourdomain.com {
  reverse_proxy localhost:8080
}

Step 2: Create an HTTP Monitor for /healthz

  1. Log in to VigilmonAdd Monitor → HTTP.
  2. URL: https://your-sftpgo-domain.com/healthz.
  3. Check interval: 60 seconds.
  4. Response timeout: 10 seconds.
  5. Expected status: 200.
  6. Click Save.

This confirms SFTPGo's web layer is alive. Pair it with a keyword assertion on the admin UI login page (sftpgo in the title) to catch partial startup where /healthz passes but the UI is broken.


Step 3: Add a TCP Monitor for the SFTP Port

The SFTP service listens on TCP port 2022 by default (or 22 if you've reconfigured it). HTTP monitoring doesn't verify that the SFTP daemon is accepting connections — you need a separate TCP check.

  1. Add Monitor → Port (TCP).
  2. Host: your-sftpgo-domain.com.
  3. Port: 2022.
  4. Check interval: 60 seconds.
  5. Timeout: 10 seconds.
  6. Click Save.

Vigilmon attempts a TCP connection on each interval. If the SFTP service crashes independently of the web server (which happens — they're separate listeners in SFTPGo), this monitor catches it while the HTTP monitor stays green.


Step 4: Monitor WebDAV (If Enabled)

SFTPGo's WebDAV service runs on a separate port (default :10080 for plain HTTP, :10443 for HTTPS). If you've enabled WebDAV for users, add a dedicated check.

  1. Add Monitor → HTTP.
  2. URL: https://your-sftpgo-domain.com:10443 (or the proxied path if you've routed it through Nginx/Caddy).
  3. Expected status: 401 (WebDAV root requires authentication; a 401 means the service is up and responding correctly).
  4. Check interval: 60 seconds.
  5. Click Save.

A 401 is the correct healthy response for an unauthenticated WebDAV request — it means the service is running and enforcing auth. A 502 or timeout means the service is down.


Step 5: SSL Certificate Alerts

SFTPGo often serves both an admin UI domain and a data endpoint domain (for HTTPS file transfers). Both certificates need monitoring.

In Vigilmon, SSL certificate checks are built into every HTTPS monitor automatically. To configure alert thresholds:

  1. Open each HTTPS monitor → SSL Certificate.
  2. Set Alert when certificate expires in less than: 14 days.
  3. Set a second threshold at 30 days for advance warning.

Add separate monitors for each domain if you have distinct certificates for the admin UI and the WebDAV/data endpoint.


Step 6: Heartbeat for Scheduled Transfers

If SFTPGo handles automated file transfers (e.g., nightly backups, FTP polling jobs), add a Vigilmon Heartbeat monitor to confirm those jobs are running.

  1. Add Monitor → Heartbeat in Vigilmon.
  2. Copy the generated heartbeat URL.
  3. At the end of your transfer script or cron job, add:
curl -fsS -X POST https://vigilmon.online/api/heartbeat/YOUR-HEARTBEAT-ID
  1. Set the grace period to slightly longer than your expected job runtime.

If the script fails, hangs, or the server goes down before the job runs, Vigilmon alerts you before your next scheduled window.


Step 7: Configure Alerting

In Vigilmon under Settings → Notifications:

| Trigger | Recommended action | |---|---| | /healthz returns non-200 | Email + Slack; check journalctl -u sftpgo | | TCP port 2022 unreachable | Email; SFTP daemon may have crashed independently | | WebDAV returns non-401/200 | Email; check WebDAV listener config | | SSL certificate < 14 days | Email; run certbot renew or check Caddy auto-HTTPS | | Heartbeat missed | Email; check cron job logs on the source system |

Alert after: 1 consecutive failure. SFTPGo is a long-running daemon; it doesn't flap on its own.


What Vigilmon Catches That SFTPGo Logs Miss

| Scenario | SFTPGo logs | Vigilmon | |---|---|---| | SFTP daemon OOM-killed | Kernel log only | TCP monitor fires within 60–120 s | | WebDAV listener fails to bind | Startup error in log | HTTP monitor catches it immediately | | Expired TLS cert locks out users | Silent until user reports | SSL monitor alerts 14 days early | | VPS network partition | Inaccessible logs | External check still runs from Vigilmon infra | | Cron transfer job silently fails | Only in cron output | Heartbeat misses, Vigilmon alerts |


SFTPGo's multi-protocol design means multiple failure points. A single HTTP monitor isn't enough — you need per-protocol visibility. Vigilmon covers every layer: web admin, SFTP TCP, WebDAV, and SSL certificates, so your file transfer infrastructure stays observable even when you're not watching.

Start monitoring SFTPGo in under 5 minutes — register free at vigilmon.online.

Monitor your app with Vigilmon

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

Start free →