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:
- Log in to Vigilmon and click New Monitor → HTTP.
- Set URL to
https://files.yourdomain.com/healthz. - Set Check interval to 60 seconds.
- Set Expected status code to
200. - Under Advanced → Keyword check, add:
- Keyword present:
OK
- Keyword present:
- 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:
- Click New Monitor → HTTP in Vigilmon.
- Set URL to
https://files.yourdomain.com/. - Set Expected status code to
200. - Under Advanced → Keyword check, configure:
- Keyword present:
Filestash
- Keyword present:
- 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.
- Click New Monitor → HTTP in Vigilmon.
- Set URL to
https://files.yourdomain.com/admin. - Set Expected status code to
200(or302if your setup redirects to/admin/setup). - 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:
- Click New Monitor → HTTP in Vigilmon.
- Set URL to
https://minio.yourdomain.com/minio/health/live(MinIO's built-in health endpoint). - Set Expected status code to
200. - 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:
- Click New Monitor → TCP in Vigilmon.
- Set Host to
sftp.yourdomain.com. - Set Port to
22. - Set Check interval to 60 seconds.
- 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:
- In Vigilmon, click New Monitor → Heartbeat.
- Name it
Filestash Backend Connectivity. - Set Expected interval to
3600seconds (1 hour — adjust based on how critical file access is for your team). - Set Grace period to
600seconds. - Copy the generated heartbeat URL.
- 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.
- Click New Monitor → HTTP in Vigilmon.
- Set URL to
https://files.yourdomain.com/healthz. - Under Advanced → SSL certificate, enable:
- Alert when certificate expires in fewer than 30 days
- Alert when certificate expires in fewer than 7 days
- 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.