Home Assistant auf einem Gentoo System installieren

Home Assistant oder kurz HASS ist ein in Python geschriebene Software zur Haus-Automation. Sie bietet die Möglichkeit eine Vielzahl von Smart Home Geräten einzubinden. Durch sein Web Interface ist Home Assistant auf jeder erdenklichen Plattformen ohne besondere App nutzbar. Lediglich ein Browser wird benötigt.

Dieses Tutorial befasst sich mit der Installation von Home Assistant auf einem Gentoo System. Da HASS nicht im Portage Tree enthalten ist (Stand 12/2018) dachte ich mir, dass eine Anleitung speziell für Gentoo bestimmt nützlich ist.

Installation in einem virtuellen Umgebung

Da Home Assistant in Gentoo nicht offiziell unterstützt wird, habe ich mich für eine Installation in einer virtuellen Umgebung entschieden. Dabei laufe ich keine Gefahr mein bestehendes System ungewollt zu verändern oder gar zu beschädigen.

Die Installation läuft eigentlich konform zur offiziellen Installations-Anleitung von Home Assistant.

Für die Installation wird mindestens Python 3.5.3 benötigt, welches bei Gentoo sowieso bereits installiert sein sollte. Für die Paketinstallation wird der PIP Paketmanager benutzt. Sollte dieser nicht bereits installiert sein, macht wir dies nun.

emerge -a dev-python/pip

In Portage ist aktuell nur eine veraltete Version von PIP verfügbar, aber diese reicht vollkommen für die Installation aus. Die Warnungen diesbezüglich bei der Installation kann man ignorieren.

Legen wir mal mit der eigentlichen Installation los!

Zuerst erstellen wir die virtuelle Umgebung:

python3 -m venv /opt/hass

Ihr könnt hier einen beliebigen Pfad wählen. In meinem Fall habe ich  „/opt/hass“ gewählt.

Danach wechseln wir in die virtuelle Umgebung:

cd /opt/hass
source bin/activate

Wir befinden uns nun in der virtuellen Umgebung und können die notwendigen Pakete installieren.

python3 -m pip install wheel
python3 -m pip install homeassistant

Der letzte Befehl installiert Home Assistant mit allen Abhängigkeiten. Die Installation ist hiermit abgeschlossen. Weiter geht es mit der Einrichtung eines Benutzers, welcher HASS ausführen soll.

Benutzer anlegen

Ich brauche denk ich nicht zu erwähnen, dass es sicherlich keine gute Idee ist, irgendwelche Software als „root“ auszuführen! Um diesem Sicherheitsfiasko zu entgehen legen wir uns einen Benutzer speziell für Home Assistant an. Der Benutzername ist natürlich frei wählbar.

groupadd hass
useradd -m -g hass -s /bin/bash hass

Danach passen wir die Berechtigungen auf unsere virtuelle Umgebung an:

chown -R hass:hass /opt/hass

Ist das erledigt machen wir weiter mit dem Starten und Beenden des HASS Dienstes.

Home Assistant zum Systemstart hinzufügen

Da Home Assistant nicht in Portage vorhanden ist, gibt es natürlich kein fertiges Init Script. Ich habe das offizielle Init Script für OpenRC angepasst und auch ein zugehöriges Config File erstellt, welche ich euch hier zur Verfügung stelle.

Erstellt euch die Datei „/etc/conf.d/hass“ mit folgendem Inhalt:

# User running homeassistant
RUN_AS_USER="hass"

# PID file for homeassistant
PID_FILE="/var/run/hass.pid"

# Path to virtual environment
INSTALL_DIR="/opt/hass"

# Config directory
CONFIG_DIR="/home/hass/hass_config"

In dieser Datei könnt Ihr alle relevanten Einstellungen vornehmen. Habt Ihr einen anderen Installationspfad oder Benutzernamen gewählt, müsst Ihr dies natürlich in dieser Datei entsprechend anpassen.

Danach wird die Datei „/etc/init.d/hass“ erstellt:

#!/sbin/openrc-run

# Settings
PRE_EXEC="cd $INSTALL_DIR && python3 -m venv . && source bin/activate &&"
HASS_BIN="hass"
FLAGS="-v --config $CONFIG_DIR --pid-file $PID_FILE --daemon"
REDIRECT="> $CONFIG_DIR/home-assistant.log 2>&1"

depend() {
        need net
        need localmount
}

start() {
        ebegin "Starting Home Assistant"
        install
        if [ -f $PID_FILE ] && kill -0 $(cat $PID_FILE) 2> /dev/null; then
                echo 'Service already running' >&2
                return 1
        fi

        local CMD="$PRE_EXEC $HASS_BIN $FLAGS $REDIRECT;"
        su -s /bin/bash -c "$CMD" $RUN_AS_USER
        eend $?
}

stop() {
        ebegin "Stopping Home Assistant"

        if [ ! -f "$PID_FILE" ] || ! kill -0 $(cat "$PID_FILE") 2> /dev/null; then
                echo 'Service not running' >&2
                return 1
        fi

        kill $(cat "$PID_FILE")
        while ps -p $(cat "$PID_FILE") > /dev/null 2>&1; do sleep 1;done;
                echo 'Service stopped' >&2
        eend $?
}

install() {
    echo "999999" > $PID_FILE
    chown $RUN_AS_USER:$RUN_AS_USER $PID_FILE
    mkdir -p $CONFIG_DIR
    chown $RUN_AS_USER $CONFIG_DIR
}

Vergesst nicht das Script ausführbar zu machen:

chmod +x /etc/init.d/hass

Nun könnt Ihr in gewohnter OpenRC Manier den HASS Daemon starten und stoppen.

Um Home Assistant beim Systemstart automatisch zu starten fügen wir diesen zum Default Run-Level:

rc-update add hass default

Um mit der Einrichtung fortzufahren starten wir Home Assistant nun:

/etc/init.d/hass start

Beim ersten Start kann es ein wenig länger dauern, also nicht wundern! Danach geht es weiter mit der Einrichtung von Home Assistant selbst.

Einrichtung von Home Assistant

Wir öffnen nun die Adresse http://hostname:8123 im Browser Deiner Wahl um Home Assistant einzurichten. Der Hostname ist entsprechend anzupassen.

Home Assistant - Benutzerkonto anlegen
Home Assistant – Benutzerkonto anlegen

Beim ersten Start von Home Assistant ist einmalig ein Benutzer (Administrator) anzulegen. Sobald wir dies getan haben kann man mit der weiteren Einrichtung von Home Assistant fortfahren, was aber nicht Bestandteil dieses Tutorials sein soll. Hierfür plane ich weitere separate Tutorials.

Sicherheit

Der aktuelle Stand der Installation sollte nur in einem lokalen Netzwerk betrieben werden. Wenn man Zugriff von außerhalb auf Home Assistant haben möchte sollte man über eine Absicherung der Verbindung nachdenken. Hierfür gibt es verschiedene Möglichkeiten:

  • Nginx / Apache Proxy mit HTTPS
  • VPN
  • SSH

In meinem Fall verbinde ich mich über ein VPN mit dem heimischen Netzwerk.

Hiermit ist dieses Tutorial abgeschlossen. Ich hoffe es war hilfreich für euch! Wenn Ihr mich unterstützen wollt, könnt ihr das sehr gerne hier tun.

1 comment

Leave a Reply

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.