Installing Home Assistant Supervised on Raspberry Pi OS

:warning:

This guide is now deprecated and will no longer be updated or maintained. It is highly recommended to follow the Debian 10 guide HERE to have a supported Supervised install on your Pi.

Continued changes being made to Home Assistant Supervised make the continued use of Raspberry Pi OS at your own risk and it may fail to work at any time. Please do not post for support if you face an issue with being ‘Unsupported’, ‘Unhealthy’ or can not update HA.

:warning:

Installing Home Assistant Supervised on Raspberry Pi OS

This guide will help you to install Home Assistant Supervised on a Raspberry Pi. This guide has been tested on a Raspberry Pi 3b+ and Raspberry Pi 4 4gb, and should also work for other Raspberry Pi’s.

:warning: Please keep in mind that currently this installation method is not officially supported by the Home Assistant team, and therefore you are responsible for updating and managing updates and security on the base OS, no official support will be offered. This install method may cease to work at any time, so use at your own risk. If you would like to run an officially supported Supervised install on your Pi, please see this guide using Debian 10 as the OS.

In this guide, you will be using Raspberry Pi OS (formally named Raspbian) as the operating system. This type of installation is what is called “headless” and after the installation is complete, you will not need to have a keyboard, mouse or monitor attached (although you can if you prefer). You will manage and update the machine via terminal commands.

What is Home Assistant Supervised?

Home Assistant is a full UI managed home automation ecosystem that runs Home Assistant Core, the Home Assistant Supervisor and add-ons. It comes pre-installed on Home Assistant OS, but can be installed on any Linux system. It leverages Docker, which is managed by the Home Assistant Supervisor plus the added benefit of dozens of add-ons (think app store) that work natively inside the Home Assistant environment.

If you are new to Home Assistant, you can now proceed to Step 1. If you have an existing Home Assistant installation and need to know how to back up your current configuration, please see the document Backing up and Restoring your configuration located HERE

Section 1 – Install Raspberry Pi OS

1.1) Start by downloading Raspberry Pi OS (32-bit) Lite from HERE (torrent link)

1.2) While this is downloading, you will need to format the SD card you wish to use in your Pi. For this installation, you should use an SD card with at least 16gb capacity (32gb is recommended), and one that is rated as Class 10, A1 or A2. If you haven’t yet purchased an SD, or would like some excellent information on SD cards, this YouTube video is worth watching. Explaining Computers - SD Card Benchmarks.

Insert the SD card into your computer and format it. You can do this using the Windows format tool, or a program such as HP format tool available from HERE.

1.3) Once the Raspberry Pi OS download has finished, you will write the image to an SD card using software called balenaEtcher, available HERE. Insert the SD card into your PC and launch Etcher.

Click Select Image and navigate to the location you saved the Raspberry Pi OS image (named something like 2020-05-27-raspios-buster-lite-armhf.zip), Click Select Target and then choose your SD card, and then click Flash. Depending on the speed of your SD card this process can take between 2 and 20 minutes to complete.

1.4) When Etcher has finished writing Raspberry Pi OS to your SD card, you will need to remove the SD from your computer, and then re-insert it. Once your PC has recognized the SD card, you will navigate to My Computer/This PC and you will see a new drive named boot listed. Make a note of the drive letter, eg. D:

1.5) Next you will now create an SSH file so that when you first boot the Pi, you can connect to it from your PC via SSH using a program called PuTTY.

To create the SSH file, press the Windows Key on your keyboard plus the R key (Windows Key + R). This will open a prompt called RUN. In the box type in cmd and press Enter. Alternatively, if you are running Windows 10 you can simply type cmd into the search box and select Command Prompt from the menu.

You should now have a terminal window open that will show something like C:\Users\YourName. In this window, type in the drive letter of the SD card you noted from Step 1.4 and a colon. It should look like this D: then press enter. Next you will copy and paste in this command and press enter.

type nul > ssh

You have now created the SSH file on your SD card and can now safely eject and remove the SD from your PC.

1.6.) Insert the SD card into your Pi, connect an Ethernet cable so the Pi will have a network connection and then the power cord. Wait approx. 2-3 mins, then you can move onto Step 1.7.

