Again, Home Assistant Core and addons

Hi everyone.
Last week i spent in google search results to find a lot if information for my first production HA installation.
I made a simple device with 4 core old atom pc and 4GB memory. I suppose it will be enough for beginning.

I had been already read about different installation methods and what exactly addon is. Also i understand why addons are not accessible in core installation. (this link, and many others).
I understand, that addon is just a software installation script, default configuration for a software and some code for a HA.

But! Is there any information about what exactly user with Home Assistant Core have to do to install FileEditor, for example, VSCode, node-red, alsa or pulseaudio, or something else ?

What i expect to see in my way:

  1. Install sofware and make sure its accessible via smth (socket, shell command etc)
  2. Config software to allow HA use it (if needed)
  3. Make HA configuration changes:
  • download these files and put here (if needed)
  • change DB structure (if needed)
  • put these lines in configuration.yml or another config
    … etc

I know, a lot of users may say to use docker or entire OS. But i dont wanna do it. Supervised version is not so cool for me too.

  1. Yes, i wanna FULL control for my OS. Network configuration with bridges, firewall, my own cron jobs, sysctl tweaks, etc
  2. Resources. Core installation take nothing from system. Really. But any other use docker and we have a lot of overhead.

Can anyone help a lonely stranger?)

PS: As a matter of fact, there is no other tool like HA to be used as home automation center. HA is really great.

1 Like

No, an add-on is a docker container specifically configured to work directly with HA.

Instead of built in file editor, you rather setup Samba and edit the files from a remote machine. Node-red is also unnecessary overhead, you don’t need Node-red, HA automations are capable enough to do everything you need. Alsa and pulseaudio have nothing to do with HA directly, there are countless of tutorials to set these up in a linux machine.

It’s a bit of overhead, but definitely not a lot, any facts to back up your claim?

I installed supervised version and core version on another pc with atom 2 cores.
Resources for core version: about 300MB memory and 0.1 load average
Resources for supervised version: about 760MB memory + 3GB cached and 0.6 load average
used with HDD sata2, DDR3 memory.

Is there any public info how to configure different soft with HA without docker ?

it’s just for an example. mc by ssh is a little bit better than samba.

Ok, back when I was comparing it there was not any noticeable difference. Did you try Home Assistant Container as well?

I don’t understand what exactly you are looking for. Can you name some examples?

I use Visual Studio Code and Samba, works like a charm together, also VSC has a noce plugin specifically for HA for auto completion of entitires, etc.

1 Like

I think you really need to look into this. I’m running Home-assistant container, its just the core version of home assistant in a docker container, and resource use for me is minimal. These are the stats from the top command showing minimal cpu and memory usage. install is on an mac mini running Ubuntu with nvr recording two cameras 24/7. Then I have docker running adguard, swag/nginx, Node Red, zigbee2mqtt, zwavejs2mqtt, home assistant, wireguard, and portainer.

Screenshot from 2021-08-31 20-00-51

Although the supervised install with addons still uses docker, a lot of overhead is added with the supervisor. If you install the container version on your own, then install “addons” on your own through docker yourself, there is no supervisor. Although docker is needed I think this is the best way to go.

If you try and avoid docker and install a python install it is considered “advanced”, and there is little documentation on that and you are pretty much on your own, and you still need a virtual environment for it.

1 Like

then use the most simple install and install HA in python venv.
almost all addons are available as seperate program as well, so you can install those you like as well.

and for HA you dont need things like vscode at all. its all yaml or frontend.

Hi everyone.
First of all, a took a litlle delay to think about a problem. There are some results.

This question hit the bulls eye. I will explain below.

I suppose this post was a result of my bad knowledge of documentation and HA arhitecture and a lot of information about addons installation from HA OS or supervised version directly. So i tried to install something as example. I chose simple vscode and postgresql to try. And i did it with my core installation.

So, the answer for a Burningstone question is:
i tried to find an official documetation that describe instructions for a different software settings around HA and HA Core settings for it. Without docker/VM/Supervisor and so on.

Result system load here (yes, in total there are no integrations and automations, but you may see a basic system load):


System runs Postgresql, HA in venv, VS code in iframe, nginx as a proxy for HA and VS Code (code-server).

