Logo Studenta

Hassio sobre Docker

¡Este material tiene más páginas!

Vista previa del material en texto

Antes de nada, si vienes de una versión de Home Assistant haz un full backup (puede tardar un poco) y copiatelo en el PC (el fichero que genera es un .tar en la carpeta backup).
Descargar la última versión que exista de Raspbian
https://www.raspberrypi.org/downloads/raspbian/
A gusto de cada uno, hay tres:
· La lite “Raspbian Buster Lite”.
· La intermedia con escritorio “Raspbian Buster with desktop”
· La full, en mi caso la full “Raspbian Buster with desktop and recommended software”
Si usas la versión lite puede que alguna cosa no te funcione y tengas que instalar algo antes como puede ser el curl.
Grabarlo en un microSD de 16GB o 32GB, se puede usar de más tamaño pero si luego haces una copia tardará mucho y ocupará mucho, para mi al menos con este tamaño es suficiente.
Para grabar la tarjeta se puede usar Etcher
https://www.balena.io/etcher/
Cuando finalice cuidado con este mensaje, dale a cancelar:
Si has usado la imagen con escritorio te lo arrancará por defecto y tendrás disable el SSH, por lo que o lo configuras con un monitor/teclado o antes de poner la SD desde el PC modificas lo siguiente.
En el pc nos aparecerá la unidad boot (la tarjeta SD), creamos un fichero que se llame ssh, sin extensión y que esté vacío:
Botón de la derecha del ratón nuevo documento de texto y el nombre ssh quitando la extensión .txt.
Luego metemos la SD en la PI, arrancamos, esperamos un poco y nos conectamos por ssh, por ejemplo, con Putty:
El usuario es pi y la password es raspberry (acordaos de cambiarla)
Actualizamos:
sudo apt update
sudo apt upgrade
sudo apt-get install \
 jq \
 apt-transport-https \
 ca-certificates \
 curl \
 software-properties-common
Instalamos Docker:
sudo curl -sSL https://get.docker.com/ | sh
sudo reboot
docker -v
Instalamos la imagen de Portainer (para gestionar los Docker)
sudo docker volume create portainer_data
sudo docker run -d \
--name portainer \
--restart=always \
-p 9000:9000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data portainer/portainer
Instalamos los Docker de Hassio
sudo curl -sL https://raw.githubusercontent.com/home-assistant/hassio-installer/master/hassio_install.sh | sudo bash -s -- -m raspberrypi3
(todo eso es la misma línea)
Con esto la instalación está finalizada
Ya nos podemos conectar a Portainer para gestionar Docker:
http://<ip de tu raspberry>:9000/
A Home Assistant como es la primera vez tarda bastantes minutos:
http://<ip de tu raspberry>:8123/
Si no vienes de 0 y tienes un backup para recuperarlo, instalas SAMBA y te copias en la carpeta backup el que tuvieras hecho de la antigua Raspberry. A mi no me veía el fichero, reinicié los contenedores y ya lo ve (quizás es un poco de fuerza bruta, pero funciona)
Con todo esto ya podemos recuperar el backup:
Esto tarda un buen rato.
Si queréis ver como va el arranque os podéis conectar a portainer, entrar en contenedores y ver el log de homeassistant, es el último en arrancar:
NETDATA COMO CONTENEDOR
grep docker /etc/group | cut -d ':' -f 3
Una vez tenemos el numero pasamos a la creación del contenedor con la siguiente sentencia (sustituir el 995 de «-e PGID=» por el que os ha devuelto el comando anterior en caso de ser otro numero distinto):
sudo docker run -d --name=netdata \
-p 19999:19999 \
-v /proc:/host/proc:ro \
-v /sys:/host/sys:ro \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-e PGID=995 \
--cap-add SYS_PTRACE \
--security-opt apparmor=unconfined \
--restart always \
netdata/netdata:v1.19.0
Una vez tenemos el numero pasamos a la creación del contenedor con la siguiente sentencia (sustituir el 999 de «-e PGID=» por el que os ha devuelto el comando anterior en caso de ser otro numero distinto):
INSTALACIÓN Pi-Hole
sudo docker run -d \
 --name pihole \
 -p 53:53/tcp -p 53:53/udp \
 -p 80:80 \
 -p 443:443 \
 -e TZ="Europe/Madrid" \
 -v "$(pwd)/etc-pihole/:/etc/pihole/" \
 -v "$(pwd)/etc-dnsmasq.d/:/etc/dnsmasq.d/" \
 --dns=127.0.0.1 --dns=1.1.1.1 \
 --restart=unless-stopped \
 pihole/pihole:latest
OPEN-VPN COMO CONTENEDOR
vamos a descargar el contenido del repositorio 
git clone https://github.com/kylemanna/docker-openvpn.git
Accedemos a la carpeta que hemos descargado
cd docker-openvpn
Vamos a crear la imagen para desplegar los contenedores a paritr de esta
docker build -t mivpn .
Lo siguiente es crear un directorio, donde vamos a conectar el volumen de trabajo de los contenedores, en este directorio vamos a guardar las llaves públicas, privadas y ficheros de configuración.
cd ..
mkdir datos-vpn
Ahora vamos a desplegar el primer contenedor efímero, puesto que solo lo vamos a usar para generar el primer fichero de configuración que será guardado en la carpeta datos-vpn. Evidentemente vamos a tener que añadir a la configuración la ip pública en donde se va alojar el servicio y el puerto que vamos a escuchar, en este ejemplo vamos a usar el 3000.
docker run -v $PWD/datos-vpn:/etc/openvpn --rm mivpn ovpn_genconfig -u udp://tu.dirección.ip.publica:3000
El siguiente paso es generar las llaves y el certificado ya que OpenVPN requiere de una llave privada, otra pública y un certificado.
Por lo que vamos a ejecutar otro contenedor efímero que nos va ayudar a realizar estos ficheros, en la carpeta creada datos-vpn.
docker run -v $PWD/datos-vpn:/etc/openvpn --rm -it mivpn ovpn_initpki
r que nos va hacer de servidor OpenVPN, que va a recoger la configuración que tenemos en la carpeta datos-vpn.
docker run --name mivpn -v $PWD/datos-vpn:/etc/openvpn -d --restart always -p 3000:1194/udp --cap-add=NET_ADMIN mivpn
Añadiendo usuarios
Ahora podemos añadir los usuarios (clientes), generando el fichero .ovpn para cada usuario, vemos que no se va a establecer ninguna contraseña para el usuario, puesto que en este ejemplo vamos a realizar la conexión mediante llave, certificado y usuario.
Para crear el usuario cliente, una vez más vamos a usar un contenedor efímero, tan solo debemos cambiar USUARIO por el nombre de usuario que deseamos.
docker run -v $PWD/datos-vpn:/etc/openvpn --rm -it mivpn easyrsa build-client-full USUARIO nopass
Por último vamos a generar en la carpeta datos-vpn un fichero USUARIO.ovpn con la configuración para este usuario, para ello también usaremos un contenedor efímero.
docker run -v $PWD/datos-vpn:/etc/openvpn --rm mivpn ovpn_getclient USUARIO > $PWD/datos-vpn/USUARIO.ovpn
Ahora nos podemos llevar este fichero USUARIO.ovpn al cliente de OpenVPN para establecer la conexión
sudo docker run -v openvpn_data:/etc/openvpn --rm evolvedm/openvpn-rpi ovpn_genconfig -u udp://albertobloks.duckdns.org
sudo docker run -v openvpn_data:/etc/openvpn --rm -it evolvedm/openvpn-rpi ovpn_initpki
sudo docker run -v openvpn_data:/etc/openvpn -d -p 1194:1194/udp --cap-add=NET_ADMIN -e --restart=always --name openvpn_server evolvedm/openvpn-rpi
sudo docker run -v openvpn_data:/etc/openvpn --rm -it evolvedm/openvpn-rpi easyrsa build-client-full avarade
sudo docker run -v openvpn_data:/etc/openvpn --rm evolvedm/openvpn-rpi ovpn_getclient avarade > avarade.ovpn

Continuar navegando