WiFi is never a recommended option when running any sort of server or automation environment like Home Assistant, so this guide will not cover how to use WiFi.

1.7.) You will now connect via SSH to run commands on the Pi from your PC. Check your router for the IP address of your Pi.

To connect to your Pi via SSH you will use a piece of software called PuTTY, available HERE. Putty is a free and open-source terminal emulator, serial console and network file transfer application. You will use Putty to execute commands on the Ubuntu machine from your Windows PC. (Use Terminal on a Mac).

Open Putty and in the HOST NAME (OR IP ADDRESS) box, enter the IP of your Pi, then select OPEN. You will now be prompted to enter your username and password. The default username is pi and the default password is raspberry.

Next you will run the Raspberry Pi Configuration utility. Copy and paste this into the Putty/terminal window

sudo raspi-config

1.8) Firstly, select Option 1 and press to Enter to change the default password. Type a new password when prompted and press Enter. This new password will be what you use to log into the Pi in the future, so make a note of it.

1.9) Next using your arrow keys, select Option 4 and press Enter and then select Change Timezone and press enter. Using the arrow keys, select your Geographical area, press Enter, and then select your City/Region from the provided list and press Enter.

1.10) Next you will select Option 7 Advanced Options, and then select Option A1 – expand file system, and press Enter. Once this has been completed, you can use the arrow keys to navigate to Finish. When you are asked if you would like to reboot, select Yes. The Pi will now reboot. Wait approx. 2 mins, then move onto Step 1.11.

1.11) Next you will now update your Pi to ensure it has the latest OS and security updates that are available. You will need to reconnect via SSH using Putty as you did earlier, and log in using the username pi and the new password you created in Step 1.8. Once logged in, copy and paste this command and press Enter.

sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y

Depending on your network connection, this could take anywhere from 1 to 20 minutes, so be patient. When it has completed, you can reboot the Pi using this command.

sudo reboot

Section 2 – Install Home Assistant Supervised

Now that you have Raspberry Pi OS installed, you can move on to installing Home Assistant Supervised. Connect to you Pi using Putty as you have previously using the IP of the Pi, the user name pi and the password you set in Step 1.8.

2.1) Copy each line of the below commands one at a time and paste them into the Putty window, and press ENTER. One of the following commands will execute a shell script as root, and some people may be concerned with the security risk. If you would like to read the script for piece of mind, click HERE

sudo -i

apt-get install -y software-properties-common apparmor-utils apt-transport-https ca-certificates curl dbus jq network-manager

systemctl disable ModemManager

systemctl stop ModemManager

curl -fsSL get.docker.com | sh

curl -sL "https://raw.githubusercontent.com/Kanga-Who/home-assistant/master/supervised-installer.sh" | bash -s -- -m raspberrypi3

If you are using a Raspberry Pi 4, then replace raspberrypi3 with raspberrypi4 at the end of the last command.

