Real-time aircraft tracking system for Iranian FIR (Flight Information Region)
Live at: iranairspacemonitor.xyz
- 🌍 Real-time tracking of aircraft in Iran FIR zone
- 🔔 Push notifications for new aircraft entries
- 📱 Mobile responsive design
- 🗺️ Interactive map with live aircraft positions
- 📊 Aircraft details including ICAO, callsign, altitude
- 🔐 OAuth2 authentication with OpenSky Network
- Domain: Purchase
iranairspacemonitor.xyzfrom GoDaddy - Hosting: Get GoDaddy shared hosting with Python support
- SSL Certificate: Enable SSL/HTTPS (recommended)
- Go to cPanel → Settings → Server → SSH Access → Enable
- Wait 24-48 hours for activation
Upload all project files to your hosting directory:
/home/username/iranairspacemonitor/
├── app.py
├── passenger_wsgi.py
├── requirements.txt
├── .htaccess
├── sw.js
├── templates/
│ └── index.html
└── static/
├── style.css
└── main.js
- Go to cPanel → Software → Setup Python App
- Click "Create Application"
- Configure:
- Python Version: 3.8+ (latest available)
- Application Root:
/home/username/iranairspacemonitor - Application URL:
iranairspacemonitor.xyz - Application Startup File:
app.py - Application Entry Point:
app - Passenger Log File:
/home/username/logs/iranairspace.log
- Add
requirements.txtto Configuration Files - Click "Run Pip Install"
Activate your virtual environment:
source /home/username/virtualenv/iranairspacemonitor/3.8/bin/activate
cd /home/username/iranairspacemonitorpython -m pip install --upgrade pip
pip install -r requirements.txtTo restart without cPanel (preserves custom files):
touch tmp/restart.txtUpdate these in app.py for your setup:
CLIENT_ID: Your OpenSky Network client IDCLIENT_SECRET: Your OpenSky Network client secretVAPID_KEYS: Generate new VAPID keys for notifications
Update domain references in:
sw.js(line 71, 78)- Any absolute URLs in templates
The app uses Web Push API with VAPID authentication. Users can:
- Click "Enable Notifications" button
- Grant browser permission
- Receive real-time alerts for new aircraft
- Updates every 60 seconds
- Covers Iran FIR coordinates
- Filters airborne aircraft only
- Stores last seen aircraft to detect new entries
pip install -r requirements.txt
python app.pyVisit: http://localhost:5001
- SSL/HTTPS required for push notifications
- Background thread runs continuously
- Thread-safe data handling with locks
- Error handling for API failures
GET /- Main web interfaceGET /api/aircrafts- JSON list of current aircraftPOST /api/subscribe- Subscribe to push notificationsGET /sw.js- Service worker for notifications
- OpenSky Network OAuth2 authentication
- HTTPS enforcement via .htaccess
- Input validation and sanitization
- Rate limiting considerations
Check application logs:
tail -f /home/username/logs/iranairspace.log- SSH Access: Wait 24-48 hours after enabling
- Python Version: Ensure compatible version (3.8+)
- Dependencies: Check virtual environment activation
- Permissions: Verify file permissions (644 for files, 755 for directories)
- Restart: Use
touch tmp/restart.txtinstead of cPanel restart
- Application logs:
/home/username/logs/iranairspace.log - Error logs: Check cPanel error logs
- Access logs: Monitor via cPanel
This project is open source and available under the MIT License.
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
For issues related to:
- OpenSky API: Contact OpenSky Network support
- GoDaddy Hosting: Contact GoDaddy technical support
- Application Issues: Create an issue in this repository
Made with ❤️ for aviation enthusiasts worldwide