skyview/docs/CRON_SETUP.md
Ole-Morten Duesund 37c4fa2b57 feat: Add SQLite database integration for aircraft history and callsign enhancement
- 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>
2025-08-31 16:48:28 +02:00

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

# 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.