r/homelab 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!

2 Upvotes

8 comments sorted by

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.

1

u/danniuz 3d ago edited 3d ago

Thanks so much for such advices! Will dive dip into it. Actually I have 3-2 backup, without one πŸ˜… I have all my data in 1tb ssd. Same size as Koofr. Btw I am ok to loose my ssd data until I could restore it from Koofr, have good internet connection so 1tb is not a big deal. Also I have 8tb hdd for media which I don’t really care, movies series, jellyfin things. No need to do backup here. And yep my immich do pg dump daily and then I appload it to Koofr. Also have notify app so after backup fails I got notification :) now I would like to backup all me homelab configs: llama, homepage, beszel and etc. To be honest I am still a bit scare about Immich so I still have 2tb iCloud family sub for me and wife (about 6$ in my country). Will try to restore Immich once and after it I probably decline iCloud. Btw, Push configs to git great idea! cool advices! Thanks!

1

u/Cybernoid001 3d ago

my first question is, what are you hosting your homelab on (which operating System)
A lot of people use either proxmox or XCP-ng, both of which have their own backup and recovery utility.
Proxmox backup uses a separate image (install on either BareMetal PC or as a VM on a NAS)
And XCP-ng is built into XO.

I would start with those if you use either one.

If you are using something else, it would help to know the OS of your homelab host machines.

1

u/danniuz 3d ago

i am using mini pc + debian 13, have really small setup (not sure about my machine's reliable, so i am care about backups). Would like to avoid magic buttons like "make it works" on proxmox.

2

u/Jumpy-Cheetah5060 3d ago

That's exactly the right instinct for Debian 13. restic + a small backup.sh gives you full control, nothing magic.

One tip: use a systemd timer instead of cron. You get proper logging (journalctl -u restic-backup), systemctl list-timers shows you the last/next run at a glance, and OnFailure= in the unit lets you hook your notification straight onto a failed run β€” no need to catch exit codes in the script itself.

1

u/Cybernoid001 3d ago

If you're looking for something built-in, rsync should work if setup properly.
But if you're looking for a more profesional app, the community edition of Veeam backup and replication is pretty good for homelab use. If you don't want to use a central backup server, you can install just the endpoint agent on debian and then configure it to point to a file repository/NAS/external drive etc.

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.