sábado, 8 de enero de 2022

ESPHome: Instalar Home Assistant con Docker

En este artículo voy a instalar Home Assistant con Docker tal y como se indica en la web de Home Assistant. Recordar que, aunque existe la forma de instalar Home Assistant y su supervisor con Docker, oficialmente esta configuración no está soportada tal y como indiqué en el artículo Instalación de Home Assistant en Raspberry Pi y su instalación es bastante más liosa. Quizás en un futuro realice un artículo al respecto.


Voy a utilizar Linux y puedes realizar la instalación sobre una RPi 4 con al menos 4 GB de RAM aunque se recomienda 8 GB de RAM y un disco SSD. También puedes utilizar mini PC (por aquello de reducir el consumo) con las mismas características.

Como es una prueba de concepto yo voy a utilizar VirtualBox con 2GB de RAM, 1 CPU y un almacenamiento de 32 GB. Voy a utilizar una imagen Ubuntu Server aunque si utilizas una Raspberry pi tendrás que usar Ubunto Server for Raspberry Pi, (versión 20.04.3 LTS 64bits). Nos descargamos la imagen y si utilizamos Raspberry PI o un mini PC grabamos en la tarjeta de memoria de la misma forma que lo hicimos en la anterior instalación en Raspberry Pi utilizando el software balenaEtcher. Si utilizas un disco duro de una capacidad grande como de 1 TB te saldrán algunos avisos ya que este software está diseñado para ser utilizados con tarjetas de memoria que normalmente tienen menos capacidad de almacenamiento.

También puedes utilizar el software oficial Raspberry Pi OS en cualquiera de sus sabores o utilizar Ubuntu desktop aunque pienso que lo ideal es instalarlo sobre una versión server. Quizás escriba otro artículo instalando Home Assistant en Raspberry Pi OS o Ubuntu Desktop.

En mi caso, creo una máquina virtual con la configuración descrita e instalo la imagen de Ubuntu Server y la tarjeta de red configurada en modo puente.