2.2) On a Raspberry Pi 3 the installation time is approx 15 mins, however it can take longer so be patient. You can check the progress of Home Assistant setup by connecting to the IP address of your machine in Chrome/Firefox on port 8123. (e.g. http://192.168.1.150:8123)

Once you can see the login screen, the setup has been completed and you can set up an account name and password. If you are new to Home Assistant you can now configure any smart devices that Home Assistant has automatically discovered on your network. If you have an existing Home Assistant install and you have a snapshot or YAML files you wish to restore, refer to the document Backing up and Restoring your configuration.

That’s it, you have now installed Home Assistant Supervised on your Raspberry Pi and have SSH access to keep it up to date. It is recommended that you log into the Pi using Putty at least once a month and use the following command to download security patches and keep the OS up to date.

sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y

Along with this guide, there is also associated documents available. These are essentially guides I use myself.

I welcome feedback on this guide, please feel free to tag me or PM if you have suggestions on how to make improvements.

Thank you to nickrout for testing, feedback and edits to help improve this guide.

:exclamation: This guide has also been tested using a USB SSD as the boot drive. You can replace the SD card with an SSD+USB enclosure but your success with this may vary, and using an SSD has not been covered as part of this guide, and no support will be offered. To see a list of adapters known to be working on a Raspberry Pi 3 and 4, click HERE:exclamation:

47 Likes

Cool!
Thank you for these explanations for the supervised version. I had done everything right until Section 2. I will redo a clean installation and apply this installation as indicated. Thank you.
but I didn’t know that only Hassio was official. Thank you also for this information.
So, if I may, my Hassio installation works fine on everything that has been detected and that I have configured. But I can’t get SSH or SAMBA to work !!! They install but do not start and if I touch the configuration, SAVE gives me errors. I do not have access to the Raspi-config on Hassio.

And for info, the update 4.8 have work well and i lost nothing but have change nothing about SSH, SAMBA…
and it had been saved/bacuped before and after update.

Thank you very, very much! Created an account just to say this.

As a new user playing around with the official OS I decided I did not want to give up my say over the Pi after all. Not being able to use Argon One case was the straw that broke the camel’s back.

Finally with your instructions I managed to do this install painlessly on a Raspberry Pi 4.

The official documentation that is linked to everywhere has apparently removed the instructions, even though the abandonment of support for this type of install is on hold, as per the blog.

I’ve been pulling my hair out over this for days and then I found this post.

2 Likes

Thanks :slight_smile: glad it was able to help you.

2 Likes

Worked flawlessly, thanks! Really appreciate the time you took to write the guide.

1 Like

Thank you for this guide.
Is there a way to install an older version of Home Assistant Supervised using this script?

I believe that apparmour is not compiled into the kernel for Raspbian / Raspberry Pi OS (certainly wasn’t on last image) so although apparmor will install, it will not run. This can cause issues as Supervisor only checks it is installed, not if it is enabled.

@kanga_who, It will be better to advise not to install the package.

pi@hassio:~ $ sudo apparmor_status
apparmor module is not loaded.
pi@hassio:~ $ aa-enabled
No - not available on this system.

I modified the file /usr/sbin/hassio-apparmor and suggested this as an amendment

# Read configs
DATA="$(jq --raw-output '.data // "/usr/share/hassio"' ${CONFIG_FILE})"
PROFILES_DIR="${DATA}/apparmor"
CACHE_DIR="${PROFILES_DIR}/cache"
REMOVE_DIR="${PROFILES_DIR}/remove"

# Exists AppArmor
if ! command -v apparmor_parser > /dev/null 2>&1; then
    echo "[Warning]: No apparmor_parser on host system!"
    exit 0
fi

# Available for use
if ! aa-enabled --quiet 2>/dev/null; then
    echo "[Warning]: apparmor not available on host system!"
    exit 0
fi

so I now get

pi@hassio:~ $ systemctl status hassio-apparmor.service
● hassio-apparmor.service - Hass.io AppArmor
   Loaded: loaded (/etc/systemd/system/hassio-apparmor.service; enabled; vendor preset: enabled)
   Active: active (exited) since Sat 2020-06-06 22:43:48 BST; 1 day 22h ago
  Process: 2256 ExecStart=/usr/sbin/hassio-apparmor (code=exited, status=0/SUCCESS)
 Main PID: 2256 (code=exited, status=0/SUCCESS)

Jun 06 22:43:48 hassio systemd[1]: Starting Hass.io AppArmor...
Jun 06 22:43:48 hassio hassio-apparmor[2256]: [Warning]: apparmor not available on host system!
Jun 06 22:43:48 hassio systemd[1]: Started Hass.io AppArmor.

I only discovered this when tracking down an error in the logs.

I have not uninstalled apparmor as Supervisor installs things on the basis it is there and I don’t want to break the setup.

Woof, this took me down a rabbit hole. So your changes do get rid of the error but they don’t solve the issue of not having AppArmor. This concerns me so I’m hoping to find some instructions on that.

I tracked down this long-running PR where the author tried to add full AppArmor support. I think the options file in their PR is out of date though as some of the options they’re trying to add I see are already turned on in my kernel.

RPI publishes instructions for rebuilding your kernel so I’m half-tempted to rebuild with the options suggested turned on. But I have literally zero experience mucking around in the kernel so I’m extremely hesitant to do so.

@kanga_who have you ever tried to turn on apparmor in this kind of install? Or if anyone has come across a guide to do so I would greatly appreciate it. Or just a guide for “here’s how you can tweak your kernel but be very confident you will be able to restore to a working state after if you totally mess it up”. Sadly the RPI guide seems to skip the part about how to take and restore a kernel backup. I want AppArmor but I want a non-bricked Pi more haha.

I tested these exact instructions 3 times from start to finish on a Pi3 while writing them to make sure they worked, I had no issues.

Oh sorry I wasn’t saying your instructions didn’t work. I’m sure they do, in fact I think I followed your guide to get setup a while ago.

What I was commenting on is @baz123’s point that AppArmor is installed but not actually running. That doesn’t stop HA from working but it does mean that your system is not as secure as it should be. When I run those commands to check for apparmor I see the same output:

pi@hassio:~ $ sudo apparmor_status
apparmor module is not loaded.
pi@hassio:~ $ aa-enabled
No - not available on this system.

And when I do a docker info it complains that limits are not in place:

pi@hassio:~ $ sudo docker info
....
WARNING: No swap limit support
WARNING: No cpu cfs quota support
WARNING: No cpu cfs period support

Again, just to clarify, not saying your guide doesn’t get HA running just trying to figure out if there’s a way to get it running more securely.

Unless you don’t see these errors? In which case perhaps I’m missing something and should comb back through your guide.

Way way back… I used a script on here by Dale3h to install hassio (as it then was) on a RPi over Raspbian Lite.
It will be out-of-date now (pointing to the wrong repo for the install) but if you look for that and fork it to correct the repo used I’m sure it will still work.
I have not seen the errors you show above but maybe I wasn’t really looking for them and certainly had much less experience than I do now.

Hm I think I’m still confusing things again. Sorry I feel like I’m distracting from this thread at this point so I’ll wrap it up quick.

  1. My Home Assistant is running fine. I am currently the proud owner of an HA Supervised install on Raspberry Pi OS on an RPi4 with everything on a USB-SSD drive. I was able to run through a script similar to this one without issue months ago and it has been going strong since.
  2. baz123’s post alerted me to the fact that apparmor being installed and apparmor running and working are two different things. As he noticed, the guide recommends installing apparmor (which I did) but apparently just installing apparmor does not mean it is running and protecting your system the way it is supposed to. I was blissfully unaware of this fact for months but now that I am I am seeking to do something about it.

The errors btw are not ones you see in the HA logs, the supervisor logs, or even the docker logs, you have to go looking for them on the host system (hence why I never noticed until now). Try running the commands sudo apparmor_status and aa-enabled if you’re running on an RPi. To my understanding from reading up on it the RPi OS kernel does not come with apparmor enabled and so unless you rebuilt your kernel to specifically enable them you’ll see the same output I am.

Anyway that’s it. And to be totally clear, I don’t want to give anyone the impression this guide does not work. My HA is very much running. Just looking for some advice on further securing it.

Stock ubuntu 20.04 on RbPi 4 :

> sudo apparmor_status
apparmor module is loaded.
16 profiles are loaded.
16 profiles are in enforce mode.
   /usr/bin/man
   /usr/lib/NetworkManager/nm-dhcp-client.action
   /usr/lib/NetworkManager/nm-dhcp-helper
   /usr/lib/connman/scripts/dhclient-script
   /usr/sbin/tcpdump
   /{,usr/}sbin/dhclient
   docker-default
   hassio-supervisor
   hassio-supervisor///usr/bin/gdbus
   hassio-supervisor///usr/bin/git
   hassio-supervisor///usr/bin/socat
   lsb_release
   man_filter
   man_groff
   nvidia_modprobe
   nvidia_modprobe//kmod
0 profiles are in complain mode.
49 processes have profiles defined.
49 processes are in enforce mode.
   /portainer (1552) docker-default
   /usr/bin/s6-svscan (2383) docker-default
   /usr/bin/foreground (2468) docker-default
   /usr/bin/s6-supervise (2469) docker-default
   /usr/bin/foreground (2481) docker-default
   /usr/bin/coredns (2614) docker-default
   /usr/bin/s6-svscan (3037) docker-default
   /usr/bin/foreground (3182) docker-default
   /usr/bin/s6-supervise (3183) docker-default
   /usr/bin/foreground (3195) docker-default
   /usr/bin/busybox (3331) docker-default
   /usr/bin/s6-svscan (3366) docker-default
   /usr/bin/s6-supervise (3405) docker-default
   /usr/bin/s6-supervise (3548) docker-default
   /usr/bin/mdns-repeater (3550) docker-default
   /usr/sbin/docker-init (3620) docker-default
   /usr/bin/s6-svscan (3674) docker-default
   /usr/bin/s6-supervise (3700) docker-default
   /usr/sbin/docker-init (3795) docker-default
   /usr/bin/s6-svscan (3984) docker-default
   /usr/bin/foreground (4009) docker-default
   /usr/bin/s6-supervise (4010) docker-default
   /usr/bin/foreground (4021) docker-default
   /usr/bin/bash (4162) docker-default
   /usr/bin/s6-svscan (4277) docker-default
   /usr/bin/s6-supervise (4550) docker-default
   /usr/bin/s6-supervise (4717) docker-default
   /usr/bin/s6-supervise (4719) docker-default
   /usr/bin/s6-supervise (4721) docker-default
   /usr/sbin/nginx (4724) docker-default
   /usr/sbin/grafana-server (4726) docker-default
   /usr/bin/memcached (4728) docker-default
   /usr/bin/s6-supervise (5246) docker-default
   /usr/bin/s6-supervise (5247) docker-default
   /usr/bin/s6-supervise (5248) docker-default
   /usr/bin/s6-supervise (5249) docker-default
   /usr/bin/influxd (5251) docker-default
   /usr/sbin/nginx (5252) docker-default
   /usr/bin/kapacitord (5253) docker-default
   /usr/bin/chronograf (5255) docker-default
   /usr/sbin/nginx (5491) docker-default
   /usr/sbin/nginx (6322) docker-default
   /usr/bin/s6-svscan (6383) docker-default
   /usr/bin/s6-supervise (6463) docker-default
   /usr/bin/s6-supervise (6604) docker-default
   /usr/bin/python3.8 (6606) docker-default
   /usr/sbin/docker-init (6686) docker-default
   /usr/bin/python3.8 (6742) docker-default
   /usr/bin/busybox (73958) docker-default
0 processes are in complain mode.
0 processes are unconfined but have a profile defined.

On my RbPi 2, running dietpi :

> sudo apparmor_status
apparmor module is not loaded.

So it seems raspbian does not include app-armor in the kernel (dietpi is just raspbian with some extra scripts), while ubuntu does. I just installed ubuntu 64 bit on my RbPi 4 since it has 8 Gb, and Raspberry Pi OS only has an experimental 64bit kernel you have to install manually.

1 Like

I’m not saying they don’t work, just you don’t end up with what you think you have i.e. a system that is using apparmor.

HA can’t use apparmor as it is not part of the Raspbian kernel.

https://www.raspberrypi.org/forums/viewtopic.php?t=257495

I did raise an issue on this - https://github.com/home-assistant/supervisor/issues/1679

Yes - exactly. I also suggested a note be added in the documentation (before all the depreciated nonsense).

Well I went for it, made a custom kernel that included apparmor. I used the two github posts linked above and basically recompiled with all the flags they suggested. So in total I added the following options:

CONFIG_MEMCG_SWAP=y
CONFIG_MEMCG_SWAP_ENABLED=y
CONFIG_MEMCG_KMEM=y
CONFIG_CGROUP_PIDS=y
CONFIG_CGROUP_PERF=y
CONFIG_CGROUP_NET_PRIO=y
CONFIG_CFS_BANDWIDTH=y
CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
CONFIG_SECCOMP_FILTER=y
CONFIG_SECURITY=y
CONFIG_SECURITYFS=y
CONFIG_SECURITY_NETWORK=y
CONFIG_SECURITY_PATH=y
CONFIG_SECURITY_APPARMOR=y
CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1
CONFIG_SECURITY_APPARMOR_HASH=y
CONFIG_DEFAULT_SECURITY_APPARMOR=y
CONFIG_INTEGRITY=y
CONFIG_INTEGRITY_AUDIT=y

Then followed this guide for rebuilding with those options and rebooted. HA came back up fine and now I see this in my terminal:

pi@hassio:~ $ aa-enabled
Yes
pi@hassio:~ $ sudo apparmor_status
apparmor module is loaded.
12 profiles are loaded.
12 profiles are in enforce mode.
   /usr/bin/man
   /usr/lib/arm-linux-gnueabihf/lightdm/lightdm-guest-session
   /usr/lib/arm-linux-gnueabihf/lightdm/lightdm-guest-session//chromium
   docker-default
   hassio-supervisor
   hassio-supervisor///usr/bin/gdbus
   hassio-supervisor///usr/bin/git
   hassio-supervisor///usr/bin/socat
   man_filter
   man_groff
   nvidia_modprobe
   nvidia_modprobe//kmod
0 profiles are in complain mode.
102 processes have profiles defined.
102 processes are in enforce mode.
   /bin/s6-svscan (2281) docker-default
   /bin/foreground (2400) docker-default
   /bin/s6-supervise (2401) docker-default
   /bin/foreground (2412) docker-default
   /usr/bin/coredns (2545) docker-default
   /bin/s6-svscan (3044) docker-default
   /bin/foreground (3249) docker-default
   /bin/s6-supervise (3250) docker-default
   /bin/foreground (3261) docker-default
   /bin/busybox (3395) docker-default
   /bin/s6-svscan (3428) docker-default
   /bin/s6-supervise (3467) docker-default
   /bin/s6-supervise (3616) docker-default
   /usr/bin/mdns-repeater (3618) docker-default
   /sbin/docker-init (3730) docker-default
   /bin/bash (3806) docker-default
   /bin/s6-svscan (3866) docker-default
   /bin/s6-supervise (3995) docker-default
   /usr/bin/socat (4104) docker-default
   /usr/sbin/mosquitto (4107) docker-default
   /bin/s6-supervise (4156) docker-default
   /bin/bash (4160) docker-default
   /bin/busybox (4225) docker-default
   /sbin/docker-init (4300) docker-default
   /usr/bin/mysqld (4437) docker-default
   /bin/s6-svscan (4543) docker-default
   /bin/s6-supervise (4570) docker-default
   /sbin/docker-init (5162) docker-default
   /bin/s6-svscan (5248) docker-default
   /bin/foreground (5276) docker-default
   /bin/s6-supervise (5277) docker-default
   /bin/foreground (5288) docker-default
   /bin/bash (5444) docker-default
   /bin/s6-svscan (5484) docker-default
   /usr/lib/nut/usbhid-ups (5603) docker-default
   /bin/s6-supervise (5640) docker-default
   /bin/s6-supervise (5830) docker-default
   /bin/s6-supervise (5831) docker-default
   /usr/sbin/upsd (5833) docker-default
   /usr/sbin/upsmon (5844) docker-default
   /bin/s6-svscan (5890) docker-default
   /usr/bin/node (5943) docker-default
   /bin/s6-supervise (5961) docker-default
   /bin/s6-svscan (6234) docker-default
   /usr/bin/node (6408) docker-default
   /bin/s6-supervise (6444) docker-default
   /bin/s6-svscan (7112) docker-default
   /bin/s6-supervise (7176) docker-default
   /opt/portainer/portainer (7179) docker-default
   /bin/s6-supervise (7490) docker-default
   /bin/s6-supervise (7492) docker-default
   /opt/bitwarden_rs (7495) docker-default
   /usr/sbin/nginx (7496) docker-default
   /bin/s6-supervise (7583) docker-default
   /sbin/docker-init (7952) docker-default
   /usr/sbin/nginx (7969) docker-default
   /usr/bin/node (7973) docker-default
   /bin/dash (8199) docker-default
   /usr/local/bin/node (8211) docker-default
   /bin/s6-supervise (8349) docker-default
   /bin/s6-supervise (8350) docker-default
   /bin/s6-supervise (8351) docker-default
   /bin/s6-supervise (8352) docker-default
   /usr/sbin/nginx (8353) docker-default
   /usr/bin/chronograf (8355) docker-default
   /usr/bin/influxd (8358) docker-default
   /usr/bin/kapacitord (8360) docker-default
   /bin/s6-supervise (8484) docker-default
   /bin/s6-supervise (8485) docker-default
   /opt/AdGuardHome/AdGuardHome (8487) docker-default
   /usr/sbin/nginx (8489) docker-default
   /bin/dash (8569) docker-default
   /usr/sbin/nginx (8623) docker-default
   /usr/local/bin/node (8821) docker-default
   /usr/local/bin/node (9203) docker-default
   /usr/local/bin/node (9231) docker-default
   /usr/sbin/nginx (9866) docker-default
   /sbin/docker-init (9979) docker-default
   /usr/bin/python3.8 (10086) docker-default
   /bin/s6-svscan (10471) docker-default
   /bin/s6-supervise (10616) docker-default
   /bin/s6-svscan (10974) docker-default
   /bin/s6-supervise (11175) docker-default
   /sbin/docker-init (11479) docker-default
   /usr/share/dotnet/dotnet (11644) docker-default
   /bin/s6-supervise (12029) docker-default
   /bin/s6-supervise (12030) docker-default
   /usr/bin/node (12032) docker-default
   /usr/sbin/nginx (12033) docker-default
   /bin/s6-supervise (12313) docker-default
   /bin/s6-supervise (12314) docker-default
   /bin/s6-supervise (12316) docker-default
   /bin/bash (12321) docker-default
   /bin/busybox (12354) docker-default
   /usr/bin/wireguard-go (12416) docker-default
   /usr/sbin/nginx (12572) docker-default
   /usr/sbin/nginx (12573) docker-default
   /usr/sbin/nginx (12574) docker-default
   /usr/sbin/nginx (12575) docker-default
   /usr/sbin/nginx (12576) docker-default
   /bin/bash (12888) docker-default
   /bin/busybox (12893) docker-default
0 processes are in complain mode.
0 processes are unconfined but have a profile defined.

And when I do docker info I no longer have any warnings :+1:

1 Like

These instructions worked great for my new install on my first RPI4. except it took over 30 minutes for the docker scripts to install.

One question: how do I update the Home Assistant when the ‘updater’ badge has a CHECK mark and there is a newer version then my Developer Tools- Info tab indicates. ?

Great tutorial everything worked great accept getting

curl -fsSL get.docker.com | sh

to resolve on WiFi but it’s fixable.

Try to ping google.com see if it resolves if it doesn’t then you can continue!

sudo -i

if you don’t want to type sudo in front of commands!

You need to edit your dhcp.conf

sudo nano /etc/dhcpcd.conf

Then set this line to:

static domain_name_servers=1.1.1.1 1.0.0.1

With these changes now made to the /etc/dhcpcd.conf the file you can now save it by pressing the following keys CTRL + X, then Y and finally ENTER.

We need to restart the DHCP server

sudo service dhcpcd restart

You should now be able to ping google.com successfully!

Now you should be able to run the docker request! I hope this helps the community! :slight_smile:

The only reason I needed WiFi is because I don’t have ethernet available around the hub right now. I would recommend going with hard-wired if possible!

1 Like

One question: how do I update the Home Assistant when the ‘updater’ badge has a CHECK mark and there is a newer version then my Developer Tools- Info tab indicates. ?

Not sure if I completely understand the question? If you’re talking about in the supervisor > Update Available box you should see a button in the bottom left that says install. Make sure you do a snapshot first! Hopefully, this helps :slight_smile:

super tutorial … but since this method of HA is not officially supported, in the future how supervisor will be supported in the Pi using an SSD? Will there be an image that can boot up from an external source?

On a Pi3, you can boot a home assistant OS from SSD. The other option is to install debian instead of Raspberry OS.