Skip to content

Instantly share code, notes, and snippets.

@Impact123
Last active May 9, 2026 10:32
Show Gist options
  • Select an option

  • Save Impact123/fb086b391f7d14cb3515144fcbe4785e to your computer and use it in GitHub Desktop.

Select an option

Save Impact123/fb086b391f7d14cb3515144fcbe4785e to your computer and use it in GitHub Desktop.
Check Space

How to check HAOS space usage

The goal of this Article is to teach you how to find out what takes how much space on your HAOS system.
At the end of this article you should have an interactive way to explore your storage similar to this.
Animation

To check the recorder database size/stats I recommend the DBStats app/container.

Table of contents

Background

First some background to understand how HAOS and its storage works.
Almost everything is run in docker containers. Every App (formerly known as Addon), even HA itself or the supervisor are docker containers.
Some paths on the OS are bind mounted into those containers so multiple apps can have access to the same files and to persist data. Containers are considered ephemeral/replaceable. Here's some examples of paths that might be shared and where they originate

Path on OS Path in container/app
/mnt/data/supervisor/share/ /share
/mnt/data/supervisor/homeassistant /config or /homeassistant
/mnt/data/supervisor/backup /backup

What this means is that apps don't have access to everything on the OS side so if you want to check what takes space on there you have to use some tricks.

HAOS architecture diagram. Source for picture. unknown

For SSH App. Limited access to files

As explained above, apps can only see certain things but this might be all you need.
You can use either the Core SSH App or the Advanced SSH App. I'd recommend the latter as it has more features. You need it for the extended steps below anyways.

Run this to install and start gdu.

apk add gdu

# Use this if you want to ignore shares/mounts
gdu --show-mtime --show-item-count --no-unicode --ignore-dirs /share /

# Otherwise use this
gdu --show-mtime --show-item-count --no-unicode /

You can press m (toggle file modification dates), c (toggle file counts) and i (toggle item info) and look around with the arrow keys.
Press ? for shortcuts, q to close modals. Ask someone you trust before deleting anything if you're unsure ๐Ÿ˜‰

Full access to files

As explained in the introduction this requires OS level access. To achieve this we bind mount the root / path of the OS into the /host path of a temporary docker container.
This is made possible by using the Advanced SSH App with disabled protection mode.
To make it harder to accidentely delete anything the commands use :ro to mount the path read only.

You need the Advanced SSH App with disabled protection mode (restart it after disabling it) to get access to the docker command.
image

You can then run one of these docker commands

# We ignore /var/lib/docker because it's the same as /mnt/data/docker (bind mount) and would be counted twice otherwise

# Use this if you want to ignore shares/mounts
docker run --rm -ti -v /:/host:ro alpine sh -c "apk add gdu; gdu --show-mtime --show-item-count --no-unicode --ignore-dirs /host/var/lib/docker --ignore-dirs /host/mnt/data/supervisor/share --ignore-dirs /host/mnt/data/supervisor/mounts /host"

# Otherwise use this
docker run --rm -ti -v /:/host:ro alpine sh -c "apk add gdu; gdu --show-mtime --show-item-count --no-unicode --ignore-dirs /host/var/lib/docker /host"

You can press m (toggle file modification dates), c (toggle file counts) and i (toggle item info) and look around with the arrow keys.
Press ? for shortcuts, q to close modals. Ask someone you trust before deleting anything if you're unsure ๐Ÿ˜‰

If you get a Unsupported system - Unsupported software notification don't worry. The temporary container created as part of this process is automatically removed when it is stopped due to the --rm flag. If the warning doesn't go away on its own after a day or so running ha supervisor repair and then ha host reboot should help.

Universal way

This is a very simple and universal way using standard linux tools that works for apps and OS alike. I only recommend this if you are unable to use the other ways. For example due to too little space or lack of network connectivity.
It's a more rudimentary non-interactive option which you likely don't want to use any more once you've used the interactive one above.
The paths are different (see introduction for why) depending on if you use an app or not. Don't panic, this can take a few seconds to return anything depending on how fast your system/storage is.

du -shc /* | sort -h
# Go deeper
du -shc /bigdirectory/* | sort -h
# And so on...
du -shc /bigdirectory/.../* | sort -h

A note about docker/addon/app bloat

Since version 17 HAOS uses the containerd storage/snapshotter. It tends to use more space.

You can see the size of your docker images and such like this

docker system df -v

Note than Containers space usage does not count the bind mounted data which is what basically all HAOS containers use.

You can prune unused data like this

docker system prune -a

This should be save but take backups first.

Alternatively, do a supervisor repair and reboot. It does something similar

ha supervisor repair
ha host reboot
@haldi4803
Copy link
Copy Markdown

Screenshot_20260216-190331_Home Assistant

There is now a built in Cake diagram that shows exactly how much space is used by which addon!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment