Anyway to add binary files and pkgs to hass.io?

Tags: #<Tag:0x00007f3f1a8b4060>

I’m giving hass.io another try but need to add an executable file to it. The file needs a linux pkg installed as a pre-req.

Anyone know how to do that?

Thanks

You don’t add packages to hassio. You either use another docker container alongside it (normal docker or as an add-on), or you don’t use hassio.

right, understood. but is there a way to accomplish what i need with docker? like perhaps make my own add-on that installs (or uses) the executable file with dependencies?

Without knowing the software/package in question, I don’t know.

You can make your own add-on that supplements HA with the software you desire…possibly.

thanks… I’m doing lots of reading but still confused about what hass.io actually is. My best guess so far is that its a combination of things.

It’s partly a homespun linux variant os named “HassOs”. The “HassOs” seems to be able to run on platforms with Arm or AMD cpus. Examples: rasberryPi with an Arm cpu and Windows 10 Hyper-V with AMD cpu.

“HassOs” is composed of the following components:

  • Barebox as bootloader on EFI
  • U-Boot as bootloader on IoT
  • RAUC for OTA updates
  • SquashFS LZ4 as filesystem
  • Docker 18.09.0
  • AppArmor protected
  • ZRAM LZ4 for /tmp, /var, swap
  • Run every supervisor

Then the “HassOs” is distributed with a version of Docker 18 and a Docker container that runs the Hass (home assistant) application.

So it seems to me that hass.io is == HassOs + Docker 18 + Docker container running Home Assistant
0.98.5 (or some version).

It’s unclear how it boots. I don’t know what Barebox or U-Boot is, but my guess is the HassOs boots and is configured to launch the HA Docker container which in turn starts the Hass web server.

If my understanding is close to being correct it seems in theory that if regular Docker 18 is used I should be able to follow the regular Docker documentation to create an Add-on.

Am I on the right track?

No.

HassIO is simply 2 docker containers. A supervisor and a Home Assistant container. You can run HassIO on HassOS or any pretty much any Linux distro.

HassOS is an OS that acts as a docker host, and runs HassIO. It can run on a pi or in a hypervisor.

Thanks, that gives me a lot of fun to chew on!! :smile:

So I think youre saying

HassOS == Homespun Linux OS distro + Docker 18

HassIO == hass.io == DockerContainer(Home Assistant Python App) + DockerContainer(Supervisor Webserver?)

Is there a term for a bundled HassOS + HassIO ?

If Home Assistant is a Python app, where is Python? In the OS or part of the Docker container?

Regards

They stupidly wrap it up in hass.io unfortunately. It’s not accurate though. To me HassOS is the bundle.

It’s in the docker image. That’s the point of docker. All app dependencies are inside the image/container. If it was on the host it wouldn’t be docker.

:wink: :+1:

I wasn’t going to ask, but can’t help myself. hehe

I’ve read that one advantage of dockers over a regular VM guest it that dockers shares the resources from the baseos so that an os doesnt need to be installed in each container, like you would have to do in a VM.

So if you were to run 1,000 containers of Python apps, wouldn’t it make sense to share a Python instance located in the Docker baseos so you wouldn’t have to load Python 1,000 times (1 for each container)?

Not exactly.

Each docker image is based on a distro. Most docker images are based on Alpine or Ubuntu/Debian. You can run either of these images on any Linux OS. So it’s not exactly the same in that regard.

Nope. What if app number 988 needed python 2.7 and app number 367 needed python 3.5.3?

What if there were conflicting modules on the host? It doesn’t scale. A simple Python and associated libraries installed in a single image works perfectly well.

Developers package the applications so that there are no issues with dependencies and they will run anywhere. It’s a way to deploy a known working image of an app so that it can be containerized.

@flamingm0e

Hey thanks for all your help.

I was able to get HassIO up and running on a Debian10 in a Hyper-V Guest!
Installed the Samba add-on and created my own “Hello” Addon successfully!

It all went really smooth and is really cool stuff.

I still have a lot to learn, but I got the basics and can see how I can get my binary file to run in a container now!

Hooray :slight_smile:

That’s good to hear!

Well I’m not sure what’s wrong with me but I’m still confused…

I’m running Debian10 (Buster) with Docker18 installed on it. I installed the Hassio container using the hassio installer script: https://github.com/home-assistant/hassio-installer

A quote from the guide:

As an alternative to using the images which include the HassOS operating system and Docker, it is also possible to run Hass.io on a generic system running another OS of your choice such as Ubuntu, Debian, etc.

That makes sense, I’m using my own OS with Docker instead of HassOS to host the HassIO container.

So I install Hassio, then use its web ui to install the SSH Addon. Then I use SSH to connect to my Hassio system and when connected I get the following reply:

So my confusion is when using SSH I normally associate that to connecting to a Linux OS terminal, so what is the reply Im getting? Is it a HassOS or AlpineOS terminal running in the HassIO container or what ??? I’m sure its not my DebianOS terminal.

Why?

I hope you at least run it on a different port than 22.

You’re inside the ssh add-on container. Remember, add-ons are OTHER containers…

It’s whatever OS the ssh add-on is BUILT on. SSH add-on is a docker container.

Correct. You now have an SSH container running on your Debian host.

Purely out of curiosity to improve my understanding of this product. All of this is on my little test lan with no ports forwarded from the internet.

I find this whole thing freaky-deaky so far. When I grab the distributed VHDX (https://www.home-assistant.io/hassio/installation/) and throw it in a Hyper-V guest, I get the exact same screen (as shown in my previous post) when running the VHDX. No SSH or addons used.

On a seperate topic, I gather that the baseos hardware (i.e. USB ports) available for the Docker container is defined by a command line option when the container is invoked. Ive found the Docker file for HassIO, but cant find the docker run script that invokes it, so i can see what command line params are used.

The SSH add-on mimics the HassOS terminal pretty well. The dead giveaway is that it says core-ssh…that’s an add-on container

All attached devices are already exposed to the docker container. You don’t modify the docker run.

You’re confusing 2 things here. Management via docker and hassio. Once you’re running hassio, you don’t manage home assistant with docker.

Got my zwave/zigbee stick working!! Not sure exactly how, but the hassio container is definitely accessing the usb ports from my DebianOS. My best guess is still some sort of command line parameter is used when the hassio container is invoked to access the ports.

The driver I need to make the usb ports available to my Hyper-V Guest is running now on the DebianOS. I guess all I need now is to figure how to run the driver at Debian startup and Im done. No Hassio addon needed to get my driver working for Hassio container. Yay…

Because the service tells it to pass through devices.

Yes. It’s privileged

So this whole time, you’ve just needed to figure out how to pass through USB using Hyper-V? You couldn’t have just said so?

LOL… Its the journey that is the fun part, not the destination.

I get to learn new things like Dockers and Containers, and meet new friends like flamingm0e. :slight_smile:

1 Like