Airgap Storage
Sync your LOX backups to customer-controlled storage devices for true airgap protection against ransomware.
Why Airgap Storage?
94% of ransomware attacks target backup systems. Traditional backups connected to your network can be encrypted or deleted by attackers. Airgap storage keeps your backups physically disconnected, making them impossible to compromise remotely.
Supported Devices
Synology NAS
DSM 7.0 or higher required
- Native SPK package
- Web UI integration
- Auto-start on boot
QNAP NAS
QTS 5.0 or higher required
- QPKG package
- App Center installation
- Background sync
Raspberry Pi
ARM binary with systemd service
- Pi 3/4/5 supported
- External USB storage
- Low power consumption
Linux Server
Any Linux distribution
- x86_64 and ARM64
- Docker available
- Systemd integration
1Register Your Device
First, register your airgap device in your LOX dashboard to get a device API key.
- 1Go to Dashboard → Settings → Airgap Devices
- 2Click Add Device and enter a name (e.g., "Office NAS")
- 3Select your device type (Synology, QNAP, Raspberry Pi, or Custom)
- 4Copy your Device API Key - you'll need this for configuration
Or use the CLI to register directly from your device:
# Register a new airgap device
lox-airgap register \
--name "My Synology NAS" \
--type synology_nas \
--tenant-key "lox_your_tenant_api_key"
# Output:
# Device registered successfully!
# Device ID: ag_xxxxxxxxxxxx
# API Key: lox_device_xxxxxxxxxxxxxxxxxx
#
# Save this API key in your config file.2Install on Synology NAS
Download the appropriate package for your NAS architecture:
Install via DSM Package Center:
- Open Package Center in DSM
- Click Manual Install (top right)
- Select the downloaded .spk file
- Follow the installation wizard
- Configure your device key in the package settings
3Install on Linux / Raspberry Pi
# Download the latest release
curl -LO https://github.com/lox-backup/lox-airgap/releases/latest/download/lox-airgap-linux-arm64.tar.gz
# Extract
tar -xzf lox-airgap-linux-arm64.tar.gz
# Install
sudo mv lox-airgap /usr/local/bin/
sudo chmod +x /usr/local/bin/lox-airgap
# Create config directory
sudo mkdir -p /etc/lox-airgap
# Create config file
sudo nano /etc/lox-airgap/config.yaml4Configure the Daemon
Create your configuration file at /etc/lox-airgap/config.yaml:
# LOX Airgap Daemon Configuration
# API Settings
api_url: "https://backlox.com/api"
device_key: "lox_device_xxxxxxxxxxxxxxxxxx" # Your device API key
# Storage Settings
storage_path: "/volume1/lox-backups" # Where to store backups
storage_quota_gb: 0 # 0 = unlimited
# Sync Settings
auto_sync: true
sync_interval_hours: 24 # How often to sync when connected
max_concurrent: 2 # Parallel downloads
retry_attempts: 3
# Security
verify_checksums: true # Always verify SHA-256 checksums
encrypt_local: false # Optional local encryption
# Retention
local_retention_days: 90 # How long to keep local copies
# Logging
log_level: "info"
log_file: "/var/log/lox-airgap/daemon.log"Configuration Reference
| Variable | Default | Description |
|---|---|---|
| api_url | https://backlox.com/api | LOX API base URL |
| device_key | - | Device API key (required) |
| storage_path | ./backups | Local backup storage directory |
| storage_quota_gb | 0 | Max storage in GB (0 = unlimited) |
| auto_sync | true | Automatic sync on schedule |
| sync_interval_hours | 24 | Hours between syncs |
| max_concurrent | 2 | Parallel download workers |
| retry_attempts | 3 | Download retry attempts |
| retry_delay_seconds | 30 | Delay between retries |
| verify_checksums | true | Verify SHA-256 checksums |
| encrypt_local | false | Encrypt local backups |
| local_retention_days | 90 | Days to keep local copies |
| log_level | info | Log level: debug, info, warn, error |
5Run the Daemon
# Run a one-time sync
lox-airgap sync
# Or run as a daemon (background mode)
lox-airgap daemon
# Check status
lox-airgap status
# List local backups
lox-airgap listSystemd Service (Linux)
Create /etc/systemd/system/lox-airgap.service:
[Unit]
Description=LOX Airgap Backup Daemon
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/usr/local/bin/lox-airgap daemon
Restart=always
RestartSec=30
[Install]
WantedBy=multi-user.target# Enable and start
sudo systemctl daemon-reload
sudo systemctl enable lox-airgap
sudo systemctl start lox-airgap
# Check logs
sudo journalctl -u lox-airgap -fHow Sync Works
1. Heartbeat
Device connects and sends heartbeat with storage status
2. Sync
Downloads pending backups with checksum verification
3. Confirm
Server records successful sync, device can go offline
Security Best Practices
- Store your airgap device in a secure, physically separate location
- Connect only periodically (weekly or monthly) to download new backups
- Keep the device powered off when not syncing to prevent remote access
- Enable local encryption if storing in an untrusted location
- Regularly test restoration from your airgap backups
CLI Reference
| Command | Description |
|---|---|
| lox-airgap register | Register device with LOX |
| lox-airgap sync | Run one-time sync |
| lox-airgap daemon | Run as background daemon |
| lox-airgap status | Show sync status |
| lox-airgap list | List local backups |