Hassos - flexibility

I’m considering switching to hassos (from Ubuntu with docker) in the hopes of better reliability (I had downtime a few times when upgrading).

Question: Presently hassio shares a NUC with a few other apps. All docker containers. Some custom, but most from a repo and maintained by others. Is it possible to run these containers under hassos, preferably with docker-compose?

Apparently hassio addons are docker containers. Would the right thing to do be converting all containers to hassio addons? But would this even work, e.g. for the dropbox (https://valh.io/blog/Dockerize-Dropbox-on-Linux.html) and traefik (image: traefik:alpine) containers?

Why would HassOS have better reliability?

No. HassOS doesn’t include docker compose and you can’t install anything on the host OS. In fact you’re really limiting yourself if you switch to HassOS.

Correct. Hassio is nothing more than a couple of docker containers one of which can manage docker for you, and add-ons are simply other docker containers the supervisor is managing.

Depends on what you want. You can use the portainer add-on and run individual docker containers outside of hassio.

You should actually look at what your reliability issues are and explain why you think HassOS is really going to benefit you.

My setup (hassio in docker on nuc) was running without hiccup for 4 month. Then I was updating. First HA, then, one by one the addons. Everything still working.

Next I updated Ubuntu packages. For that I had to reboot.

Hassio was no longer starting. Not knowing what to do (and needing the system running again), I reinstalled hassio. Now the hassio-supervisor.service was restarting every few seconds. Nothing was written to the homeassistant log.

Ultimately I renamed the configuration. Now hassio started from scratch (new user, etc) and I could reinstall from a backup (surprisingly that worked without changes to the configuration).

Differences:

  1. The configuration is now at /root/snap/docker/common/hassio. Before it was at /usr/share/hassio. Unfortunately the new folder is readable only as root.
  2. Some addons (e.g. log viewer and visual studio code) are no longer working (fails with nginx: [emerg] open() "/proc/1/fd/1" failed (13: Permission denied). Apparently that’s because my system now is not running the correct version of docker. Not sure why this is, as before the upgrade it was working. Perhaps updating the Ubuntu packages changed the docker (reinstalling docker per Be sure to install the official Docker-CE from the above listed URL did not help).
  3. Samba is no longer working.
  4. The configuration checker no longer works (prints the same warning endlessly):
[15:41:36] INFO: Please be patient, this might take a few minutes...
  WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7fbb3fb81610>: Failed to establish a new connection: [Errno -3] Try again')': /simple/homeassistant/

All of these issues are doubtlessly due me making mistakes in the upgrade process. But, after all, clicking the update button in hassio seems like a rather logical (and innocent) action and should not break homeassistant. BTW: the process is surprisingly “un-automated”: run the configuration checker, do a backup, finally click the update button. And even then bad things can happen.

Maybe HassOS is more foolproof? E.g. since I cannot even install any software I cannot install (apparently that’s what I did?) the wrong version of docker!

Homeassistant has incredible features. It’s easy to start relying on it, once it’s configured.

Unfortunately I seem incapable of keeping the system running reliably. Since HassOS is touted as the easiest way of running homeassistant it is also foolproof (against fools like me)? However, from your responses I gather I’d need a dedicated computer just for HassOS.

Thanks and sorry for the rambling. I am a little frustrated and torn between awe and rm -f *.

This means you installed docker via snap.

Install docker-ce, as the documentation says, from the docker website.

1 Like

Back to the original question (and I agree that hassos is not the answer to reliability) proxmox is a hassio add-on, and you can load other docker containers from there.

Two issues:

  1. I did this (at least I did what Install Docker Engine on Ubuntu | Docker Docs says I needed to do) - obviously somehow not correctly / the old version was not deleted although the instructions say how to delete
  2. Before the update the config was at /usr/share/hassio - is it correct to conclude that then the “correct” version of docker was used? If so, how come the docker version changed? Was updating Ubuntu packages the issue? If so, how should I update Ubuntu so this won’t happen again?

Thanks!
Bernhard

What is? For homeassistant to be truly useful, there must be a way to operate it reliably, so it keeps working across updates (including homeassistant itself and the OS).

Well put it this way, raspberry pi is not the answer to reliability.

I have home assistant (not hassio, not dockerised) on Ubuntu LTS 18.04. I will have no need to update the os for some years. Home assistant updates never fail me. (Famous last words).

1 Like

For me the solution was to move to OpenHAB for reliability.

^ This is a rubbish post.

If you set yourself up correctly and follow the written documentation, there are no reliability issues.

If you want to tinker and get started with HA, then using an RPi and an SD card is the way to go. You can learn, make mistakes, tinker and enjoy getting to know HA and how it works.

When you are ready to automate your entire house and want a rock-solid system, use a NUC, PC/Laptop, Server, *some other stable x86/x64 platform. The Software is almost never the issue, 99% of the time it is user error causing problems, or entry-level components. That being said, many HA members run a reliable system on a Pi.

I run Hass.io on a NUC, I have zero reliability issues. ZERO When I do encounter an issue, it is of my own doing.

Plenty of people also have systems running year old versions of HA, or older, as they have no need to update due to the products they use in their house. Still stable and functioning.

Unless you have a product being added you absolutely have to have in your system, or feature that you can not live without, you almost never need to upgrade. You don’t have to be on the bleeding edge. Stay a version of 3 behind and see what bugs pop up and how to resolve them, before you upgrade.

If you set yourself up for success by following written guides and the feedback of other long term users on what makes a stable system, take regular backups, read the breaking changes for updates, you will have a super stable and reliable system that can perform any function you could wish, plus more.

5 Likes

Why are you commenting here then? To stir the pot?

portainer is. Proxmox is a hypervisor. :wink:

The hassio install script tells the system to put the data at /usr/share/hassio. A simple update of the host OS should not cause it to move. Your data is still probably at the correct location, but your systemd startup script must be pointing to the wrong location, or you had a broken supervisor pull.

No idea, but when you ran the upgrade, it actually told you what was being updated. You probably should have read that a little better so we would know why.

That doesn’t usually do it. But it could have been caused by installing some other package that relies on the snap version of Docker. or any number of things that we really can’t speculate now.

sudo apt update && sudo apt dist-upgrade -y && sudo apt autoremove -y always works just fine for me. nothing special.

1 Like

Yes I meant to come back and change that!

1 Like

Everytime there is a docker-ce update, hass.io won’t restart… every other docker container (I run through docker-compose with restart unless stopped) all restart but not hass.io.

There are a few ‘tricks’. First, you can reboot the host and everything all comes backup but hardly ideal.

If you log into the host via ssh…
sudo service hassio-supervisor start
That will restart the supervisor which will restart the home assistant container - but won’t restart any of your other addons which is a PITA as you need to go into them from the hass.io panel and start them manually.

The other thing you can do is if you run the stock standard portainer, you can login there and start all your containers again… but… some addons, particularly the community addons WON’T restart (or they will just stop again) so you will need to restart them from the hass.io panel again manually.

It’s a PITA and TBH I don’t know why they don’t use always-restart flag for all the hass.io and addons but they don’t. So I just use the portainer approach 99% of the time.

his current sole purpose for posting here… he will eventually get tired of openHAB like all the ex-users here so I’m sure he will reappear at some point but for now, stirring the pot and bashing the devs is all he does.

3 Likes

First many thanks to everyone - I learned a lot!

I think this is what happened to me, but since I did not interpret the symptoms correctly and tried to reinstall hassio, I messed up my system.

In particular, for whatever reason I now have the “wrong Ubuntu docker installed”.

  1. Is there a simple way to determine which version of docker (Ubuntu or official) is running? Ideally such a test could even be added to the hassio install script.
  2. How do I do this? I thought at least that I followed the instructions at the docker website. Perhaps I need to stop docker before the “reinstall”, or delete more stuff than sudo apt-get remove docker ... does.

Count me as one of those. I do not want to bash any system (they all have their strength and place), but there are numerous reasons I switched. Creating custom components was very tedious with openHAB.

docker version

You don’t “reinstall”. That’s not how the script works. Run once. If you read the script you’ll see what it actually does. Everything you need is already on your system after running it once.

I find hassos to be very reliable, however I run a fairly simple setup with minimal hassIO addons. While it’s on lower end hardware, a RPi 3, upgrades usually tend to be hassle free without too much time in the command line. I don’t know a whole lot about docker and really I have little desire to learn docker right now.

Anything where I do need more flexability I have a 2nd RPi 3 running plain Rasbian which has grafana, node-red, phantom JS, Mosquitto, etc. which works well, but requires a little more time when I upgrade packages, it’s not automatic like HassOS. I use this 2nd Pi as watchdog also, and Node-RED will automatically reboot the HassOS Pi if it doesn’t get a MQTT message for over 20 mins from HA.

By the sounds of it you have a good working system, going to HassOS could be change for the sake of change.

If you need 100% reliability or close to it there is someone working on high avaliability HA which allows 2 systems running in parallel with the 2nd acting as a backup, it will automatically take over if 1 system crashes, in theory.

Below is the version that’s running on my system now. But how do I know if it’s

  1. Ubuntu version (wrong one) or
  2. “official Docker” version (correct one)?

All I know for sure is that the hassio configuration has moved to the wrong place and from you that’s because I used the “wrong” docker to install.

$ docker version
Client: Docker Engine - Community
 Version:           19.03.1
 API version:       1.38 (downgraded from 1.40)
 Go version:        go1.12.5
 Git commit:        74b1e89
 Built:             Thu Jul 25 21:21:05 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server:
 Engine:
  Version:          18.06.1-ce
  API version:      1.38 (minimum version 1.12)
  Go version:       go1.10.4
  Git commit:       e68fc7a
  Built:            Tue May  7 17:57:34 2019
  OS/Arch:          linux/amd64
  Experimental:     false

The script here?

curl -fsSL get.docker.com | sh

(the output from the curl is a bit too tedious to read and I’m not sh …) presumably installs the “correct” docker, so just rerun this command (and the others, starting with sudo -i, and then rerun

curl -sL "https://raw.githubusercontent.com/home-assistant/hassio-installer/master/hassio_install.sh" | bash -s

That will do it? Or do I need to stop all dockers first, and the docker deamon? Odd since I thought that this is how I installed in the first place, but obviously I did something terribly wrong.

The script appears to determine the architecture type, download apparmor, and start it as a service.

That’s what I did first also (hassos on RPi3) and it was simple. But occasionally it was also very slow. The NUC is much faster, but at the time of the switch hassos was not available for the NUC. Perhaps the new RPi4 is faster. But then there are all these horror stories about failing SD cards … (never happened to me).

Now it is, but in the mean time I got to do things on the NUC that are not compatible with hassos. The learning curve for hassos is definitely shorter, as “advertised”.

it may be shorter but that comes at the expense of being able to do other things that you want to do on the NUC. using that type of hardware for HassOS seems to be overkill in my opinion since you can’t do anything else with all of the availability of processing power than what HassOS limits you to.

1 Like

Mine too. Installing real linux+docker+hass.io gives you all the advantages of hass.io as well as a real linux distro you can use for other things as well.

That’s the docker-ce that you want.