A comprehensive monitoring application for tracking website performance, network speed, and SSL certificate expiration. Built with ASP.NET Core for Windows IIS deployment.
- HTTP & Ping Checks: Monitor websites via HTTP/HTTPS or ICMP ping
- Automatic Monitoring: Background service checks URLs every 5 minutes
- Response Time Graphs: Interactive charts with multiple time ranges (1d, 3d, 5d, 14d, 30d)
- Smart Alerting: URLs responding slower than average are automatically highlighted
- Data Retention: 60-day historical data with automatic cleanup
- Ookla Integration: Powered by official Speedtest CLI
- Hourly Testing: Automatic speed tests every hour
- Manual Triggers: Run tests on-demand
- Comprehensive Metrics: Download, upload, ping, and jitter tracking
- Historical Charts: Visualize speed trends over time
- Certificate Tracking: Monitor SSL certificate expiration dates
- Daily Checks: Automatic certificate validation every 24 hours
- Expiration Alerts: Visual warnings for certificates expiring within 30 days
- Certificate Details: View issuer, validity dates, and subject information
- Manual Refresh: Check certificates on-demand
- Horizontal Layout: Clean, card-based display with at-a-glance status
- Dark Mode: Toggle between light and dark themes (persists in localStorage)
- Print-Friendly: Optimized layouts for printing reports across all tabs
- Graph Customization: Toggle data points on/off globally
- External Tools: 23+ diagnostic tools across 9 categories:
- Security & SSL (SSL Labs, Qualys, DNSSEC Debugger, Sucuri)
- DNS & Domain (DNSChecker, MXToolbox, WhatsMyDNS, WHOIS)
- HTTP & API Diagnostics (HTTPStatus.io, Hoppscotch, RequestBin)
- Network & Latency (Traceroute.org, Fast.com, Cloudflare Radar)
- Website Analytics & SEO (PageSpeed Insights, BuiltWith)
- Infrastructure Monitoring (UptimeRobot, HetrixTools, Better Stack)
- Developer Utilities (JSONLint, RegEx101, JWT.io, Crontab Guru)
- Responsive Design: Works on desktop, tablet, and mobile
-
Clone and restore:
git clone <repository-url> cd FeedHorn dotnet restore
-
Run the application:
dotnet run
-
Open your browser: Navigate to
http://localhost:5000orhttps://localhost:5001
For detailed deployment instructions, see docs/FRESH_INSTALL.md
Quick deploy using provided scripts:
# Fresh installation
.\scripts\install-new-server.ps1
# In-place update (preserves database)
.\scripts\deploy-inplace.ps1- .NET 8.0 SDK or Runtime
- Windows Server with IIS (for production)
- Ookla Speedtest CLI (optional, for speed test feature)
- SQLite3 (for database management)
FeedHorn/
├── Controllers/
│ ├── MonitoredUrlsController.cs # URL monitoring API
│ ├── SpeedTestController.cs # Speed test API
│ └── SslCertificateController.cs # SSL certificate API
├── Data/
│ └── FeedHornContext.cs # Entity Framework DbContext
├── Middleware/
│ └── FooterInjectionMiddleware.cs # Server-side footer injection
├── Models/
│ ├── MonitoredUrl.cs # URL entity
│ ├── UrlCheck.cs # Check result entity
│ ├── SpeedTest.cs # Speed test entity
│ └── SslCertificate.cs # SSL certificate entity
├── Services/
│ ├── UrlMonitoringService.cs # URL monitoring background service
│ ├── SpeedTestService.cs # Speed test background service
│ └── SslMonitoringService.cs # SSL monitoring background service
├── wwwroot/
│ ├── index.html # Main UI with 23+ external tool links
│ ├── styles.css # Styling (light/dark mode, print)
│ ├── app.js # Frontend logic
│ ├── logo.svg # FeedHorn logo
│ └── favicon.svg # Favicon
├── docs/
│ ├── FRESH_INSTALL.md # Fresh installation guide
│ ├── DEPLOYMENT.md # Deployment documentation
│ └── PING_UPDATE.md # Ping feature notes
├── scripts/
│ ├── install-new-server.ps1 # Fresh install script
│ ├── deploy-inplace.ps1 # Update script
│ ├── deploy.ps1 # Legacy deployment
│ └── fix-feedhorn.ps1 # Troubleshooting script
├── add-speedtest-table.sql # SQL migration for speed tests
├── add-sslcertificates-table.sql # SQL migration for SSL certs
├── Program.cs # Application entry point
├── web.config # IIS configuration
└── FeedHorn.csproj # Project file
FeedHorn uses SQLite with the following tables:
- MonitoredUrls: URLs being monitored
- UrlChecks: Historical check results
- SpeedTests: Internet speed test results
- SslCertificates: SSL certificate tracking
If you're upgrading from a previous version:
# Add Speed Test table
Get-Content add-speedtest-table.sql | sqlite3 feedhorn.db
# Add SSL Certificate table
Get-Content add-sslcertificates-table.sql | sqlite3 feedhorn.dbGET /api/monitoredurls- Get all monitored URLsGET /api/monitoredurls/{id}- Get specific URLPOST /api/monitoredurls- Add new URLPUT /api/monitoredurls/{id}- Update URLDELETE /api/monitoredurls/{id}- Delete URL
GET /api/speedtest- Get all speed test resultsGET /api/speedtest/{id}- Get specific testPOST /api/speedtest/run- Run test now
GET /api/sslcertificate- Get all certificatesGET /api/sslcertificate/{id}- Get specific certificatePOST /api/sslcertificate- Add new certificatePUT /api/sslcertificate/{id}- Update certificateDELETE /api/sslcertificate/{id}- Delete certificatePOST /api/sslcertificate/{id}/check- Check certificate now
FeedHorn runs three background services:
- UrlMonitoringService: Checks URLs every 5 minutes
- SpeedTestService: Runs speed tests every hour (at :00)
- SslMonitoringService: Validates SSL certificates daily
Services run continuously via IIS AlwaysRunning application pool mode.
Edit the respective service file:
// UrlMonitoringService.cs - Default: 5 minutes
await Task.Delay(TimeSpan.FromMinutes(5), stoppingToken);
// SpeedTestService.cs - Default: 1 hour (on the hour)
var delay = nextHour - now;
await Task.Delay(delay, stoppingToken);
// SslMonitoringService.cs - Default: 24 hours
await Task.Delay(TimeSpan.FromHours(24), stoppingToken);Default retention periods:
- URL checks: 60 days
- Speed tests: 60 days
- SSL certificates: Kept indefinitely (manual cleanup required)
Edit the cleanup logic in respective services to adjust retention.
The Tools tab provides quick access to 23+ popular diagnostic and monitoring tools across 9 categories:
- SSL Labs - Comprehensive SSL/TLS testing
- Qualys SSL Server Test - SSL configuration analysis
- DNSSEC Debugger - DNS security validation
- Sucuri SiteCheck - Website security scanner
- DNSChecker - Global DNS propagation checker
- MXToolbox - Email, DNS, and network diagnostics
- WhatsMyDNS - DNS propagation worldwide
- WHOIS Lookup - Domain registration information
- HTTPStatus.io - HTTP response testing
- Hoppscotch - API development platform
- RequestBin - Webhook and HTTP request inspection
- Traceroute.org - Network path analysis
- Fast.com - Netflix speed test
- Cloudflare Radar - Internet traffic insights
- PageSpeed Insights - Google performance analysis
- BuiltWith - Technology profiler
- UptimeRobot - Website uptime monitoring
- HetrixTools - Server monitoring
- Better Stack - Modern monitoring platform
- JSONLint - JSON validator
- RegEx101 - Regular expression tester
- JWT.io - JSON Web Token debugger
- Crontab Guru - Cron schedule expressions
All tools open in new tabs for convenient side-by-side comparison with FeedHorn monitoring data.
- Verify
speedtest.exeis intools/folder - Check IIS application pool has execute permissions
- Review logs in IIS or Windows Event Viewer
- Run manual test via API:
POST /api/speedtest/run
- Ensure URLs start with
https:// - Check server can reach destination (firewall rules)
- Verify .NET can validate SSL certificates (certificate store issues)
If database is corrupted:
# Backup existing
Move-Item feedhorn.db feedhorn.db.bak
# Restart application - new DB will be created
# Then run migration scripts- Verify IIS Application Pool settings:
- Start Mode: AlwaysRunning
- Idle Timeout: 0 (disabled)
- Check
web.confighashostingModel="inprocess" - Review Windows Event Viewer for errors
For more troubleshooting, see docs/DEPLOYMENT.md
MIT License - see LICENSE file for details
- Built with ASP.NET Core 8.0
- Charts powered by Chart.js
- Icons from Heroicons
- Speed tests via Ookla Speedtest CLI