feat: add automated backup configuration for all volumes
Added comprehensive backup configuration to Backrest:
**Repository Configuration:**
- Target: /repos (mounted from /mnt/hidrive/users/valknar/Backup)
- Password: falcon-backup-2025
- Auto-initialize and auto-unlock enabled
- Weekly prune schedule (Sundays at 2 AM)
- Weekly integrity checks (Sundays at 3 AM)
**Backup Plans** (11 plans covering all volumes):
1. **postgres-backup** (2 AM daily)
- PostgreSQL database
- Retention: 7 daily, 4 weekly, 6 monthly, 2 yearly
2. **redis-backup** (3 AM daily)
- Redis cache data
- Retention: 7 daily, 4 weekly, 3 monthly
3. **directus-uploads-backup** (4 AM daily)
- Directus media files
- Retention: 7 daily, 4 weekly, 6 monthly, 2 yearly
4. **directus-bundle-backup** (4 AM daily)
- Directus extensions
- Retention: 7 daily, 4 weekly, 3 monthly
5. **awesome-backup** (5 AM daily)
- Awesome app database
- Retention: 7 daily, 4 weekly, 6 monthly
6. **gotify-backup** (5 AM daily)
- Gotify notifications
- Retention: 7 daily, 4 weekly, 3 monthly
7. **scrapy-backup** (6 AM daily)
- Scrapyd data and spider code
- Retention: 7 daily, 4 weekly, 3 monthly
8. **n8n-backup** (6 AM daily)
- n8n workflow data
- Retention: 7 daily, 4 weekly, 6 monthly
9. **filestash-backup** (7 AM daily)
- Filestash state
- Retention: 7 daily, 4 weekly, 3 monthly
10. **linkwarden-backup** (7 AM daily)
- Linkwarden bookmarks and search index
- Retention: 7 daily, 4 weekly, 6 monthly
11. **letsencrypt-backup** (8 AM daily)
- SSL certificates
- Retention: 7 daily, 4 weekly, 12 monthly, 3 yearly
**Configuration Mount:**
- config.json mounted directly at /config/config.json
- Read-write mode to allow UI updates
- Removed backrest_config volume (using file mount instead)
All backups scheduled at different times to spread I/O load.
Critical data (postgres, directus, letsencrypt) has longer retention.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -7,10 +7,12 @@ services:
|
||||
volumes:
|
||||
# Backrest application data
|
||||
- backrest_data:/data
|
||||
- backrest_config:/config
|
||||
- backrest_cache:/cache
|
||||
- backrest_tmp:/tmp
|
||||
|
||||
# Configuration file (mount directly to override)
|
||||
- ./config.json:/config/config.json:rw
|
||||
|
||||
# Backup destination
|
||||
- ${RESTIC_BACKUP_PATH:-/mnt/hidrive/users/valknar/Backup}:/repos
|
||||
|
||||
@@ -57,8 +59,6 @@ services:
|
||||
volumes:
|
||||
backrest_data:
|
||||
name: ${RESTIC_COMPOSE_PROJECT_NAME}_data
|
||||
backrest_config:
|
||||
name: ${RESTIC_COMPOSE_PROJECT_NAME}_config
|
||||
backrest_cache:
|
||||
name: ${RESTIC_COMPOSE_PROJECT_NAME}_cache
|
||||
backrest_tmp:
|
||||
|
||||
199
restic/config.json
Normal file
199
restic/config.json
Normal file
@@ -0,0 +1,199 @@
|
||||
{
|
||||
"version": 1,
|
||||
"instance": "falcon",
|
||||
"repos": [
|
||||
{
|
||||
"id": "hidrive-backup",
|
||||
"uri": "/repos",
|
||||
"password": "falcon-backup-2025",
|
||||
"autoUnlock": true,
|
||||
"autoInitialize": true,
|
||||
"prunePolicy": {
|
||||
"schedule": {
|
||||
"cron": "0 2 * * 0"
|
||||
}
|
||||
},
|
||||
"checkPolicy": {
|
||||
"schedule": {
|
||||
"cron": "0 3 * * 0"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"plans": [
|
||||
{
|
||||
"id": "postgres-backup",
|
||||
"repo": "hidrive-backup",
|
||||
"paths": ["/volumes/core_postgres_data"],
|
||||
"schedule": {
|
||||
"cron": "0 2 * * *"
|
||||
},
|
||||
"retention": {
|
||||
"policyTimeBucketed": {
|
||||
"daily": 7,
|
||||
"weekly": 4,
|
||||
"monthly": 6,
|
||||
"yearly": 2
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "redis-backup",
|
||||
"repo": "hidrive-backup",
|
||||
"paths": ["/volumes/core_redis_data"],
|
||||
"schedule": {
|
||||
"cron": "0 3 * * *"
|
||||
},
|
||||
"retention": {
|
||||
"policyTimeBucketed": {
|
||||
"daily": 7,
|
||||
"weekly": 4,
|
||||
"monthly": 3
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "directus-uploads-backup",
|
||||
"repo": "hidrive-backup",
|
||||
"paths": ["/volumes/directus_uploads"],
|
||||
"schedule": {
|
||||
"cron": "0 4 * * *"
|
||||
},
|
||||
"retention": {
|
||||
"policyTimeBucketed": {
|
||||
"daily": 7,
|
||||
"weekly": 4,
|
||||
"monthly": 6,
|
||||
"yearly": 2
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "directus-bundle-backup",
|
||||
"repo": "hidrive-backup",
|
||||
"paths": ["/volumes/directus_bundle"],
|
||||
"schedule": {
|
||||
"cron": "0 4 * * *"
|
||||
},
|
||||
"retention": {
|
||||
"policyTimeBucketed": {
|
||||
"daily": 7,
|
||||
"weekly": 4,
|
||||
"monthly": 3
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "awesome-backup",
|
||||
"repo": "hidrive-backup",
|
||||
"paths": ["/volumes/awesome_data"],
|
||||
"schedule": {
|
||||
"cron": "0 5 * * *"
|
||||
},
|
||||
"retention": {
|
||||
"policyTimeBucketed": {
|
||||
"daily": 7,
|
||||
"weekly": 4,
|
||||
"monthly": 6
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "gotify-backup",
|
||||
"repo": "hidrive-backup",
|
||||
"paths": ["/volumes/gotify_data"],
|
||||
"schedule": {
|
||||
"cron": "0 5 * * *"
|
||||
},
|
||||
"retention": {
|
||||
"policyTimeBucketed": {
|
||||
"daily": 7,
|
||||
"weekly": 4,
|
||||
"monthly": 3
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "scrapy-backup",
|
||||
"repo": "hidrive-backup",
|
||||
"paths": [
|
||||
"/volumes/scrapyd_data",
|
||||
"/volumes/scrapy_code"
|
||||
],
|
||||
"schedule": {
|
||||
"cron": "0 6 * * *"
|
||||
},
|
||||
"retention": {
|
||||
"policyTimeBucketed": {
|
||||
"daily": 7,
|
||||
"weekly": 4,
|
||||
"monthly": 3
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "n8n-backup",
|
||||
"repo": "hidrive-backup",
|
||||
"paths": ["/volumes/n8n_data"],
|
||||
"schedule": {
|
||||
"cron": "0 6 * * *"
|
||||
},
|
||||
"retention": {
|
||||
"policyTimeBucketed": {
|
||||
"daily": 7,
|
||||
"weekly": 4,
|
||||
"monthly": 6
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "filestash-backup",
|
||||
"repo": "hidrive-backup",
|
||||
"paths": ["/volumes/filestash_data"],
|
||||
"schedule": {
|
||||
"cron": "0 7 * * *"
|
||||
},
|
||||
"retention": {
|
||||
"policyTimeBucketed": {
|
||||
"daily": 7,
|
||||
"weekly": 4,
|
||||
"monthly": 3
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "linkwarden-backup",
|
||||
"repo": "hidrive-backup",
|
||||
"paths": [
|
||||
"/volumes/linkwarden_data",
|
||||
"/volumes/linkwarden_meili_data"
|
||||
],
|
||||
"schedule": {
|
||||
"cron": "0 7 * * *"
|
||||
},
|
||||
"retention": {
|
||||
"policyTimeBucketed": {
|
||||
"daily": 7,
|
||||
"weekly": 4,
|
||||
"monthly": 6
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "letsencrypt-backup",
|
||||
"repo": "hidrive-backup",
|
||||
"paths": ["/volumes/letsencrypt_data"],
|
||||
"schedule": {
|
||||
"cron": "0 8 * * *"
|
||||
},
|
||||
"retention": {
|
||||
"policyTimeBucketed": {
|
||||
"daily": 7,
|
||||
"weekly": 4,
|
||||
"monthly": 12,
|
||||
"yearly": 3
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user