6.1 KiB
IsMySiteUp.Online
Privacy-first website monitoring application built with Laravel. Monitor your websites' uptime, SSL certificates, broken links, DNS records, and more - all while respecting user privacy with GDPR compliance.
Features
- Uptime Monitoring - Real-time HTTP/HTTPS monitoring with response time tracking
- SSL Certificate Monitoring - Automatic expiration alerts 30 days in advance
- Broken Link Detection - Crawl and identify broken links on your websites
- DNS Monitoring - Track DNS record changes and modifications
- Domain Expiry Tracking - Get notified before your domains expire
- Sitemap Validation - Validate XML sitemaps for proper indexing
- Health Checks - Monitor custom health endpoints and APIs
- TCP Port Monitoring - Check TCP port availability and connectivity
Requirements
- Docker & Docker Compose
- Laravel Sail (included)
- PHP 8.2+
- MySQL 8.0+
Installation
- Clone the repository
git clone <repository-url>
cd ismysiteup.online
- Copy environment file
cp .env.example .env
- Start Docker containers with Sail
./vendor/bin/sail up -d
- Install dependencies
./vendor/bin/sail composer install
./vendor/bin/sail npm install
- Generate application key
./vendor/bin/sail artisan key:generate
- Run migrations
./vendor/bin/sail artisan migrate
- Build frontend assets
./vendor/bin/sail npm run build
Running the Application
Start the application
./vendor/bin/sail up -d
Access the application
- Web: http://localhost
- phpMyAdmin: http://localhost:8080 (if configured)
Queue Workers
IMPORTANT: The application uses queues for background monitoring tasks. You MUST run the queue workers for monitoring to work properly.
Required Queue Workers
The monitoring jobs are dispatched to the monitoring queue. Run the queue worker with:
./vendor/bin/sail artisan queue:work --queue=monitoring,default
Or run both queues separately in different terminals:
# Terminal 1 - Monitoring queue (highest priority)
./vendor/bin/sail artisan queue:work --queue=monitoring
# Terminal 2 - Default queue
./vendor/bin/sail artisan queue:work --queue=default
For production, use Supervisor or systemd to keep workers running:
[program:ismysiteup-worker-monitoring]
command=php /path/to/artisan queue:work --queue=monitoring --sleep=3 --tries=3 --max-time=3600
autostart=true
autorestart=true
user=www-data
[program:ismysiteup-worker-default]
command=php /path/to/artisan queue:work --queue=default --sleep=3 --tries=3 --max-time=3600
autostart=true
autorestart=true
user=www-data
Monitoring Commands
All monitoring tasks should be scheduled in your crontab or Laravel scheduler.
Available Commands
| Command | Description | Recommended Schedule |
|---|---|---|
monitor:uptime |
Check uptime for all enabled sites | Every 5 minutes |
monitor:ssl |
Check SSL certificates for all sites | Every 6 hours |
monitor:links |
Scan for broken links | Daily |
monitor:dns |
Monitor DNS record changes | Every hour |
monitor:domains |
Check domain expiry dates | Daily |
monitor:sitemaps |
Validate XML sitemaps | Daily |
monitor:health |
Monitor health endpoints | Every 5 minutes |
monitor:tcp-ports |
Monitor TCP port availability | Every 5 minutes |
monitor:ping |
Quick ping check for sites | Every minute |
Manual Command Execution
Run any monitoring command manually:
./vendor/bin/sail artisan monitor:uptime
./vendor/bin/sail artisan monitor:ssl
./vendor/bin/sail artisan monitor:links
# etc...
Schedule Configuration
Add to app/Console/Kernel.php:
protected function schedule(Schedule $schedule)
{
// High-frequency checks
$schedule->command('monitor:uptime')->everyFiveMinutes();
$schedule->command('monitor:ping')->everyMinute();
$schedule->command('monitor:health')->everyFiveMinutes();
$schedule->command('monitor:tcp-ports')->everyFiveMinutes();
// Medium-frequency checks
$schedule->command('monitor:dns')->hourly();
$schedule->command('monitor:ssl')->everySixHours();
// Daily checks
$schedule->command('monitor:links')->daily();
$schedule->command('monitor:domains')->daily();
$schedule->command('monitor:sitemaps')->daily();
}
Then run the scheduler:
./vendor/bin/sail artisan schedule:work
Or add to crontab:
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
Development
Run tests
./vendor/bin/sail artisan test
Watch frontend assets
./vendor/bin/sail npm run dev
Access container shell
./vendor/bin/sail shell
Access MySQL
./vendor/bin/sail mysql
Troubleshooting
Jobs not processing?
- Ensure queue workers are running with correct queue names
- Check
jobstable for pending jobs:SELECT * FROM jobs; - Check
failed_jobstable for errors:SELECT * FROM failed_jobs; - Verify queue connection in
.env:QUEUE_CONNECTION=database
No uptime checks appearing?
- Verify sites have
monitoring_enabled = 1 - Run command manually:
./vendor/bin/sail artisan monitor:uptime -v - Check queue worker is processing
monitoringqueue - Check logs:
./vendor/bin/sail artisan queue:work --queue=monitoring --once
Clear caches
./vendor/bin/sail artisan cache:clear
./vendor/bin/sail artisan config:clear
./vendor/bin/sail artisan route:clear
./vendor/bin/sail artisan view:clear
Database Structure
Key tables:
sites- Monitored websitesuptime_checks- Uptime monitoring resultsssl_certificates- SSL certificate databroken_links- Detected broken linksdns_records- DNS record snapshotsdomains- Domain expiry trackinghealth_checks- Health endpoint resultstcp_ports- TCP port monitoringjobs- Queued jobs (monitoring queue)job_batches- Batch job trackingfailed_jobs- Failed job logs
License
This project is proprietary software.
Support
For issues or questions, please contact the development team.