Again, Home Assistant Core and addons

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:

5 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.

1 Like

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.

1 Like

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.

you can use all kind of UIs.
the HA frontend (UI) is just 1 of the many possibilities.

you can for example also use HAdashboard from appdaemon for all needed input.

and the HA UI exposes stuff that might not be wanted, so i can imagine why people want to shut it down. (thats the reason why its possible to run HA without the UI)

allthough the way HA developed over time, the frontend is needed for so much that its hardly possible to use HA without the UI

1 Like

Hi everyone,

Hopefully I am in the right forum and among friends so please hear me out.

I use Home Assistant Core as a docker container on my Unraid server:
image
https://registry.hub.docker.com/r/homeassistant/home-assistant/

I have added HACS and benefit from those additional functionalities.

However, there are some things that are only available via the Add-On store.
For example, the Tailscale integration here.

The built-in Tailscale integration only gives me access to the Tailscale API for monitoring purposes.

What I really want is an easy way to have my HomeAssisstant instance join the tailscale network without manually installing tailscale in the container because I would then lose it in the next docker image update. In fact, I tried to manually install it but because it uses a heavily stripped down version of alpine, I wasn’t able to get it to work due to missing dependencies.

I am hoping someone here could help me somehow get the Tailscale Add-On to work on my Home Assistant instance (unlikely because I think it uses docker behind the scenes) or a simple install script that would work with Home Assistant Core. Any other ideas are also welcome.

Unfortunately you can’t install add-ons in a core/container install.

As an alternative you can install most programs that are equivalent or give you the same functions in docker on your own.

I use home assistant container and use wireguard as my VPN instead of tailscale- you can install Wireguard as a container in docker fairly easily. I wrote up detailed directions here

You should be able to install tail scale in docker as well - then docker will manage all the dependencies for you

Thank you but I don’t understand how installing Tailscale(TS) on docker helps me with my Home Assistand (HA) container. The HA container still won’t be on the TS network.

I already have TS running in docker on the same host as the one running HA Core container:

image

What I want is for TS to run in HA so that HA has a TS IP address and can talk to other TS devices using their TS IP addresses.