Приветствую!
На днях решил попробовать установить Home Assistant на операционную систему FreeBSD.
Home Assistant написан на языке Python, что позволяет запустить его практически на всех платформах в которых можно установить интерпретатор Python.
Я буду устанавливать на версии FreeBSD 12.1.
Предполагаем, что система у нас девственно чистая, установим с помощью pkg нужный нам софт:
pkg install python37 py37-sqlite3 sudo
Установим PIP
python3.7 -m ensurepip
Для безопасности создадим пользователя hass под которым будем устанавливать и запускать Home Assistant:
pw useradd -n hass -c "Home Assistant" -L russian -s /bin/tcsh -m -w random
Где:
- -n — имя пользователя hass;
- -с — комментарий Home Assistant;
- -L указываем класс, для поддержки русского языка russian;
- -s — указываем какой шелл будет у пользователя по умолчанию tcsh;
- -m — данный ключ создаст пользовательскую директорию /home/hass;
- -w — указываем чтобы пароль сгенерировался случайным образом random
Группу мы не указывали (ключ -g), поэтому будет создана группа — hass.
Пока мы root, создадим сразу файл для лога Home Assistant и дадим на него разрешение пользователю hass:
touch /var/log/home-assistant.log && chown hass /var/log/home-assistant.log
Авторизуемся пользователем hass:
sudo -u hass tcsh
Перейдем в домашний каталог пользователя:
cd /home/hass
Установим для данного пользователя виртуальное окружение Python:
% python3.7 -m venv env
Активируем данное окружение:
% source env/bin/activate.csh
Установим Home Assistant:
% pip3 install homeassistant
Запускаем:
% hass
Home Assistant при первом запуске будет докачивать нужные ему библиотеки, не знаю почему не реализовано закачивание всех зависимостей через pip.
Через какое-то время он поднимет веб-интерфейс на 8123 порту.
# sockstat | grep 8123 hass python3.7 750 31 tcp4 *:8123 *:*
Можем зайти через браузер на указанный порт, где будет предложено создать учетную запись:
После того, как создадим запись, гасим сервер командой в терминале Ctrl+c
Внесем в cron команду на запуск hass после перезагрузки:
crontab -u hass -e @reboot /usr/home/hass/env/bin/python3.7 /usr/home/hass/env/bin/hass -v -c /home/hass/.homeassistant/ --pid-file /tmp/hass.pid --daemon --log-file /var/log/home-assistant.log --log-rotate-days 3
Либо лучший вариант — создадим скрипт автозапуска:
# vi /usr/local/etc/rc.d/hass #!/bin/sh # $FreeBSD$ # # PROVIDE: hass # REQUIRE: LOGIN # KEYWORD: shutdown # Add these lines to /etc/rc.conf.local or /etc/rc.conf # to enable this service: # # hass_enable (bool): Set to NO by default. # Set it to YES to enable home-assistant. # hass_pidfile (path): Set to /var/run/home-assistant/hass.pid by default. # hass_user (user): Set to hass by default. # hass_config_dir (path): Set to /usr/local/etc/home-assistant/ by default. # hass_logfile (path): Set to /var/log/home-assistant.log by default. . /etc/rc.subr name=hass rcvar=${name}_enable start_cmd=${name}_start stop_cmd=${name}_stop status_cmd=${name}_status load_rc_config $name : ${hass_enable:=NO} : ${hass_pidfile:=/tmp/hass.pid} : ${hass_user:=hass} : ${hass_config_dir:=/home/hass/.homeassistant/} : ${hass_logfile:=/var/log/home-assistant.log} sudo=/usr/local/bin/sudo command=/usr/home/hass/env/bin/hass command_args="-v -c $hass_config_dir --pid-file $hass_pidfile --daemon --log-file $hass_logfile --log-rotate-days 3" hass_start() { if [ -f $hass_pidfile ] && kill -0 $(cat $hass_pidfile) >/dev/null 2>&1 ; then echo 'Service already running' return 1 fi echo 'Starting service' $sudo -u $hass_user $command $command_args echo 'Service started' } hass_status() { if [ -f $hass_pidfile ] ; then echo 'Hass already running!' else echo 'Hass is not running!' fi } hass_stop() { if [ ! -f $hass_pidfile ] || ! kill -0 $(cat $hass_pidfile) >/dev/null 2>&1 ; then echo 'Service not running' return 1 fi echo 'Stopping service' kill $(cat $hass_pidfile) while ps -p $(cat $hass_pidfile) >/dev/null 2>&1 ; do sleep 1;done rm /tmp/hass.pid echo 'Service stopped' } run_rc_command "$1"
Делаем его исполняемым и разрешаем запуск:
chmod +x /usr/local/etc/rc.d/hass echo hass_enable=\"YES\" >> /etc/rc.conf
Запустим:
# service hass start Starting service Service started
Последняя проверка:)
# sockstat | grep hass hass python3.7 3344 4 stream -> ?? hass python3.7 3344 5 stream -> ?? hass python3.7 3344 10 udp4 *:5353 *:* hass python3.7 3344 11 udp4 *:5353 *:* hass python3.7 3344 12 udp4 *:5353 *:* hass python3.7 3344 13 stream -> ?? hass python3.7 3344 14 stream -> ?? hass python3.7 3344 31 tcp4 *:8123 *:*
Вроде все, в следующей заметке пожалуй рассмотрим как это все убрать за NGINX с бесплатными сертификатами от Let’s Encrypt.
Привет! Спасибо за материал.
Вы получили HA с Supervisor?
Нет, только Home Assistant