Finalizad la grabación de la imagen del SO en la tarjeta, la introducimos en nuestra raspberry pi y la alimentamos. Una vez haya cargado el SO (la primera vez tarda un poco sobre todo si estás utilizando una raspberry pi 3 accederemos por SSH como usuario root (usuario ubuntu, password ubuntu) y cambiamos la contraseña.

Lo primero que haremos es actualizar el SO:

apt update
apt upgrade
reboot

Una vez hemos actualizado y reiniciado la máquina elevamos privilegios a root:

sudo su -

Vamos a empezar la instalación de docker:

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
exit
sudo usermod -aG docker $USER
exit

Descargamos docker.sh , lo ejecutamos, salimos de root y permitimos que docker sea ejecutado por cualquier usuario y de esta forma no es necesario ingresar como root para ejecutarlo. Al finaL salimos de la sesión.

Para comprobar que funciona correctamente podemos bajarnos un contenedor que lo único que hace es saludarnos:

docker container run hello-world

Si funciona correctamente instalaremos Docker Compose que nos ayudará en la gestión de los contenedores utilizando ficheros en formato YAML.

sudo apt install docker-compose

A continuación instalaremos Portainer que es un administrador sencillo y visual de contenedores de docker:

docker volume create portainer_data
docker-compose --version
docker run -d -p 8000:8000 -p 9443:9443 --name portainer \--restart=always \-v /var/run/docker.sock:/var/run/docker.sock \-v portainer_data:/data \portainer/portainer-ce:latest

Nota: Cuando no existe una imagen en local de un contenedor, lo que hace docker es conectarse a la nube y descargar dicha imagen antes de ejecutarla.

Ahora, vamos a crear la carpeta donde se guardarán todas las configuraciones de docker con sus permisos correspondientes, tanto al grupo docker como a los usuarios:

sudo mkdir /docker
sudo chown root.docker /docker
sudo chmod 774 /docker

A continuación, dentro de esta carpeta docker, creamos otra carpeta para las configuraciones de Home Assistant:

mkdir homeassistant

Por tanto, la ruta a la carpeta de configuración de Home Assistant será /docker/homeassistant

Utilizamos el puerto 9443 para acceder a Portainer por https. Por tanto, abrimos un navegador web y accedemos a https://[dirección ip]:9443

Si no sabemos la dirección IP de la máquina ejecutamos:

ifconfig

Introducimos una contraseña para el usuario admin. A continuación tenemos que configurar portainer para que gestione nuestra instalación de docker. Hacemos click en Get Started - local - Containers y nos indica que tenemos dos contendores, uno apagado que es la prueba que hemos realizado anteriormente de docker (lo borramos seleccionándolo y Remove) y el otro contenedor es el propio Portainer.


Vamos a definir un nuevo Stacks que es una forma visual de gestionar Docker Compose. Hacemos click en Stacks - Add stack y lo denominamos como queramos (en mi caso domótica) y en editor pegamos nuestros comandos de compose. Para ello nos vamos a la documentación de Home Assitant y en el apartado de instalación docker podemos ver la estructura del stack de Docker Compose:

version: '3'
services:
  homeassistant:
    container_name: homeassistant
    image: "ghcr.io/home-assistant/home-assistant:stable"
    volumes:
      - /PATH_TO_YOUR_CONFIG:/config
      - /etc/localtime:/etc/localtime:ro
    restart: unless-stopped
    privileged: true
    network_mode: host

  node-red:
    image: nodered/node-red:latest
    environment:
      - TZ=Europe/Amsterdam
    ports:
      - "1880:1880"
    volumes:
      - /PATH_TO_YOUR_CONFIG:/data

Lo copiamos y lo pegamos en el apartado edit. Ahora hay que indicarle dónde vamos a instalar home assistant. Para ello hay que sustituir /PATH_TO_YOUR_CONFIG por /docker/homeassistant

A continuación desplegamos el stack haciendo click en Deploy the stack (este proceso puede demorarse dependiendo de vuestro hardware). Una vez creado el stack volvemos a Containers y comprobamos que se ha lanzado correctamente 


Si hacemos click sobre homeassistant - Logs podemos ver que se ha ejecutado correctamente:

Ahora ya podremos acceder a Home Assitant por medio de un navegador web en modo no seguro: http://[dirección ip]:8123


Cada vez que arranque nuestro servidor se ejecutará automáticamente docker y, por defecto, los contenedores que he hemos configurador, Portainer y Home Assistant


Este método es un poco más complicado que instalar directamente Home Assistan Operating System pero nos da mayor flexibilidad para crecer en nuestro sistema domótico.

Ip fija en Ubuntu Server

Para poder acceder remotamente al servidor necesitamos configurar una IP fija en ubuntu server. i estás utilizndo una Raspberry Pi puedes ver un ejemplo en este artículo. Por defecto, la IP la obtiene por DHCP. Para comprobar la configuración ejecutamos el siguiente comando:

cat /etc/netplan/00-installer-config.yaml

Devolverá la configuración de red configurado en el fichero 00-installer-config.yaml:

network:
  ethernets:
    enp0s3:
      dhcp4: true
  version: 2

Para configurar una ip fija tenemos que modificar el fichero 00-installer-config.yaml:

sudo nano /etc/netplan/00-installer-config.yaml

Modificaremos la configuración:

network:
  ethernets:
    enp0s3:
      dhcp4: no
      addresses: [192.168.1.10/24]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8,8.8.4.4]
  version: 2

donde 192.168.1.10 es la IP fija que queremos asignar y 192.168.1.1 es la IP de nuestro router. Como servidores DNS puedes utilizar los genéricos de Google por ejemplo o los servidores DNS que te proporciona tu proveedor de internet.

Guardamos con CTRL+O y salimos con CTRL+X y aplicamos la configuración con sudo netplan apply. Para comprobar ejecutamos ip addr.

Por último, reiniciamos el sistema con reboot.

Ya tenemos configurada una IP fija en nuestro servidor e instalado Home Assistant.


No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.