tutorial

Filestash Monitoring with Vigilmon: Uptime, Health API & Backend Storage Checks

Monitor your self-hosted Filestash instance with Vigilmon — track the Go binary health endpoint, detect backend storage outages, and get alerted before your users lose file access.

Your Filestash instance went down at 11 PM. Your non-technical team members who use it to access the company's S3 bucket woke up to a broken web interface. The SFTP backend was unreachable, the Go process had silently crashed, and nobody knew until they tried to retrieve a file for a morning meeting and found a blank screen.

Filestash is a self-hosted web-based file manager that gives your team a Dropbox-like interface for SFTP, FTP, S3-compatible storage, WebDAV, Git, and more — all in a single Go binary with no database dependency. It's the tool that replaces the demand for Dropbox access when you already have an SFTP server or MinIO instance. But when it goes down, every user loses access to every storage backend simultaneously. Vigilmon gives you the external uptime monitor that catches Go process crashes, backend storage outages, and SSL expiry before your users encounter them.

This tutorial covers monitoring Filestash end-to-end with Vigilmon.

What You'll Build

  • A Vigilmon HTTP monitor on Filestash's health endpoint
  • A web application availability monitor for the login page
  • Separate monitors for critical backend storage (S3/SFTP)
  • A heartbeat monitor for session and backend connectivity
  • SSL certificate expiry alerts

Prerequisites

  • A self-hosted Filestash instance (Docker or native Go binary)
  • Filestash serving on port 8334 (HTTP) or behind a reverse proxy on 80/443
  • A free account at vigilmon.online

Step 1: Monitor the Filestash Health Endpoint

Filestash exposes a health check endpoint at /healthz that returns HTTP 200 when the Go binary is running and the application is healthy. This endpoint is used by Docker Swarm and Kubernetes readiness probes — and it's the fastest way to confirm the Filestash process is alive.

Test it:

curl https://files.yourdomain.com/healthz

Expected response: HTTP/2 200 with a body of OK.

Set up the Vigilmon monitor:

  1. Log in to Vigilmon and click New Monitor → HTTP.
  2. Set URL to https://files.yourdomain.com/healthz.
  3. Set Check interval to 60 seconds.
  4. Set Expected status code to 200.
  5. Under Advanced → Keyword check, add:
    • Keyword present: OK
  6. Save the monitor.

Vigilmon now polls the health endpoint every minute from multiple regions. A crashed Go binary, an OOM kill, or a Docker container restart will immediately surface as a failed health check.


Step 2: Monitor the Filestash Login Page

The health endpoint confirms the binary is alive, but the login page confirms that the full application stack is serving traffic — including your reverse proxy (nginx/Caddy/Traefik) and the Filestash frontend asset server.

Test it:

curl -I https://files.yourdomain.com/

Expected: HTTP/2 200 with the Filestash login interface in the body.

Set up the monitor:

  1. Click New Monitor → HTTP in Vigilmon.
  2. Set URL to https://files.yourdomain.com/.
  3. Set Expected status code to 200.
  4. Under Advanced → Keyword check, configure:
    • Keyword present: Filestash
  5. Save.

If nginx is misconfigured or the Filestash container is restarting, the health endpoint at /healthz may be unreachable while nginx serves a 502 at the root URL — or vice versa. Running both monitors covers both failure surfaces.


Step 3: Monitor the Filestash Admin Endpoint

The Filestash admin interface at /admin is available to administrators and requires the admin password. But the endpoint itself returns 200 or 302 even without authentication — it confirms that the configuration layer is loaded and the admin subsystem is functioning.

  1. Click New Monitor → HTTP in Vigilmon.
  2. Set URL to https://files.yourdomain.com/admin.
  3. Set Expected status code to 200 (or 302 if your setup redirects to /admin/setup).
  4. Save.

A non-200/302 response from /admin typically indicates a misconfigured Filestash installation or a corrupted JSON configuration file — the application may appear to serve the login page while the admin and plugin subsystems have failed to initialize.


Step 4: Monitor Critical Backend Storage Services

Filestash itself can be healthy while a backend storage service (S3 bucket, SFTP server, FTP server) is unreachable. When users log in and try to browse their files, they see a connection error — but your Filestash health monitor shows green. Add independent monitors for each critical backend.

S3-Compatible Storage (MinIO, AWS S3, Backblaze B2)

For a MinIO instance on your LAN:

  1. Click New Monitor → HTTP in Vigilmon.
  2. Set URL to https://minio.yourdomain.com/minio/health/live (MinIO's built-in health endpoint).
  3. Set Expected status code to 200.
  4. Save.

For AWS S3 or Backblaze B2, monitor the S3 API endpoint using an HTTP monitor on a public bucket URL or a lightweight / endpoint that returns a valid XML response:

curl -I https://s3.amazonaws.com

SFTP Server

For an SFTP server that Filestash backends connect to, use a TCP port monitor:

  1. Click New Monitor → TCP in Vigilmon.
  2. Set Host to sftp.yourdomain.com.
  3. Set Port to 22.
  4. Set Check interval to 60 seconds.
  5. Save.

