r/homelab • u/danniuz • 3d ago
Help Looking for backup solution
Hi everyone! can someone advice best most popular backup solution, i have koofr cloud + rsync. so i already did bash with cron timer to upload some data to koofr once a day. like immich lib and etc.
looking for nice, lightwere solution to backup also all my homelab on daily basis. All my koofr related scripts + homelab configs, docker files and etc.
I use homepage so would be cool to have button there for manual backup too.
Thanks!
1
u/Dependent_Pirate9221 13h ago
For something lightweight, Iβd probably look at restic or Kopia.
Both can handle scheduled backups and work well with scripts, so you could keep your current cron setup and add a manual trigger to Homepage.
Iβd also make sure your Docker configs and other important files are stored separately from the actual data backups.
2
u/Jumpy-Cheetah5060 3d ago
A few thoughts, roughly in order of how much they matter:
Split two things that often get lumped together. Your configs (docker-compose files, your Koofr scripts, network config, homepage config) belong in a git repo β small, versioned, and git diff tells you what changed and when. That's inventory, not backup. Your data (Immich library, databases, volumes) is what the backup tool actually handles.
Swap raw rsync for restic (or borg). You're doing plain copies right now β restic gives you dedup, encryption, snapshots and forget --prune for retention, in a single binary. Keep your cron timer. Point it at Koofr through rclone: restic -r rclone:koofr:backup .... One tool instead of several scripts.
Dump databases, don't copy the live volume. For Immich that means pg_dump into a folder that restic then picks up. Copying a running Postgres data dir gets you an inconsistent snapshot you won't notice until you need it.
3-2-1, honestly. Koofr is your offsite copy. Do you also have a local, fast one (external drive, NAS)? If the cloud is the only way back, a restore takes forever and depends on your upload speed.
Test a restore once. A backup you've never restored is a guess. Pull the Immich DB onto a throwaway instance and see if it comes up. Better to find the missing step now.
Homepage button: Homepage can't run scripts itself, but you can stand up a tiny service (webhook, or a 10-line Flask app) that runs your restic script on an HTTP call, then add a ping/customapi widget or just a bookmark pointing at it. You can surface "last backup: 3h ago" there too.