- Implement comprehensive database package with versioned migrations - Add skyview-data CLI tool for managing aviation reference data - Integrate database with merger for real-time aircraft history persistence - Support OurAirports and OpenFlights data sources (runtime loading) - Add systemd timer for automated database updates - Fix transaction-based bulk loading for 2400% performance improvement - Add callsign enhancement system with airline/airport lookups - Update Debian packaging with database directory and permissions Database features: - Aircraft position history with configurable retention - External aviation data loading (airlines, airports) - Callsign parsing and enhancement - API client for external lookups (OpenSky, etc.) - Privacy mode for complete offline operation CLI commands: - skyview-data status: Show database statistics - skyview-data update: Load aviation reference data - skyview-data list: Show available data sources - skyview-data clear: Remove specific data sources 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
259 lines
No EOL
5.6 KiB
Markdown
259 lines
No EOL
5.6 KiB
Markdown
# SkyView Database Auto-Update with Cron
|
|
|
|
This guide explains how to set up automatic database updates for SkyView using cron jobs.
|
|
|
|
## Overview
|
|
|
|
SkyView can automatically update its aviation database from public domain sources using cron jobs. This ensures your aircraft callsign data stays current without manual intervention.
|
|
|
|
## Features
|
|
|
|
- ✅ **Auto-initialization**: Creates empty database if it doesn't exist
|
|
- ✅ **Safe sources only**: Updates only public domain data (no license issues)
|
|
- ✅ **Cron-friendly**: Proper logging and exit codes for automated execution
|
|
- ✅ **Lock file protection**: Prevents concurrent updates
|
|
- ✅ **Error handling**: Graceful failure handling with logging
|
|
|
|
## Quick Setup
|
|
|
|
### 1. Command Line Tool
|
|
|
|
The `skyview-data` command is designed to work perfectly with cron:
|
|
|
|
```bash
|
|
# Auto-initialize database and update safe sources
|
|
skyview-data update
|
|
|
|
# Check what's loaded
|
|
skyview-data status
|
|
|
|
# List available sources
|
|
skyview-data list
|
|
```
|
|
|
|
### 2. Cron Job Examples
|
|
|
|
#### Daily Update (Recommended)
|
|
```bash
|
|
# Add to crontab: crontab -e
|
|
# Update database daily at 3 AM
|
|
0 3 * * * /usr/bin/skyview-data update >/var/log/skyview-update.log 2>&1
|
|
```
|
|
|
|
#### Weekly Update
|
|
```bash
|
|
# Update database weekly on Sunday at 2 AM
|
|
0 2 * * 0 /usr/bin/skyview-data update >/var/log/skyview-update.log 2>&1
|
|
```
|
|
|
|
#### With Helper Script (Debian Package)
|
|
```bash
|
|
# Use the provided update script
|
|
0 3 * * * /usr/share/skyview/scripts/update-database.sh
|
|
```
|
|
|
|
### 3. System Service User
|
|
|
|
For Debian package installations, use the skyview service user:
|
|
|
|
```bash
|
|
# Edit skyview user's crontab
|
|
sudo crontab -u skyview -e
|
|
|
|
# Add daily update
|
|
0 3 * * * /usr/bin/skyview-data update
|
|
```
|
|
|
|
## Configuration
|
|
|
|
### Database Location
|
|
|
|
The tool automatically detects the database location:
|
|
- **System service**: `/var/lib/skyview/skyview.db`
|
|
- **User install**: `~/.local/share/skyview/skyview.db`
|
|
- **Current directory**: `./skyview.db`
|
|
|
|
### Custom Database Path
|
|
|
|
```bash
|
|
# Specify custom database location
|
|
skyview-data -db /custom/path/skyview.db update
|
|
```
|
|
|
|
### Logging
|
|
|
|
For cron jobs, redirect output to log files:
|
|
|
|
```bash
|
|
# Basic logging
|
|
skyview-data update >> /var/log/skyview-update.log 2>&1
|
|
|
|
# With timestamps (using helper script)
|
|
/usr/share/skyview/scripts/update-database.sh
|
|
```
|
|
|
|
## Data Sources
|
|
|
|
### Safe Sources (Auto-Updated)
|
|
|
|
These sources are automatically included in `skyview-data update`:
|
|
|
|
- **OurAirports**: Public domain airport data
|
|
- **FAA Registry**: US aircraft registration (public domain)
|
|
- *(Additional safe sources as they become available)*
|
|
|
|
### License-Required Sources
|
|
|
|
These require explicit acceptance and are NOT included in automatic updates:
|
|
|
|
- **OpenFlights**: AGPL-3.0 licensed airline/airport data
|
|
|
|
To include license-required sources:
|
|
```bash
|
|
# Interactive acceptance
|
|
skyview-data import openflights
|
|
|
|
# Force acceptance (for automation)
|
|
skyview-data update openflights --force
|
|
```
|
|
|
|
## Monitoring
|
|
|
|
### Check Update Status
|
|
|
|
```bash
|
|
# View database status
|
|
skyview-data status
|
|
|
|
# Example output:
|
|
# SkyView Database Status
|
|
# ======================
|
|
# Database: /var/lib/skyview/skyview.db
|
|
# Size: 15.4 MB
|
|
# Modified: 2025-01-15T03:00:12Z
|
|
#
|
|
# 📦 Loaded Data Sources (2):
|
|
# • OurAirports (Public Domain)
|
|
# • FAA Registry (Public Domain)
|
|
#
|
|
# 📊 Statistics:
|
|
# Aircraft History: 1,234 records
|
|
# Unique Aircraft: 567
|
|
# Last 24h: 89 records
|
|
```
|
|
|
|
### Log Monitoring
|
|
|
|
```bash
|
|
# View recent updates
|
|
tail -f /var/log/skyview-update.log
|
|
|
|
# Check for errors
|
|
grep ERROR /var/log/skyview-update.log
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### Common Issues
|
|
|
|
#### Database Not Found
|
|
```
|
|
ERROR: failed to create database: no write permission
|
|
```
|
|
**Solution**: Ensure the skyview user has write access to `/var/lib/skyview/`
|
|
|
|
#### Network Errors
|
|
```
|
|
ERROR: failed to download data: connection timeout
|
|
```
|
|
**Solution**: Check internet connectivity and firewall settings
|
|
|
|
#### Lock File Issues
|
|
```
|
|
ERROR: Another instance is already running
|
|
```
|
|
**Solution**: Wait for current update to finish, or remove stale lock file
|
|
|
|
### Manual Debugging
|
|
|
|
```bash
|
|
# Verbose output
|
|
skyview-data -v update
|
|
|
|
# Force update (skips locks)
|
|
skyview-data update --force
|
|
|
|
# Reset database
|
|
skyview-data reset --force
|
|
```
|
|
|
|
## Advanced Configuration
|
|
|
|
### Custom Update Script
|
|
|
|
Create your own update script with custom logic:
|
|
|
|
```bash
|
|
#!/bin/bash
|
|
# custom-update.sh
|
|
|
|
# Only update if database is older than 7 days
|
|
if [ "$(find /var/lib/skyview/skyview.db -mtime +7)" ]; then
|
|
skyview-data update
|
|
systemctl reload skyview # Reload SkyView after update
|
|
fi
|
|
```
|
|
|
|
### Integration with SkyView Service
|
|
|
|
```bash
|
|
# Reload SkyView after database updates
|
|
skyview-data update && systemctl reload skyview
|
|
```
|
|
|
|
### Backup Before Updates
|
|
|
|
```bash
|
|
#!/bin/bash
|
|
# backup-and-update.sh
|
|
|
|
DB_PATH="/var/lib/skyview/skyview.db"
|
|
BACKUP_DIR="/var/backups/skyview"
|
|
|
|
# Create backup
|
|
mkdir -p "$BACKUP_DIR"
|
|
cp "$DB_PATH" "$BACKUP_DIR/skyview-$(date +%Y%m%d).db"
|
|
|
|
# Keep only last 7 backups
|
|
find "$BACKUP_DIR" -name "skyview-*.db" -type f -mtime +7 -delete
|
|
|
|
# Update database
|
|
skyview-data update
|
|
```
|
|
|
|
## Security Considerations
|
|
|
|
### File Permissions
|
|
|
|
```bash
|
|
# Secure database directory
|
|
sudo chown skyview:skyview /var/lib/skyview
|
|
sudo chmod 755 /var/lib/skyview
|
|
sudo chmod 644 /var/lib/skyview/skyview.db
|
|
```
|
|
|
|
### Network Security
|
|
|
|
- Updates only download from trusted sources (GitHub, government sites)
|
|
- All downloads use HTTPS
|
|
- No sensitive data is transmitted
|
|
- Local processing only
|
|
|
|
### Resource Limits
|
|
|
|
```bash
|
|
# Limit resources in cron (optional)
|
|
0 3 * * * timeout 30m nice -n 10 skyview-data update
|
|
```
|
|
|
|
This setup ensures your SkyView installation maintains up-to-date aviation data automatically while respecting all license requirements and security best practices. |