- CLAUDE.md: Server instructions and service reference - docs/: Persistent documentation (architecture, guides) - .artifacts/: Session-generated notes - playwriter-browser/: Remote browser container config Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
3.9 KiB
3.9 KiB
NUC Backup Strategy
Date: 2026-02-01 17:30 Context: 3-layer backup strategy for NUC disaster recovery
Layer 1: Daily Automated Backup (Kopia → MinIO)
What: All Docker volumes + Coolify configs Where: NUC MinIO (local) + optionally offsite Recovery time: ~15 min
Configure Kopia
# Connect to Kopia container
ssh nuc "docker exec -it kopia /bin/sh"
# Add Docker volumes path
kopia policy set /var/lib/docker/volumes --add-include "*.sql" --add-include "*.db"
kopia snapshot create /var/lib/docker/volumes
# Add Coolify data
kopia snapshot create /data/coolify
# Set daily schedule
kopia policy set --global --snapshot-interval 24h
Critical paths to backup
| Path | Contents |
|---|---|
/data/coolify/ |
Coolify configs, SSH keys, DB |
/var/lib/docker/volumes/ |
All service data |
/opt/homepage/config/ |
Homepage dashboard config |
Manual backup command
ssh nuc "docker exec kopia kopia snapshot create /var/lib/docker/volumes /data/coolify"
Verify backups
ssh nuc "docker exec kopia kopia snapshot list --all"
Layer 2: Clonezilla Full Disk Image
What: Complete disk clone (OS + everything) Where: External USB drive Recovery time: ~30 min When: Monthly or before hardware changes
Create image
- Boot NUC from Clonezilla USB
- Select:
device-image→savedisk - Choose external USB as destination
- Select NUC internal disk as source
- Use options:
-z1p(parallel compression),-fsck-src-part(check filesystem)
Recommended naming
nuc-full-YYYY-MM-DD.img
Storage requirements
| NUC disk used | Compressed image |
|---|---|
| 50GB | ~20GB |
| 100GB | ~40GB |
| 250GB | ~80GB |
Layer 3: Coolify Services Export
What: List of all services + configs for manual rebuild Where: This repo + offsite Recovery time: 1-2 hours (fresh install)
Export current services
# Get all services with their configs
ssh nuc "docker exec coolify php artisan tinker --execute=\"
use App\Models\Service;
Service::all()->map(fn(\\\$s) => [
'name' => \\\$s->name,
'uuid' => \\\$s->uuid,
'type' => \\\$s->service_type,
'compose' => \\\$s->docker_compose_raw
])->toJson(JSON_PRETTY_PRINT);
\""
Current NUC Services (as of 2026-02-01)
| Service | Port | Coolify UUID |
|---|---|---|
| Homepage | 3000 | eo0g84scsss4osk0skk040ck |
| Coolify | 8000 | (system) |
| Gitea | 3030 | ho0cwgcwos88cwc48g84c0g8 |
| Outline | 3080 | pccg80wks4c084008owokkkg |
| n8n | 5678 | uk0o04o0g84s4sc80kkoooc0 |
| Vaultwarden | 8222 | h40w0ss4kgs0c8cgc0sc8k48 |
| Ntfy | 8333 | xgkkg8gkgg048g8gkc8ck4os |
| MinIO | 9000/9001 | dg4wkgg8skcssww0040sgk80 |
| Authentik | 9090 | e8owcw0s4wcswc4w4css0sws |
| FileBrowser | 8085 | o4swwwsowwg88coo0ws4cg48 |
| CloudBeaver | 8087 | joo4g4k0w08k8kcosgsgswc0 |
| Uptime Kuma | 3001 | s4ko04w88k048sw8o4swsoww |
| Dozzle | 9999 | vgko8w4kkkc8k0g4sggs4ks8 |
| Tailscale | - | posgwooww0s0c0okssooc4gw |
Databases
| Database | Port | UUID |
|---|---|---|
| LiquidGym MySQL | 3306 | hgwcgs4oswwc8scg080scoo4 |
| LiquidGym Postgres | 5433 | x4kk8g4k8w4g0cw480w84g4g |
| Knosia Postgres | 5442 | ik80skko0008w4000c4w40os |
Recovery Priority
If total failure, restore in this order:
- Coolify (manages everything else)
- Databases (apps depend on them)
- Authentication (Authentik, Vaultwarden)
- Core services (Gitea, n8n, Outline)
- Monitoring (Uptime Kuma, Dozzle)
Offsite Backup (Optional)
For offsite, sync Kopia repository to cloud:
# Sync to Backblaze B2 (example)
kopia repository sync-to b2 --bucket=nuc-backup --key-id=XXX --key=YYY
Or rsync the Clonezilla image to another location.
Related
- Hard Disk Change Guide:
2026-02-01_17-30_nuc-hard-disk-change.md - LiquidGym Migration:
2026-02-01_16-45_liquidgym-mysql-migration.md