When Home Assistant starts but a dependency fails, keep the main service running long enough to identify the first unavailable dependency instead of rebuilding the installation.
A healthy process can still expose an incomplete system: MQTT entities may be unavailable, an external database may block history, a missing mount may break backups, or DNS may prevent cloud and local endpoints from resolving. Capture the earliest error, test the named endpoint from the Home Assistant runtime, and restore services from the dependency outward.
Identify the First Dependency Failure
Record the first error after startup for the affected integration or service, including dependency name, endpoint, exception class, retry interval, and timestamp. Later warnings often describe the consequence—unavailable entities or failed setup—rather than the first connection, authentication, mount, or schema failure.
A basic MQTT case shows the difference between configuring an integration and actually having a broker available. The resolved broker-availability distinction is useful because it prevents repeated changes to the client when the required service does not exist or is not running.
If one dependency name appears before all secondary errors, make it the recovery target. If several unrelated dependencies fail simultaneously, first test shared DNS, networking, storage, or credentials rather than repairing each integration independently.
Test Reachability, Authentication, and Readiness in Order
From the same container, VM, or host namespace used by Home Assistant, resolve the dependency hostname, open the required port, authenticate with the configured identity, and run the smallest read-only readiness check available. Host-side reachability alone does not prove the application namespace or credentials work.
Container startup order is not equivalent to application readiness; a health-gated dependency can avoid starting clients against an unready database or broker. The distinction in startup order versus readiness supports adding a real health check only after the failed condition is understood.
If resolution fails, repair DNS or the service name. If the port fails, restore the dependency process or network route. If authentication fails, compare the configured credential source without printing its value. If readiness fails after connection succeeds, inspect the dependency's own logs and storage state.
Restore the Dependency With the Least Invasive Change
Correct the confirmed fault only: restore the missing mount, start the broker, repair the database service, renew the credential reference, or fix the network alias. Restart the dependency first and wait for its readiness check to pass; restart Home Assistant once only when its client does not reconnect automatically.
When workers or integrations remain offline after the core starts, use the worker-readiness troubleshooting path to distinguish delayed startup from a persistent dependency boundary.
Rollback if the dependency cannot reach its prior healthy state or the repair requires schema deletion, database recreation, or credential exposure. Restore the last known configuration and preserve both sides' logs before attempting a more invasive recovery.
Reproduce the Original Feature and Define the Stop Point
Retest the exact feature that failed: publish and receive one disposable MQTT value, load a recent history range, create a test backup to the intended target, or run one affected automation. Repeat after a controlled dependency restart to confirm reconnection, not just immediate availability.
A pass requires the dependency health check, Home Assistant integration state, and user-facing feature to agree. A running container with unavailable entities is not recovery; a green dashboard while writes fail is not recovery either.
Stop when the original feature passes twice and no new dependency errors appear. Escalate with the first exception, endpoint class, readiness result, dependency version, and recovery steps when the service is reachable but protocol or schema negotiation still fails.
Record the Recovered Startup Contract
Document which component owns the dependency, its readiness signal, retry behavior, credential source, network name, storage path, and recovery order. The next operator should be able to distinguish process start from usable service without rediscovering the incident.
Run one planned dependency restart during a maintenance window and confirm Home Assistant reconnects within the recorded boundary. If manual intervention is still required, label that limitation instead of marking the dependency fully resilient.
Close the incident only after monitoring can detect both dependency failure and feature recovery. If monitoring sees only that the main process is running, it preserves the same blind spot that caused the incomplete startup state.
Support & Tips
More to Read

How to Optimize Immich Database Connections for Concurrent Containers
Do not raise max_connections first. Measure Immich sessions, total every container's demand, preserve admin headroom, and tune only the proven bottleneck.

How to Prevent Duplicate Jobs or Imports in Immich
Separate repeated jobs from duplicate assets. Use one canonical ingestion path, control retries and path changes, then test re-entry on a small cohort.

How to Repair Immich After Its Database Volume Fills Up
Never delete PostgreSQL WAL to free space. Stop Immich writes, preserve database state, add safe capacity, recover PostgreSQL, then prevent recurrence.

