Do not retire the old Home Assistant server because the restored dashboard loads. Retire it only after the new instance passes identity, device, automation, history, dependency, restart, and fresh-backup checks under controlled conditions.
Keep the old server powered off but intact while you test the restored host on an isolated or carefully controlled network. Prevent both instances from issuing commands at once, record a go/no-go checklist from the old system, and reproduce real household triggers before erasing drives, changing DNS permanently, or releasing the old hardware.
Define the Restore Acceptance Checklist Before Testing
Capture the old instance's version, installation type, hostname, IP or DNS name, time zone, user accounts, integrations, devices, entities, automations, dashboards, add-ons, backup destinations, external database, shares, certificates, and secrets dependencies. This inventory defines what a complete restore means for your home.
Separate critical functions from conveniences. Alarm, locks, smoke alerts, heating, leak control, and essential lighting deserve explicit manual verification; decorative dashboards and old history can follow. The retirement decision should fail if a critical function is missing even when most entity counts match.
Record a few known state values and recent history points before shutting down the old host. These become comparison anchors on the restored instance and help distinguish an incomplete backup from a newly discovered integration problem.
Restore in Isolation and Prevent Duplicate Control
Restore onto the new server while the old Home Assistant instance is stopped. If both must be online for file comparison, isolate the new instance from device networks or disable automations and outbound integrations until identity conflicts are resolved.
A community migration discussion explicitly frames an isolated restore test as the safe way to validate a move between virtualization platforms. That supports the test method, while the exact network isolation depends on your installation and device protocols.
Confirm the restored version and backup compatibility before judging missing components. If the restore reports errors, do not layer manual fixes onto an unknown state. Save logs, identify whether the failure concerns the archive, encryption, version, storage, or an integration, and retry from a clean test target.
Verify State, Dependencies, and Real Device Actions
Compare users, integrations, device and entity counts, disabled entities, areas, dashboards, helpers, scripts, and automations. Then open recent history and logs. Counts are useful screening signals, but they do not prove that credentials, tokens, webhooks, radio adapters, or external databases work.
Test one device from each important protocol and run representative automations using their real triggers. Confirm both the action and the resulting state update. For hardware-specific radios, verify device paths and permissions; for cloud integrations, verify token refresh; for external databases and shares, confirm the restored host reaches the correct data rather than an empty replacement.
Use the ZimaSpace guide on backup encryption and restore dependencies when the archive exists but a key, credential, chain, or external location blocks recovery.
Prove Persistence With Restarts and a Fresh Backup
Restart Home Assistant twice and reboot the new host once. After each cycle, confirm integrations reload, mounts arrive before services, USB or serial device paths remain stable, automations are enabled as intended, and the same history database continues rather than starting over.
Create a new backup from the restored system, copy it off the host, and verify that the expected components are included. A restore that cannot produce its own recoverable backup is not ready to become the only production instance.
Observe the restored system through at least one normal household cycle that includes scheduled automations, backups, and overnight jobs. The go decision requires stable control, no repeating migration or storage errors, and a verified rollback path.
Retire the Old Server Without Destroying the Rollback Window
When the checklist passes, transfer permanent DNS, IP reservations, remote access, and backup schedules to the new host. Keep the old server powered off so it cannot issue duplicate actions, but preserve its disk and configuration unchanged during a defined observation window.
If the new server misses a critical automation, loses state after restart, writes to the wrong database, or cannot create a valid backup, the decision is no-go. Power it down, restore the old network identity if needed, and return to the known-good host before investigating.
Only wipe or repurpose the old server after the new host has survived the observation window and at least one off-host backup has been verified. Document the retirement date, final old-system backup, new host identity, and restore test result so the next migration starts with a trustworthy baseline.
Support & Tips
More to Read

How to Optimize Home Assistant Database Connections for Concurrent Containers
Tune an external Recorder database from measured active connections and latency, not by raising max connections or copying another host's pool.

How to Prevent Duplicate Jobs or Imports in Home Assistant
Use traces and unique operation keys to make automations and imports safe to retry without producing duplicate actions or records.

How to Repair Home Assistant After Its Database Volume Fills Up
Recover from a full Recorder volume without deleting evidence first, then reduce growth and prove history and automations survive restart.

