Зачем устанавливать Home Assistant в Docker?
Docker контейнер предоставляет изолированную среду, что обеспечивает стабильность работы Home Assistant и предотвращает конфликты с другими программами или зависимостями на вашем хосте. При необходимости вы можете легко перенести вашу установку Home Assistant на другой сервер или компьютер, просто экспортировав и импортировав Docker контейнер. А также обладает рядом других преимуществ.
Для начала нам понадобится чистая установка Debian скачать которую можно с официального сайта. Во время установки обязательно ставим SSH server, графическую оболочку (для удобства). Ставим xfce при установке или через команду:
sudo apt update
sudo apt install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils
А также xrdp для удалённого доступа к графическому рабочему столу Debian с помощью RDP:
sudo apt install xrdp
sudo adduser xrdp ssl-cert
sudo systemctl restart xrdp
Установка Docker и Portainer
Обновляем пакеты и добавляет поддержку HTTPS
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
Добавляем GPG-ключ (для безопасности)
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
Добавляем Docker в список источников APT
echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Добавляем текущего пользователя в docker.sock
sudo usermod -aG docker ${USER}
sudo chmod 666 /var/run/docker.sock
Создаём скрипт docker-compose для хранения контейнеров
mkdir home-assistant
cd ./home-assistant
sudo nano docker-compose.yaml
docker-compose.yaml
version: '3.0'
services:
portainer:
container_name: portainer
image: portainer/portainer-ce:latest
restart: unless-stopped
ports:
- "9000:9000/tcp"
- "9443:9443/tcp"
environment:
- TZ=Europe/Moscow
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock
- ./portainer/data:/data
Запуск Docker
docker compose up -d
Установка Home Assistant
В файл docker-compose.yaml после:
version: '3.0'
services:
portainer:
container_name: portainer
image: portainer/portainer-ce:latest
restart: unless-stopped
ports:
- "9000:9000/tcp"
- "9443:9443/tcp"
environment:
- TZ=Europe/Moscow
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock
- ./portainer/data:/data
Добавляем
homeassistant:
container_name: homeassistant
image: "ghcr.io/home-assistant/home-assistant:stable"
restart: unless-stopped
privileged: true
ports:
- "8123:8123"
environment:
- TZ=Europe/Moscow
volumes:
- ./homeassistant/:/config
- /etc/localtime:/etc/localtime:ro
И создаём новую папку
mkdir homeassistant
Компонуем
docker compose up -d
Далее в Portainer в разделе containers видим наш HA.