A TCP monitor on port 22 confirms the SSH/SFTP daemon is accepting connections — if it's down, Filestash users will see connection errors when trying to browse their SFTP storage.


Step 5: Heartbeat Monitor for Session and Backend Connectivity

For comprehensive end-to-end validation, schedule a periodic authenticated check that confirms Filestash can successfully list files from a configured backend. This validates the full stack: Filestash application → backend authentication → storage connectivity.

Configure a Vigilmon heartbeat:

  1. In Vigilmon, click New Monitor → Heartbeat.
  2. Name it Filestash Backend Connectivity.
  3. Set Expected interval to 3600 seconds (1 hour — adjust based on how critical file access is for your team).
  4. Set Grace period to 600 seconds.
  5. Copy the generated heartbeat URL.
  6. Save the monitor.

Wire it to a scheduled script:

Create a script that authenticates with Filestash and performs a file listing, then pings Vigilmon on success:

#!/bin/bash
# filestash-healthcheck.sh
SESSION=$(curl -s -c /tmp/filestash-session.txt \
  -X POST https://files.yourdomain.com/api/session \
  -H "Content-Type: application/json" \
  -d '{"type":"sftp","hostname":"sftp.yourdomain.com","username":"monitor","password":"<monitor-password>","port":22}' \
  | grep -c '"ok"')

if [ "$SESSION" -gt 0 ]; then
  LISTING=$(curl -s -b /tmp/filestash-session.txt \
    "https://files.yourdomain.com/api/files?path=/" | grep -c '"type"')
  if [ "$LISTING" -gt 0 ]; then
    curl -s "https://vigilmon.online/api/heartbeat/<your-token>" > /dev/null
  fi
fi

Add to crontab:

0 * * * * /usr/local/bin/filestash-healthcheck.sh >> /var/log/filestash-check.log 2>&1

This script authenticates via the Filestash API, requests a directory listing from the SFTP backend, and only pings Vigilmon when both the authentication and the listing succeed. A missed heartbeat means either Filestash or the backend storage is broken.


Step 6: SSL Certificate Monitoring

Filestash exposes potentially sensitive files — company documents, customer data, internal assets — via the web interface. HTTPS is mandatory in production. A certificate expiry locks out every user who accesses files via the browser, and unlike a server crash, an SSL expiry often goes unnoticed until someone gets a browser security warning.

  1. Click New Monitor → HTTP in Vigilmon.
  2. Set URL to https://files.yourdomain.com/healthz.
  3. Under Advanced → SSL certificate, enable:
    • Alert when certificate expires in fewer than 30 days
    • Alert when certificate expires in fewer than 7 days
  4. Save.

For wildcard certificates that cover multiple subdomains: Vigilmon checks the certificate on each monitored domain independently — a wildcard cert renewal that fails for one SAN (Subject Alternative Name) will surface on that domain's monitor even if other domains on the same cert are unaffected.


Step 7: Alert Channels

Go to Notifications → New Channel in Vigilmon and configure:

  • Email — immediate alerts to your infrastructure team
  • Webhook — post to Slack, Discord, or a PagerDuty integration

A Filestash process crash alert looks like:

🔴 DOWN: Filestash Health Endpoint
HTTP 200 expected, got connection refused (port 8334)
Region: EU-West | Triggered: 2026-01-15 23:02 UTC
Action required: check Filestash Docker container status

A missed backend connectivity heartbeat:

🔴 MISSED: Filestash Backend Connectivity
Last ping: 2026-01-15 22:00 UTC (2h+ ago)
Expected interval: 1h | Grace: 10m
Action required: verify SFTP server and Filestash session API

Step 8: Status Page

Go to Status Pages → New Status Page in Vigilmon. Add all monitors:

  • Filestash Health API
  • Filestash Login Page
  • Filestash Admin Endpoint
  • MinIO / S3 Health (if applicable)
  • SFTP Server TCP
  • Filestash Backend Connectivity (heartbeat)
  • SSL Certificate

Publish the page and share it with your team. Users who can't access files can check the status page before filing a support request.


What You've Built

| Scenario | How Vigilmon catches it | |---|---| | Filestash Go process crash / OOM kill | Health endpoint /healthz returns non-200 | | nginx/Caddy reverse proxy down | Login page monitor detects 502 | | Filestash configuration corrupted | Admin endpoint monitor detects non-200/302 | | MinIO / S3 bucket unreachable | Dedicated MinIO health or S3 endpoint monitor | | SFTP server down | TCP monitor on port 22 detects connection failure | | Backend auth failing (wrong credentials) | Heartbeat monitor fires missed-beat alert | | Full stack connectivity broken | Backend connectivity heartbeat surfaces combined failure | | SSL certificate expiry | Certificate monitor fires 30-day and 7-day warnings | | HTTPS broken → users locked out of files | SSL monitor catches expiry before the browser warning |


Filestash's single-binary simplicity is its greatest strength — and its monitoring blind spot. When the process dies, every storage backend becomes inaccessible simultaneously and there's no built-in alerting. Vigilmon closes that gap: an external health check layer that confirms the Go binary is running, the reverse proxy is routing, the storage backends are reachable, and your TLS certificate is valid — all from outside your network.

Start monitoring your Filestash instance today — 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 →