Home Assistant with Node-Red on Arch Linux (Part 1)
Running Hassio from a Raspberry Pi is really interesting, but after a short while the gap of capabilities was presented when realized everything I would want to automate was on the home server. While some people might find it nice to have a Raspberry Pi doing automation, there are a lot of scripts that I’d like to run from within Arch Linux. Things like ps4-waker or restarting specific system services. Regardless of my uses, I figured keeping track of this would be beneficial to someone.
Let’s get a few things set up before we dive into the installation. First, if you have the latest and greatest version of nodejs, you might want to concider switching the the stable release. I found great success with “community/nodejs-lts-boron 6.14.3-1”. You can install with:
$ sudo pacman -S nodejs-lts-boron
You will need a web server installed and working properly. (I am using nginx, but Apache should work just fine).
The AUR has a version of Home Assistant however, it isn’t updated as frequent and might be missing some of the latest (and desirable) features. I decided to not use this version and installed Home Assistant with pip. You will need to install python and python-pip.
$ sudo pacman -S python python-pip
$ sudo pip install homeassistant
Before launching Home Assistant, it would be beneficial to create a user and set some privileges.
$ sudo useradd -r -s /bin/nologin hassio
Create the working directory for Home Assistant and set the permissions.
$ sudo mkdir /var/lib/hass $ sudo chown hassio:hassio /var/lib/hass
Lastly, if you plan on having this start at boot, you need to create a system script that will start at boot. Following the Hassio guide, this startup script will get you started.
Save this in /etc/systemd/system/hassio.service
[Unit] Description=Home Assistant Service After=network.target [Service] User=hassio Group=hass Type=simple ExecStart=/usr/bin/hass --config /var/lib/hass [Install] WantedBy=multi-user.target
Once you have the service created, then start your service and point your browser at servers IP address at port 8123.
$ sudo systemctl start hassio
One thing different from Hassio on the Raspberry Pi is that you will not have the Hassio option in the menu. This is okay, the biggest reason you would need this is for the ability to install plugins from their built-in app store. Everything you need can be installed from the AUR.
The last package that you will probably want to install and get working is the MQTT package. The package that works well with Home Assistant (and is available in their Hassio app store) is Mosquitto.
$ sudo pacman -S mosquitto
Once installed, the service can be started with
$ sudo systemctl start mosquitto
If all is working well, then enable all of your services at boot:
$ sudo systemctl enable hassio $ sudo systemctl enable mosquitto
Now that Home Assistant is running, the next phase is to get Node-red installed and running. This should be fairly simple as well. Node-red is available in the AUR, but this is another one of those packages that causes some problems when installing with the AUR.
I unstalled Node-red using npm.
$ sudo npm install -g --unsafe-perm node-red
This is another service that we’d like to start at boot. While some people would want to create separate users for each service, I believe that using the same user for all of the home automation services is completely acceptable. The following is a modified version from the Raspberry Pi’s node-red systemd service.
Save this in /etc/systemd/system/nodered.service
[Unit] Description=Node-RED graphical event wiring tool. Wants=network.target Documentation=http://nodered.org/docs/hardware/raspberrypi.html [Service] Type=simple User=hassio Group=hass Nice=5 Environment="NODE_OPTIONS=--max-old-space-size=128" ExecStart=/usr/bin/env node-red-pi $NODE_OPTIONS $NODE_RED_OPTIONS KillSignal=SIGINT Restart=on-failure SyslogIdentifier=Node-RED [Install] WantedBy=multi-user.target
Now, test the service out and if everything is working correctly, then enable this service for boot.
$ sudo systemctl enable nodered
That’s it for the first part. The next piece will be configuring Home Assistant and setting up Home Assistant to work with Google Home Assistant.