- 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>
5.6 KiB
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:
# 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)
# 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
# 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)
# 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:
# 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
# Specify custom database location
skyview-data -db /custom/path/skyview.db update
Logging
For cron jobs, redirect output to log files:
# 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:
# Interactive acceptance
skyview-data import openflights
# Force acceptance (for automation)
skyview-data update openflights --force
Monitoring
Check Update Status
# 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
# 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
# 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:
#!/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
# Reload SkyView after database updates
skyview-data update && systemctl reload skyview
Backup Before Updates
#!/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
# 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
# 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.