Each experiens have to be transformed into illation to allow development process be more productive.
So what we shall to do for another people like me to prevent this questions.
The answer is - improve documentation. I understand that HA developers can’t and dont have to write all instructions for every program or library, but we need some start point in this direction.

First of all, HA Core documentation at installation point have to contain some text to explain new users how to integrate very popular addons (yes, in common, it’s not a addon, but let me call it here like that) for DB (psql, mysql), VS code as example, nginx and link to configuration.yaml description. Also there have to be some words about addons in common. People who install core version know what to do. They already have an experiense to install another software and configure it. So this information will give them the bridge from they existing knowledge and new knowledge about HA.

Why i chose these popular addons? Because of that:

  1. Installation of nginx give a basic usage improvements, allow add letsencrypt in many different ways, and give some knowledge about minimal nginx config (minimal official config have to be in documentation!)… Thats my (very basic, from this forum,ssl later)
map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

server {
    listen 80 default_server;
    server_name <YOUR_SERVER_NAME> <YOUR_IP> _;

    proxy_buffering off;

    location / {
        proxy_pass http://127.0.0.1:8123;
        proxy_set_header Host $host;
        proxy_redirect http:// https://;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }
}
  1. Installation of any DB improve HA speed, explain a original DB location and structure (migration description), but not only! Core installation does not install packages in venv for postgresql connection. So this basic thing will explain users to not forget install dependencies there. You need to do it in your venv (login as HA user in venv folder and run):
python3 -m pip install psycopg2-binary 
  1. VS code is not needed for every one, but its give another thing. First, it’s give a understanding how to install (or integrate existing) things in HA iframe.
    So we install code-server as official manual (do not forget add hashed-password in config), add nginx config for usability and put some lines in HA configuration.yaml. That’s all. My very simple nginx config:
server {
    listen 81;
    server_name <YOUR_SERVER_NAME> <YOUR_IP> _;

    proxy_buffering off;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection upgrade;
        proxy_set_header Accept-Encoding gzip;
    }
}

And very simple configuration.yaml part:

panel_iframe:
  vscode:
    title: "VS Code"
    url: "http://<your_ha_dns_name_or_ip>:81"
    icon: mdi:microsoft-visual-studio-code
    require_admin: true

Also, here have to be a link to official documentation, describing this section.

Why i wrote this long read text ?) Because i think someone like me will read it at once and make a bridge a little bit faster. Also i hope someone will improve documentation (possibly, i will after a couple of months of usage).

Thanks everyone! :crazy_face:

2 Likes

I admire your passion for this installation method (Core). While I feel that there’s no right or wrong way to run Home Assistant (in a supported method), 96% of users has found other installation methods an easier road to follow.
Who knows, with your upcoming new documentation, this could change.

1 Like

what you forget is that addons are NOT the responsibility from HA.
you wont find documentation about populair windows programs, inside the windows documentation.
not even a link to those programs.

your nginx example is a good 1.
its nginx, not HA. so for configuring nginx you read nginx documentation.
the addon is just a small program to help you run nginx on the hass platform. nothing more then when you run docker.

if there is anything about nginx in the HA docs, then i think it shouldnt be there at all.
for simple configurations there should be something in the addon docs though.

1 Like

In common, I agree with you. I said that this documentation have to be, but of course it may be not in HA docs directly.
HA addon docs - possibly is a better place.
Also examples page or Common tasks page looks like a good place too.

There are a situations, when a couple of sentenses may save a lot of time for someone.
In any way, do you agree that simple software config or some common information about it may have been useful for users with HA Core?

no.
esspecially not for core users.
because core users shouldnt use addons at all. (if they can)

just my thought:
if you chose for HA core, then you chose for the freedom to install and configure things manually, without all kind of predefined things.
appdaemon for example also is available as addon, but for HA core users i will always say to also install appdaemon manually in python venv, and not the addon.

addons have their own docs. so if an addon doc isnt sufficient then you need to take that up with the creator/maintainer from the addon, but thats not HAs responsibility.

appdaemon (again) is just like nginx a program that is maintained by other people. HA has no influence on it, not on the development, not on the configuration, etc.
so why would any dev from HA want to keep an eye on programs that are maintained and written by third parties?

