Category: Home Assistant

My Home Assistant configuration, tips/tricks, and updates.

  • Home Assistant 2025.11.2 Update

    We have a bunch of bug fixes in this release!

    @dgomes bumped cronsim to 2.7 in #155648

    @puddly made it so that we avoid firing discovery events when flows immediately create a config entry in #155753 and added firmware flashing debug loggers to hardware integrations in #156480

    @xE1H removed the arbitrary forecast limit for meteo_lt in #155877

    @emontnemery fixed the progress step bugs in #155923, corrected migration to recorder schema 51 in #156267, as well as the checking of collation of statistics_meta DB table in #156327

    @TimoPtr made sure to clean register callbacks when mobile_app reloads in #156028

    @erwindouna bumped pyportainer to 1.0.13 and 1.0.14 in #155783 and  #156072 respectivly

    @TheJulianJES HomeAssistantError logging in ZHA config flow in #156075 and Bump ZHA to 0.0.78 and 0.0.79 in #15593 and #156571 respectivly

    @jrieger bumped aio-ownet to 0.0.5 in #156157

    @abmantis fixed the MFA Notify setup flow schema in #156158

    @farmio updated xknx to 3.10.1 in #156177

    @PaulAnnekov made it so that it is forbidden to choose state in Ukraine Alarm integration in #156183

    @starkillerOGfFixed set_absolute_position angle in #156185 and bumped reolink-aio to 0.16.5  in #156553

    @chemelli74 fixed the config flow reconfigure for Comelit in #156193 and added a debounce to the Alexa Devices coordinator in #156609

    @cdnninja bumped pyvesync to 3.2.1 and 3.2.2 in #156195 and #156423 respectivly

    @mib1185 fixed the Climate state reproduction when the target temperature is None in #156220

    @Foscam-wangzhengyu added a couple of changes to the Foscam Integration by adding Legacy Model Compatibility in #156226 and URL-encoding the RTSP URL in #156488

    @dotvav bumped pypalazzetti lib from 0.1.19 to 0.1.20 in #156249

    @joostlek bumped pySmartThings to 3.3.2 and 3.3.3 in #156250 and #156528 respectivly as well as bumped python-open-router to 0.3.3 in #156563

    @astrandb improved the logging of failing Miele action commands in #156275

    @shmuelzon added to Ituran: Don’t cache properties in #156281

    @rytilahti  added to tplink: handle repeated, unknown thermostat modes gracefully in #156310

    @antoniocifu  fixed support for Hyperion 2.1.1 in #156343

    @Danielhiversen updated pyMill to 0.14.1 in #156396

    @tr4nt0r prevented sensor updates caused by fluctuating “last seen” timestamps in Xbox integration in #156419

    @Bre77 fixed the update progress in Teslemetry in #156422

    @zweckj fixed the Lamarzocco update status in #156442

    @sairon updated the Home Assistant base image to 2025.11.0 in #156517

    @liudger updated bsblan to python-bsblan version 3.1.1 in #156536

    @epenet fixed the sfr_box entry reload in #156593

    @Thomas55555 fixed the model_id in Husqvarna Automower in #156608

    The are no backward-incompatible changes!

    Here’s the normal changelog as well as the full changelog

    Send me a message if you need any help, or join the Home Assistant Community if you are not already a part of it!

    If you missed the patch notes for the major release this month, you can read them here.

    I hope you all have a great day!

  • Home Assistant Companion App Android 2025.11.1

    In this release, there are a whole bunch of bug fixes as well as a few improvements, Android 5.0 & 5.1 Support and Configurable Gestures

    There are quite a few additions and a whole bunch of bug fixes in this release!

    @TimoPtr did a lot of updating with the onboarding setup process, as well as the server selection and a few other things this release!
    • Add onboarding navigation scaffold and Welcome Screen updated in #5705
    • Add new onboarding server discovery in #5731
    • Add onboarding manual server setup in #5736
    • Add onboarding connection screen in #5759
    • Add onboarding name your device in #5761
    • Add onboarding local first screen in #5766
    • Navigate to WebViewActivity from the new onboarding in #5769
    • Add onboarding location sharing screens in #5794
    • Improve ux server discovery and connection screen in #5815
    • Add onboarding deeplinks (invite and redirect) in #5818
    • Add onboarding support for automotive in #5821
    • Update HAButton and HATextField according to the design system in #5828
    • Stop loading when the webview is released in #5829
    • Add GitHub tasks in #5843
    • Set maxlines to 1 in the manual server and name your device screens in #5844
    • Add onboarding for wear in #5845
    • Add onboarding wear mTLS screen in #5848
    • Change PressureSensor device_class to atmospheric_pressure in #5849
    • Add HASwitch based on material3 Switch in #5850
    • Adjust ha space naming in #5852
    • Add missing GitHub action explicit permissions in #5855
    • Add onboarding set home network in #5856
    • Handle launcher reference in #5858
    • Update editorconfig to match our YAML configuration in #5860
    • Build release APK on PR in #5861
    • Improve CI efficiency by moving Ktlint up in the flow in #5875
    • Make new onboarding available in debug in #5876
    • Narrow down the permissions required by the workflows in #5877
    • Add back content read permission to allow git checkout in #5878
    • Properly test WearDnsRequestListener using GMS task in #5880
    • Support homeassistant://navigate deep links in #5889
    • Add missing content write permission for update screenshot workflow in #5890
    • Change default button size to MEDIUM in #5892
    • Add an option to hide existing servers in server discovery in #5893
    • Disable lint tasks while building release in PR workflow in #5895
    • Add skip welcome screen option to onboarding in #5897
    • Adjust onboarding UI in #5898
    • Remove any suffix from the URL while building the auth URL in #5900
    • Adjust server discovery flow by #5902
    • Revert ‘Update dependency ruby to v3.4.7’ in #5906
    • Adjust wording in welcome screen about Home Assistant in #5908
    • Automatically scroll to the end of LocationForSecureConnection on select in #5911
    • Make sure to clear the back stack after NameYourDevice is done in #5912
    • Introduce HABanner, HAHint and add privacy hint to sensor details in #5923
    • Add missing content write permission for the weekly workflow in #5925
    • Bring back the changelog from the previous release in #5927
    • Add Bluetooth permission to LocationPermissionState in #5932
    • Display LocalFirstScreen only when necessary in #5933
    • Add missing abbrev for fastlane on Ruby 3.4.7 in #5940
    • Add HADetails composable in #5943
    • Add HAIconButton composable in #5944
    • Add a dedicated error connection screen in #5945
    • Store translations in GitHub release for F-droid in #5946
    • Tweak RAM for screenshots testing in #5947
    • Add AI instructions files in #5959
    • Add ignore violation for strict mode on Samsung phones in #5962
    • Disable lint tasks while building release in #5963
    • Use positional arguments in string for description content in #5975
    • Remove horizontal safe insets for ModalBottomSheet in #5979

    @dshokouhi set the default server AA favourites in #5750

    @selva7378 made their first contributions!
    • Replaced Named annotations in datamodule with custom qualifiers in #5757
    • Add custom lint rule to forbid usage of @nAmed annotation in #5788

    @silamon made their first contribution with a pin SHA for all Github Actions in #5787

    @yschimke added WearDns for handling DNS resolution on Wear devices in #5170

    @loganrosen did some fixes
    • Fix ‘UseKtx’ lint warnings in ‘app’ module in #5807
    • Fix ‘UseKtx’ lint warnings in ‘wear’ module in #5819
    • Fix ‘AutoboxingStateCreation’ lint warnings in ‘app’ module in #5826
    • Fix ‘UseKtx’ and ‘TypographyDashes’ lint warnings in ‘common’ module in #5827
    • Fix ‘ObsoleteSdkInt’ lint warnings in ‘wear’ module in #5919
    @jpelgrom also did some fixes
    • Do not send recording/voice input to Assist if input is intentionally interrupted in #5832
    • Update (deprecated) vehicle template header builder in #5853
    • Rename Zone name only -> Zone only in #5957
    • Check for background read feature availability in Health Connect in #5958
    • Fix HATextField with maxLines 1 scrolling vertically in #5960

    @Martreides added open settings button to camera tile in #5708

    @BFadairo made their first contribution by converting SettingsWearActivity to use Jetpack Compose in #5764

    Of course, the @renovate[bot] was busy with a bunch of maintenance and a few updates
    • Update com.android.* in #5738
    • Update dependency com.google.android.material:material to v1.13.0 in #5751
    • Update actions/github-script action to v8 in #5754
    • Lock file maintenance in #5756
    • Update softprops/action-gh-release action to v2.3.3 in #5765
    • Update dependency io.sentry:sentry-android-core to v8.21.0 in #5773
    • Update dependency io.sentry:sentry-android-core to v8.21.1 in #5777
    • Update org.jetbrains.kotlin.* to v2.2.20 in #5778
    • Update androidx.compose.* in #5782
    • Update dependency com.google.devtools.ksp to v2.2.20-2.0.2 in #5783
    • Update wear.compose to v1.5.1 in #5784
    • Update dependency com.google.devtools.ksp to v2.2.20-2.0.3 in #5790
    • Lock file maintenance in #5791
    • Update ruby/setup-ruby action to v1.263.0 in #5806
    • Update plugin dev.panuszewski.typesafe-conventions to v0.8.0 in #5808
    • Update Gradle to v9.1.0 in #5810
    • Lock file maintenance in #5811
    • Update GitHub/codeql-action digest to 303c0ae in #5824
    • Update dependency io.sentry:sentry-android-core to v8.22.0 in #5825
    • Update GitHub/codeql-action digest to 3599b3b in #5830
    • Update hilt to v2.57.2 in #5831
    • Update androidx.compose.* in #5833
    • Update wear.compose to v1.5.2 in #5834
    • Update actions/cache action to v4.3.0 in #5836
    • Lock file maintenance in #5842
    • Update GitHub/codeql-action digest to 64d10c1 in #5862
    • Update dependency org.junit:junit-bom to v5.14.0 in #5865
    • Update dependency org.junit:junit-bom to v6 in #5866
    • Update dependency io.mockk:mockk to v1.14.6 in #5868
    • Update dependency io.sentry:sentry-android-core to v8.23.0 in #5869
    • Update gradle/actions action to v5 in #5870
    • Lock file maintenance in #5874
    • Update plugin dev.panuszewski.typesafe-conventions to v0.8.1 in #5882
    • Update softprops/action-gh-release action to v2.4.0 in #5886
    • Update GitHub/codeql-action digest to e296a93 in #5894
    • Update dependency ruby to v3.4.7 in #5901
    • Update dependency ruby to v3.4.7 in #5907
    • Update dependency com.squareup.okhttp3:okhttp-bom to v5.2.1 in #5913
    • Update dependency com.google.devtools.ksp to v2.2.20-2.0.4 in #5914
    • Update plugin dev.panuszewski.typesafe-conventions to v0.9.0 in #5915
    • Update ruby/setup-ruby action to v1.265.0 in #5916
    • Update androidx.compose.* in #5917
    • Update wear.compose to v1.5.3 in #5918
    • Update dependency com.google.gms.google-services to v4.4.4 in #5924
    • Update GitHub/codeql-action action to v4.30.8 in #5928
    • Update softprops/action-gh-release action to v2.4.1 in #5937
    • Lock file maintenance in #5953
    • Update GitHub/codeql-action action to v4.30.9 in #5955
    • Update dependency com.github.AppDevNext:ChangeLog to v3.8.1 in #5961
    • Update androidx.compose.* in #5966
    • Update dependency io.sentry:sentry-android-core to v8.24.0 in #5968
    • Update org.jetbrains.kotlin.* in #5969
    • Lock file maintenance in #5973
    • Update github/codeql-action action to v4.31.0 in #5977
    • Update GitHub Artifact Actions (major) in #5978

    Thank you, everyone, for the great release!

    You can read the full changelog here

  • HA 2025.11.1 Update

    Well, there’s not much this time around other than a few changes and some bug fixes.

    The notable changes are:

    The breaking changes remain the same as in 2025.11.0:
    Set the assumed state to group if at least one child has an assumed state

    Previously, the group’s assumed state was always false, regardless of the state of its child entities.

    This has now changed:

    The group will now have an assumed state of true if at least one child entity has an assumed state.
    This makes the group’s assumed state reflect the uncertainty of its children more accurately.
    These domains have been added: switch, fan, light, and cover.

    Thanks to: @piitaya – Change on GitHub: #154163

    Asuswrt

    The last_time_reachable attribute has been removed from the asuswrt device tracker.
    Use the last_changed attribute instead in your automations.

    Thanks to: @ollo69 – Change on GitHub: #154219

    LG webOS TV

    The state of LG webOS TV media player entities that do not have an automation trigger to turn on the device will be set to unavailable instead of off.

    Thanks to: @thecode – Change on GitHub: #155164

    Mealie

    The mealie Integration now requires Mealie version 2 or later.

    Mealie version 1 is no longer supported. Version 2 was released in October 2024, so over a year ago.
    Given the differences between versions 1 and 2, we are no longer able to support or test backward compatibility with version 1.

    Thanks to: @andrew-codechimp – Change on GitHub: #153203

    Motion Blinds

    The tilt position of motion_blinds devices have been corrected to align with the Home Assistant standards.
    The new tilt position will be: 0 = closed/covering the window opening, 100 = open/letting light through.

    The previous tilt position can be converted to the new tilt position as follows:

    • new = 100 - old
    • current_tilt_position = 100 -> 0
    • current_tilt_position = 75 -> 25
    • current_tilt_position = 50 -> 50
    • current_tilt_position = 25 -> 75
    • current_tilt_position = 0 -> 100
    • open_cover_tilt -> close_cover_tilt
    • close_cover_tilt -> open_cover_tilt

    Any automations concerning Motion Blinds devices that use the current_tilt_position attribute or use tilt open/close will need to be adjusted.

    Thanks to: @starkillerOG – Change on GitHub: #149777

    Mobile App

    The mobile_app integration, which supports the iPhone and Android companion apps, now handles zone-only updates better.
    When your companion app sends just the zone name (not the exact coordinates), the device tracker will show the zone’s friendly name.

    The person entity now shows the zone’s friendly name (not its object ID) for custom zones. This might break existing automations that trigger on a person’s state.

    As an example, if you have a zone named zone.kids_school with the friendly name School:

    • Before this change, the state of the corresponding person and device_tracker entities would be kids_school when the “Location Sent” in the companion app was set to send “Zone Name Only” and School when it was set to “Exact”.
    • After this change, the state of the corresponding person and device_tracker entities will be School for both the “Location Sent” settings in the companion app.

    Thanks to: @Ashus – Change on GitHub: #149453

    Nederlandse Spoorwegen

    The Nederlandse Spoorwegen entity is now displayed as a timestamp entity, rather than a string. Please adapt your automations and scripts.

    Thanks to: @joostlek – Change on GitHub: #154011

    ONVIF

    The Speed parameter in the ONVIF GoToPreset action is now optional.

    The default of 0.5 is no longer set. If you want to restore the previous behaviour, you have to set speed to 0.5 in your action.

    Thanks to: @carlos-sarmiento – Change on GitHub: #149636

    OralB

    In the OralB integration, states and attributes have changed.

    In multiple places, spaces have been replaced with underscores:

    • Toothbrush state:
      • flight menu → flight_menu
      • selection menu → selection_menu
      • final test → final_test
      • pcb test → pcb_test
    • Brushing mode:
      • daily clean → daily_clean
      • gum care → gum_care
      • tongue cleaning → tongue_cleaning
      • super sensitive → super_sensitive
      • deep clean → deep_clean
    • Pressure:
      • power button pressed → power_button_pressed
      • button pressed → button_pressed
    • Sector:
      • no sector → no_sector
      • sector 1 → sector_1
      • sector 2 → sector_2
      • sector 3 → sector_3
      • sector 4 → sector_4

    Automations should be updated to use the new states and attributes.

    Thanks to: @tr4nt0r – Change on GitHub: #153605

    Renault

    The discovery of Renault functionality was previously based on assumptions that may have created invalid and non-functional entities. These will no longer be created.

    Thanks to: @epenet – Change on GitHub: #154137

    Traccar Server

    The Traccar integration has been updated to use a more secure API Token for authentication.
    This is a required, one-time breaking change to align with Traccar’s security recommendations and ensure the integration continues to work.

    This release migrates the integration away from the older username/password method, ensuring continued stability and security for all users while also allowing users with SSO-based setups to use the integration.

    When you update Home Assistant, the existing Traccar integration will need to be re-authenticated:

    1. Generate an API Token on your Traccar server (you’ll find this option in your Traccar server’s user settings).
    2. Go to Settings > Devices & Services > Traccar Server.
    3. Click “Reconfigure” and enter your new API Token when prompted.

    Once you’ve done this, your Traccar devices and entities will work exactly as they did before.

    Thanks to: @pantherale0 – Change on GitHub: #155297

    Xbox

    The Account tier and Gold tenure sensors have been retired, as they no longer receive updates following the transition from Xbox Live Gold to Xbox Game Pass.
    Additionally, the In party and In multiplayer binary sensors have been removed, since they’ve been non-functional for quite some time.

    Thanks to: @tr4nt0r – Change on GitHub: #154891

    Remember to at least glance through the breaking changes in case one of your automations or scripts relies on one of them.

    Send me a message or comment here if you need any help!

    View the patch notes

    Home Assistant 2025.11 Release Party

    I hope you all have a great day and have fun with Home Assistant!

  • Install Home Assistant Docker/Portainer

    Since Home Assistant now requires you to swap from Supervised to Docker or OS i figured i’d make a quick tutorial on creating a quick Docker tutorial on reinstalling it.

    Backing Up/Downloading Encryption Key

    First, we go to your Settings

    Home Assistant, click settings
    Right Arrow Blue: https://pixabay.com/vectors/arrow-left-pointing-previous-31182/

    Then Backups

    Home Assistant, click Backups

    Before you continue, make sure you have a new backup and download it to your computer so we can upload it later. If you’re using Home Assistant Cloud, you just have to make a new backup and upload it to the cloud if you want to restore from the cloud.

    Click Settings and History

    Home Assistant, click Settings and History
    Right Arrow Blue: https://pixabay.com/vectors/arrow-left-pointing-previous-31182/

    Download your Emergency Kit txt file

    Home Assistant, download Emergency Kit

    We have to make sure you have your emergency kit downloaded so we can use your encryption key when you restore from your backup.

    After the Emergency Kit is downloaded, go back.

    Right Arrow Blue: https://pixabay.com/vectors/arrow-left-pointing-previous-31182/

    Click Show Backups

    Now we go and download your latest backup.

    Click the three vertical dots

    Home Assistant,  download backup
    Right Arrow Blue: https://pixabay.com/vectors/arrow-left-pointing-previous-31182/

    Click on download.

    This will take a while if your backup is large.

    Home Assistant, download backup

    After that’s all done, we can continue on!

    While that is downloading, we should either create your compose file or set up Portainer.

    If you need to set up Docker, check this out!

    Compose File Creation

    Here is the basic Compose file for getting Home Assistant running in Docker.

    *Note* The official docs for installing Home Assistant in a Docker Container includes container_name: homeassistant above the line image: "ghcr.io/home-assistant/home-assistant:stable". Avoid container_name unless you have a specific need (legacy scripts, monitoring tools expecting a fixed name). Rely on the service name and Compose defaults for cleaner, more portable setups.

    services:
      homeassistant:
        image: "ghcr.io/home-assistant/home-assistant:stable"
        volumes:
          - /PATH_TO_YOUR_CONFIG:/config
          - /etc/localtime:/etc/localtime:ro
          - /run/dbus:/run/dbus:ro
        restart: unless-stopped
        privileged: true
        network_mode: host
    YAML

    services is where we tell Docker that we’re creating a container.

    homeassistant is the name of the container when accessed with the Docker command line and other related things like networking, etc..

    image: "ghcr.io/home-assistant/home-assistant:stable" tells Docker Compose that we want the latest stable image of Home Assistant.

    services:
      homeassistant:
        container_name: homeassistant
        image: "ghcr.io/home-assistant/home-assistant:stable"
    YAML

    Changing the config folder path

    Here is where we have to change /PATH_TO_YOUR_CONFIG to where you want to store your Home Assistant configuration files.

        volumes:
          - /PATH_TO_YOUR_CONFIG:/config
    YAML

    We have to create a folder like /home/hassio/home_assistant/ha_config, in my case, hassio is the username of this account. I created a folder home_assistant and then ha_config.

    I created two folders nearly named the same because I want to run some addons as well, so I put the config folder for each addon in home_assistant, then my Home Assistant configuration folder is ha_config.

    All you need to do is SSH into your device with something like Putty or CMD/Terminal. Log in as the user you want to manage the Home Assistant Docker setup with. In my case, it’s hassio. Then, create the folder or folders, as I did for my setup, or create a folder in your user’s home directory and call it good. It’s up to you what you want to do.

    Create a folder with:

    mkdir ha_config
    Bash

    Replacing ha_config with what you want to use, if you use a different name.

    Understanding the Configuration

        volumes:
          - /etc/localtime:/etc/localtime:ro
    YAML

    This line allows Home Assistant to read the time on your computer.
    Assuming it’s been set up already.

        volumes:
          - /run/dbus:/run/dbus:ro
    YAML

    This allows Home Assistant to communicate with the host’s system bus — e.g., to talk to system services (BlueZ Bluetooth, systemd, Avahi, some hardware/service discovery daemons) that expose APIs over D-Bus. Home Assistant uses this to access some integrations that expect a system D-Bus to be available on the host.

        restart: unless-stopped
        privileged: true
        network_mode: host
    YAML

    restart: unless-stopped tells Docker to restart the container automatically if it exits (crashes, is killed, or the daemon restarts).

    privileged: true grants the container nearly every capability the host kernel gives processes — roughly equivalent to giving the container full root-like access to the host.

    network_mode: host makes the container share the host’s network stack. Practically: the container has the host’s IP addresses and network interfaces. It does not get its own isolated network namespace. In this mode, you do not need ports: mappings — the container listens on the host interfaces directly, localhost inside the container == localhost on the host, service discovery via Docker networks (service-name DNS) does not apply for other containers — host networking bypasses those DNS aliases.

    Make sure you save the file, then we can continue!

    Setting up the Container in Portainer

    First, we have to navigate to the Portainer host. If you need help with setting up, check out this post!

    Next, we have to start creating a new container.

    We are going to be using the following details to input into Portainer.

    services:
      homeassistant:
        image: "ghcr.io/home-assistant/home-assistant:stable"
        volumes:
          - /PATH_TO_YOUR_CONFIG:/config
          - /etc/localtime:/etc/localtime:ro
          - /run/dbus:/run/dbus:ro
        restart: unless-stopped
        privileged: true
        network_mode: host
    YAML

    First, we navigate to the containers section and click on Create Container

    Then select New Container on the top right

    You should get a page like this, where we can put the name of the container from line #2 from above.

    Now we click on Advanced

    Paste the URL from the image section, copying between the quotes

    Set the Entrypoint to '/init' and the Logging Driver to json-file

    Set your volumes, copying everything from the volumes section from above. Replace the host /config section and optionally set the /backups folder if you want to set a backup location on your host

    Set your Network to Host

    Set your timezone and, optionally, the PUID and GUID to the user’s home folder that you’re putting the files in, so you don’t run into any folder/file permission issues

    Set your Restart Policy

    Here we set the Privileged Mode, and any Devices that you need to mount. Optionally, but recommended, set the Resources to a max of what I have set here.
    I have 5.840 Entities, 4,297 Sensors, 160 Integrations, and 103 Automations. I have no issues running Home Assistant with these restrictions.

    Now we can click Deploy to download the image and start the container!

    Check the logs of the container with the logs button:

    You will now see the current logs of Home Assistant, and it will tell you if anything is wrong. You can set the log’s lines higher if you need to and make sure to turn off auto refresh if you need to read anything, as it refreshes every few seconds, so you can see the latest entries. Don’t mind the red as one of my sensors in complaining.

    You should now be all set to use Home Assistant!

    Starting the Container with Docker Compose

    Now we should be ready to start up Home Assistant for the first time!

    All you need to do to start the container is type:

    # run with sudo if your user isn't a part of the docker group
    # change the .yaml file to the one that you created
    docker compose compose.yaml up -d
    Bash

    We can check the logs of Home Assistant with:

    # run with sudo if your user isn't a part of the docker group
    # replace homeassistant with the name of the service that you set in the compose file from before
    docker compose -f homeassistant
    Bash

    Assuming everything went well, you should be ready to configure Home Assistant itself!

    Here is a quick cheat sheet for Docker Compose!

    # remember to add sudo if your user isn't a part of the docker group!
    # bring up all services in foreground (attach)
    docker compose up
    
    # bring up in background (detached)
    docker compose up -d
    
    # rebuild images then up
    docker compose up -d --build
    
    # stop services (but keep containers)
    docker compose stop
    
    # start stopped services (existing containers)
    docker compose start
    
    # restart services
    docker compose restart
    
    # show running compose containers for the project
    docker compose ps
    
    # show logs (follow)
    docker compose logs -f
    # logs for a single service:
    docker compose logs -f web
    
    # execute a shell in a running container
    docker compose exec web /bin/bash
    # or if you need tty:
    docker compose exec -T web /bin/bash
    
    # run a one-off command (creates a temporary container using service definition)
    docker compose run --rm web bash
    
    # bring everything down (stop + remove containers, networks)
    docker compose down
    
    # remove stopped containers, networks, images not used by any service
    docker compose down --rmi all --volumes --remove-orphans
    
    # build images only
    docker compose build
    
    # pull images only
    docker compose pull
    Bash

    Have fun with the greatest home automation platform in the world(in my opinion)!

    If you need any support, feel free to leave a comment or message me on one of my socials! Just make sure to keep it relevant as I get a lot of scam messages and I don’t have a lot of time to waste on spam lol.

    I hope you have fun and have a great day!