What backup strategy when running Home Assistant in Docker?

I’m running HA under Docker on a Raspberry Pi (4B) along with a bunch of other stuff. I recently had a problem when the SD card went bad and I had to rebuild the system on a new card. Fortunately the HA directory on the bad card was readable and I was able to rsync it onto the new card and everything came up just fine when the new HA container got pulled.
But what if the card had been worse corrupted? I see references to snapshots of the HA environment, and I’d like to do that, and transfer these to my NAS for backup. But I can’t find the GUI options (“Supervisor -> Snapshots”) on my installation. Am I just missing it, or what?
FWIW I’m using the homeassistant/raspberrypi4-homeassistant:latest container.

Can you find the supervisor even though you can’t find snapshots? The URL is https://homeassistant.local/hassio/snapshots. Could you post a screenshot?

There’s no Supervisor menu anywhere, and when I try the /hassio URL I get a 404. Screenshot of the menu I see when I go to my Pi at port 8123/config attached.

OK, I found this: https://community.home-assistant.io/t/where-is-supervisor-hassio-from-home-assistant-installed-via-docker/172853 which explains that the Docker container I’m using doesn’t included the Supervisor functions. I need to see if there are any alternative containers I could use instead. No way am I doing a direct install of HA on the Pi.

You don’t need to change anything at all if ytou want to continue running your current installation method.

Just copy your entire config directory (including all of the hidden files - .cloud, .storage, etc) to a back up location.

I run a non-supervised HA install in docker and that’s all I do.

1 Like

Great, thanks. So if I write a little script to archive the entire config directory and ship it over to the NAS, and run that as a cron job, I should be good?

I don’t see why not. I just copy stuff over manually right before I update to the newest HA version an every so often in between when I make a significant number of changes.

But just to re-emphasize - make you get the entire contents of that folder, hidden stuff and all.

Thanks. There’s a bit of an issue with the file /.storage/auth, which is owned by root, so my regular uid isn’t able to add it to the archive. Everything else zips up nicely.

I just run a chown on my docker config directory to switch it away from root to my current user (finity) and it all still works fine. And I can back everything up including that auth file.

So the way I backup seems overly involved, but it works.

1- Use Portainer to stop the Home Assistant container - if Home Assitant is running I’ve found files skip and don’t copy over

2- Sudo nautilus which pulls up the root file explorer and gets around the permission issues.

3- Copy the entire config directory to my NAS drive and backup folder

4- Start the container again in portainer after copying is complete

I mean, this works, but I really would like to automate the process if possible. I just haven’t figured out a good way to do that though.

Update - I think I figured out a way to automate. I wrote a script to backup and run it nightly through the crontab. Generally following the directions here - Using rsync and cron to automate incremental backups

First I created a script file called hass_backup.sh that stops the container, does the backup using rsync, then starts the home assistant docker container back up

docker stop homeassistant
rsync -ab --backup-dir=old_`date +%F` --delete --exclude=old_* /home/mwav3/homeassistant /media/mwav3/MyPassport/backups/hassrsync
docker start homeassistant

To make sure that all the root files copy, I did this in the global crontab by running sudo gedit /etc/crontab

I then added commands to run the script nightly at 2 AM as root. I also then added another command to the crontab to start the container at 2:15 AM in case anything happens where the first script fails at some point so Home Assistant doesn’t stay offline.

0 2    * * *    root    sh /home/mwav3/hass_backup.sh
15 2   * * *    mwav3     docker start homeassistant

Seems to be working. I’m sure there’s lots of other ways to do this.