the example page is for stuff that is in HA, so it would be wrong to add it there.

thats where the community helps, and thats why they created more easy options the core.
core is advanced use. so chosing for that is chosing for more work and less help. (but more freedom)

1 Like

OMG @g0dless !!! I cannot agree more with this post!!!

I guess we are the 4% power users that would want to actually build something else from HA. I have a very similar problem with you, I developed in the supervised version of HA, where things were nice (add-ons, VS Code, …), but then, when I try to build my embedded solution running on an RPi zero W 2, where I really want to use the core and not docker fluff, dealing with I2C in a non-standard way, a.s.o, a.s.o… and after spending a lot of time automating a core installation from the (very poor) documentation, now that I finally have a properly working core installation, I am at the point where none of my integrations or add-ons are working anymore.

In particular, I need the NR integration, which is the only way I can make some automation workflows work (the automation in HA and the yaml simply doesn’t cut it!) - the only alternative would be appdaemon. Also, nginx is a must due to the non-standard ports, lack of encryption, etc…

Did you find a way to install NR? Also, I have a few integrations that I really don’t know how to re-enable (in particular, weather.openweathermap, pushbullet and the (custom) scheduler integration).

I thank you a lot for this post, I was really thinking I’m the only one around here thinking the architecture is not explained properly nor documented properly.

Too bad for a nice overall open source project that it makes it so hard to develop something more complex than a simple ‘turn on my light’ automation.

You can run node red with core or container versions of Home Assistant (without using the Node Red addon)

You basically create a long lived access token in Home Assistant and then install the Home Assistant pallete in Node Red, and in Node Red point it to the IP of your Home Assistant instance and put in the token

Here’s some instructions (should work with Core)

This was more docker specific- This is the way I run Node Red using docker without the addon

Thank you for the reply! I was able to install NR and connect it to HA, and also reuse my flows successfully. I only have on problem left, and I’m banging my head against it…

As you said, I need a long lived access token from HA. I read multiple sources, dev docs, etc… and I still can’t figure out if there is a way to generate a LLAT programatically. I don’t want to touch the UI in any way. I even reverse engineered the VS code add-on in HA to figure out how it is doing it (since it has zero config), only to find out that it relies on an (automatically generated at container creation time?) $HASSIO_TOKEN env variable.

Is there any way to do this? Again, the goal is a completely unattended build on an RPi, and this honestly seems to be the last hurdle. this and how to re-install/re-enable integrations.

i think HA core is nowadays useless when you dont want anything to do with the frontend.
most intergrations need to be configured through the frontend, and they took out all options to configure through yaml.

Does this help at all? Its getting beyond anything I tried but seems possible based on this developer documentation.

If that doesn’t work, Rene has a point that things are moving away from Yaml and more towards UI integration/configuration in an attempt to make things more user friendly. Most users asked for this, but for users like yourself that don’t want to touch the UI this shift is not ideal.

Update- this is the same page you linked above but bookmarked to go right to the long lived token section.

g0dless – thank you for your efforts in this quest. I have been a long-time user of HA and I have really become annoyed at the direction it is taking. I love the core, but the addons and dependence on Docker has really put up a stink. And the removal on so many of the YAML configurations is also annoying. The configurations that I spent so much time refining became completely unusable.

FYI, run I HA on a ProxMox VM and the “addons” are just ProxMox containers with such apps as MariaDB, NodeRed, AppDaemon, etc living happily in their own envionment. I can restart HA without (mostly) disrupting the extra apps. I wish the developers had designed with the old Unix idea of “do one thing and do it well”. With modern hardware, separate processes take very little time to fire up.

I also tend to run several copies of NodeRed when developing, so an “addon” is a non-starter.

its not hard to do this.

in ha click your picture icon, go to the bottom of the token area, and click create token. name it nodered, and put that token in nodered configuration.

nothing else needs to be done.

The OP was attempting to create a long lived access token programmatically without the UI. I’m not sure if they found a way or if it’s possible. I could see a potential security concern if this token could be made on its own programatically without the user being aware.

1 Like

yeah i understood that, however not using the ui seems kind of weird. why even have ha? if thats the case.

yeah i know, for the automatons and integrations.

it’s going to require some ui usage.