<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/updating-home-assistant-in-docker-safely-my-workflow-with-backup-test-and-rollback-rvjpuals6" -->

---
title: Updating Home Assistant in Docker Safely: My Workflow...
description: A workflow for safely updating a bare Docker-based Home Assistant installation without Supervisor or HAOS. Key steps: update HACS custom components first while...
canonical: https://daily.dev/posts/updating-home-assistant-in-docker-safely-my-workflow-with-backup-test-and-rollback-rvjpuals6
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Updating Home Assistant in Docker Safely: My Workflow With Backup, Test and Rollback | daily.dev
og:description: A workflow for safely updating a bare Docker-based Home Assistant installation without Supervisor or HAOS. Key steps: update HACS custom components first while...
og:url: https://daily.dev/posts/updating-home-assistant-in-docker-safely-my-workflow-with-backup-test-and-rollback-rvjpuals6
og:image: https://api.daily.dev/og/posts/RVJPuALs6.png
og:image:alt: Updating Home Assistant in Docker Safely: My Workflow With Backup, Test and Rollback
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Updating Home Assistant in Docker Safely: My Workflow With Backup, Test and Rollback

**[gitconnected](https://daily.dev/sources/gc)** · 8 min read · 3 upvotes · 1 comments

## Summary

A workflow for safely updating a bare Docker-based Home Assistant installation without Supervisor or HAOS. Key steps: update HACS custom components first while still on the old core to isolate failure sources, back up the entire config directory before touching anything, record the exact old Docker image ID (not just the 'stable' tag) as the real rollback mechanism, recreate the container from scratch rather than updating in place, wait for the database migration to finish by polling the API instead of restarting, and run a post-update checklist covering KNX, sensors, HACS, and automations. Also covers why Watchtower's automatic updates are risky for major HA releases and how to roll back cleanly if something breaks.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://levelup.gitconnected.com/updating-home-assistant-in-docker-safely-my-workflow-with-backup-test-and-rollback-7078a97d4763>

## Questions this post answers

### How do I roll back a Home Assistant Docker container to the previous version after a failed update?

Record the exact old image ID before updating using 'docker inspect homeassistant --format {{.Image}}', since Docker's 'rollback' via re-pulling the stable tag just fetches the newest version again. To revert, stop and remove the container, restore the old config folder from backup, and start a new container using that saved old image ID instead of the stable tag.

_Developers wiring up rollback plans for self-hosted tools track workflow guides like this one on daily.dev._

### Should I update Home Assistant core or HACS integrations first?

Update HACS custom components first while still running the old Home Assistant core, restart, and confirm everything works before touching the core image. Updating core first makes it hard to tell whether a break came from the core jump or an incompatible integration, since both change at once.

_Anyone sequencing risky upgrades across integrations and core versions can follow workflows like this via daily.dev._

### Is Watchtower safe for automatically updating a Home Assistant Docker container?

Watchtower is risky for Home Assistant because it silently pulls the newest image and recreates the container without warning, which is dangerous for major updates involving database migrations or breaking HACS integrations. Home Assistant's 'stable' tag does not distinguish patch releases from major ones, so manual, controlled updates with a backup and noted rollback image ID are safer than fully automated tools.

_Developers deciding between automated and manual update strategies for self-hosted tools can find these tradeoffs on daily.dev._

## Community discussion

Top comments from developers on daily.dev.

**@vergissberlin** · 0 upvotes

> Pinning the rollback to the actual image ID rather than the "stable" tag is the detail most people skip - tags get reused, so "roll back to stable" can silently hand you a different build than the one you tested against. Polling the API until the DB migration finishes instead of just waiting a fixed timeout is a nice touch too; that's usually the kind of readiness check people only add after getting burned once.

## Similar posts on daily.dev

- [I stopped relying on Home Assistant's backups and built my own with NAS snapshots instead](https://daily.dev/posts/i-stopped-relying-on-home-assistant-s-backups-and-built-my-own-with-nas-snapshots-instead-itylcm2lh) · XDA Developers · 0 upvotes · 0 comments
- [Home Assistant slows down over time, but there's a nuclear option most people don't realize](https://daily.dev/posts/home-assistant-slows-down-over-time-but-there-s-a-nuclear-option-most-people-don-t-realize-nmwpwbbbf) · XDA Developers · 0 upvotes · 0 comments
- [My entire smart home runs on a single Docker container now, and I'm never going back](https://daily.dev/posts/my-entire-smart-home-runs-on-a-single-docker-container-now-and-i-m-never-going-back-ynlpjdclf) · XDA Developers · 0 upvotes · 0 comments

---

Tags: [#devops](https://daily.dev/tags/devops), [#docker](https://daily.dev/tags/docker), [#self-hosting](https://daily.dev/tags/self-hosting)

[View this post on daily.dev](https://daily.dev/posts/updating-home-assistant-in-docker-safely-my-workflow-with-backup-test-and-rollback-rvjpuals6)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Updating Home Assistant in Docker Safely: My Workflow With Backup, Test and Rollback","url":"https://daily.dev/posts/updating-home-assistant-in-docker-safely-my-workflow-with-backup-test-and-rollback-rvjpuals6","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/updating-home-assistant-in-docker-safely-my-workflow-with-backup-test-and-rollback-rvjpuals6"},"datePublished":"2026-08-31T17:44:25.599Z","dateModified":"2026-08-31T18:20:53.470Z","description":"A workflow for safely updating a bare Docker-based Home Assistant installation without Supervisor or HAOS. Key steps: update HACS custom components first while...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/8f2d256a3a3ac333c9698db9469d97e2?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/8f2d256a3a3ac333c9698db9469d97e2?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"gitconnected","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"gitconnected","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/gc","url":"https://daily.dev/sources/gc"},"commentCount":1,"discussionUrl":"https://daily.dev/posts/updating-home-assistant-in-docker-safely-my-workflow-with-backup-test-and-rollback-rvjpuals6","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":3},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":1}],"keywords":"devops,docker,self-hosting","timeRequired":"PT8M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"gitconnected","item":"https://daily.dev/sources/gc"},{"@type":"ListItem","position":3,"name":"Updating Home Assistant in Docker Safely: My Workflow With Backup, Test and Rollback"}]}
{"@context":"https://schema.org","@type":"WebPage","@id":"https://daily.dev/posts/updating-home-assistant-in-docker-safely-my-workflow-with-backup-test-and-rollback-rvjpuals6","comment":[{"@type":"Comment","text":"Pinning the rollback to the actual image ID rather than the “stable” tag is the detail most people skip - tags get reused, so “roll back to stable” can silently hand you a different build than the one you tested against. Polling the API until the DB migration finishes instead of just waiting a fixed timeout is a nice touch too; that’s usually the kind of readiness check people only add after getting burned once.","datePublished":"2026-09-01T21:42:41.776Z","url":"https://daily.dev/posts/RVJPuALs6#c-jloYfMRjj","author":{"@type":"Person","name":"André Lademann","url":"https://daily.dev/vergissberlin","image":"https://avatars.githubusercontent.com/u/179964?v=4"}}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/updating-home-assistant-in-docker-safely-my-workflow-with-backup-test-and-rollback-rvjpuals6#faq","mainEntity":[{"@type":"Question","name":"How do I roll back a Home Assistant Docker container to the previous version after a failed update?","acceptedAnswer":{"@type":"Answer","text":"Record the exact old image ID before updating using 'docker inspect homeassistant --format {{.Image}}', since Docker's 'rollback' via re-pulling the stable tag just fetches the newest version again. To revert, stop and remove the container, restore the old config folder from backup, and start a new container using that saved old image ID instead of the stable tag. Developers wiring up rollback plans for self-hosted tools track workflow guides like this one on daily.dev."}},{"@type":"Question","name":"Should I update Home Assistant core or HACS integrations first?","acceptedAnswer":{"@type":"Answer","text":"Update HACS custom components first while still running the old Home Assistant core, restart, and confirm everything works before touching the core image. Updating core first makes it hard to tell whether a break came from the core jump or an incompatible integration, since both change at once. Anyone sequencing risky upgrades across integrations and core versions can follow workflows like this via daily.dev."}},{"@type":"Question","name":"Is Watchtower safe for automatically updating a Home Assistant Docker container?","acceptedAnswer":{"@type":"Answer","text":"Watchtower is risky for Home Assistant because it silently pulls the newest image and recreates the container without warning, which is dangerous for major updates involving database migrations or breaking HACS integrations. Home Assistant's 'stable' tag does not distinguish patch releases from major ones, so manual, controlled updates with a backup and noted rollback image ID are safer than fully automated tools. Developers deciding between automated and manual update strategies for self-hosted tools can find these tradeoffs on daily.dev."}}]}
```

