5.2 KiB
5.2 KiB
IGNY8 Application Packaging & Backup System
Overview
This system creates portable, clean packages of the IGNY8 application containing only source code (no dependencies or generated artifacts).
Components
1. Packaging Script
Location: /data/app/igny8/scripts/package_app.sh
What it does:
- Creates compressed archive of application source code
- Excludes:
node_modules/,.venv/,dist/,*.sql,*.log, build artifacts - Includes: Source code, Docker configs, documentation
- Generates SHA256 checksum for verification
- Auto-cleans packages older than 7 days
- Package size: ~44 MB (compressed)
Manual Usage:
/data/app/igny8/scripts/package_app.sh
2. Automated Backup Tasks
Location: /data/app/igny8/backend/igny8_core/tasks/backup.py
Celery Tasks:
-
backup.create_daily_app_package- Runs daily at 00:00 UTC
- Creates full application package
- Logs success/failure
- Returns status dict
-
backup.cleanup_old_packages- Runs weekly (Monday at 01:00 UTC)
- Removes packages older than 30 days
- Keeps recent backups safe
3. Celery Beat Schedule
Location: /data/app/igny8/backend/igny8_core/celery.py
Configured schedules:
'daily-app-package-backup': {
'task': 'backup.create_daily_app_package',
'schedule': crontab(hour=0, minute=0), # Daily at midnight
},
'weekly-package-cleanup': {
'task': 'backup.cleanup_old_packages',
'schedule': crontab(hour=1, minute=0, day_of_week=1), # Monday 01:00
},
Backup Storage
Location: /data/backups/igny8/
Files created:
/data/backups/igny8/
├── igny8-app-20251210_161527.tar.gz # Compressed package
├── igny8-app-20251210_161527.tar.gz.sha256 # Checksum file
├── igny8-app-20251211_000000.tar.gz
├── igny8-app-20251211_000000.tar.gz.sha256
└── ... (7-30 days of backups retained)
Package Contents
✅ INCLUDED (Source code only - ~56 MB uncompressed):
backend/igny8_core/- Django applicationbackend/manage.py,requirements.txtfrontend/src/,frontend/public/frontend/package.json, config filesdocs/,README.md- Dockerfiles, docker-compose files
❌ EXCLUDED (Auto-generated - will be rebuilt):
backend/.venv/- Python virtual environmentfrontend/node_modules/- NPM dependenciesfrontend/dist/- Build output*.sql,*.sqlite3- Database fileslogs/- Runtime logscelerybeat-schedule- Celery statestaticfiles/- Collected static files__pycache__/,*.pyc- Python cache
Restoration Process
To restore from a package on a new server:
# 1. Extract package
cd /data/app
tar -xzf /path/to/igny8-app-YYYYMMDD_HHMMSS.tar.gz
# 2. Verify checksum (optional but recommended)
sha256sum -c igny8-app-YYYYMMDD_HHMMSS.tar.gz.sha256
# 3. Follow INSTALLATION.md to:
# - Build Docker images (installs all dependencies)
# - Start services
# - Run migrations
Monitoring
Check backup status:
# List recent backups
ls -lh /data/backups/igny8/
# View Celery Beat schedule
docker exec igny8_celery_beat celery -A igny8_core inspect scheduled
# View Celery logs
docker logs igny8_celery_beat
docker logs igny8_celery_worker
Verify backup worked:
# Check if backup ran
ls -lt /data/backups/igny8/ | head -5
# Verify package integrity
cd /data/backups/igny8/
sha256sum -c igny8-app-*.tar.gz.sha256
Retention Policy
- Daily backups: Kept for 7 days in packaging script
- Long-term backups: Kept for 30 days by cleanup task
- Manual backups: Never auto-deleted (run script manually with different output dir)
Troubleshooting
Backup didn't run at midnight:
# Check Celery Beat is running
docker ps | grep celery_beat
# Check Beat logs
docker logs igny8_celery_beat
# Manually trigger backup
docker exec igny8_celery_worker celery -A igny8_core call backup.create_daily_app_package
Insufficient disk space:
# Check disk usage
df -h /data
# Clean old backups manually
find /data/backups/igny8/ -name "*.tar.gz" -mtime +30 -delete
Package too large:
- Check no large files accidentally included
- Verify
.gitfolder is excluded - Ensure
node_modules,.venvexcluded
Security Notes
- Packages contain source code - store securely
- No secrets in package -
.envis excluded - Checksum verification - always verify SHA256 before restoring
- Backup the backups - Consider copying to remote storage
Quick Reference
| Action | Command |
|---|---|
| Create backup now | /data/app/igny8/scripts/package_app.sh |
| List backups | ls -lh /data/backups/igny8/ |
| Verify package | sha256sum -c package.tar.gz.sha256 |
| Extract package | tar -xzf package.tar.gz |
| Check schedule | docker exec igny8_celery_beat celery -A igny8_core inspect scheduled |
| View logs | docker logs igny8_celery_beat |
Configuration
To change backup schedule, edit /data/app/igny8/backend/igny8_core/celery.py:
'daily-app-package-backup': {
'task': 'backup.create_daily_app_package',
'schedule': crontab(hour=0, minute=0), # Change time here
},
Then restart Celery:
docker restart igny8_celery_beat igny8_celery_worker