После новости о том, что Docker Hub ввел ограничения для пользователей из России, в нашем телеграм чате про Home Assistant начался бурный поиск решения проблемы того, что Home Assistant не обновляется или не устанавливаются аддоны.
Telegram чатыВсе об умных домахhttps://sprut.ai/info/telegramСам Home Assistant не располагается на Docker Hub, хоть для работы и использует Docker в системе. Некоторые популярные аддоны требуют туда доступ для обновлений и установки. Больше всего проблем было у пользователей Mosquitto и ZigBee2MQTT, ведь это самый популярный способ подключить ZigBee устройства к Home Assistant. Пользователи других продуктов для умного дома тоже ощутили проблемы с установкой и обновлением. Это коснулось пользователей HomeBridge и NodeRED, которые устанавливали их в Docker.
Ошибка, которую получают пользователи, выглядит следующим образом:
Есть способ решить проблему. Начнем с простых решений для тех, кто использует в своих домашних лабораториях и умных домах Linux системы с установленным Docker и имеет возможность редактировать файлы на host системе через SSH.
Восстановление работы Docker на Linux, Windows и Mac OS
Для того, чтобы восстановить доступ к Docker на этих операционных системах, необходимо отредактировать файл конфигурации вашего Docker на вашем сервере или компьютере. Он расположен в следующих местах:
Linux, обычная установка | /etc/docker/daemon.json |
Linux, rootless режим (когда вы работаете из под обычного пользователя) | ~/.config/docker/daemon.json |
Windows | C:\ProgramData\docker\config\daemon.json |
WIndows с Docker Desktop | C:\Users\<Пользователь>\.docker\daemon.json или Preferences -> Docker engine (в самом приложении) |
Mac OS | ~/.docker/daemon.json |
Файла может не быть, поэтому его нужно создать и внести в него следующие изменения:
{
"registry-mirrors": [
"https://mirror.gcr.io",
"https://daocloud.io",
"https://c.163.com/",
"https://huecker.io/",
"https://dockerhub.timeweb.cloud",
"https://registry.docker-cn.com"
]
}
Если там уже есть какие то параметры, то нужно добавить указанный выше код после параметров и не забыть поставить запятую перед этим кодом. Например:
{
"log-driver": "journald",
"storage-driver": "overlay2",
"registry-mirrors": [
"https://mirror.gcr.io",
"https://daocloud.io",
"https://c.163.com/",
"https://huecker.io/",
"https://dockerhub.timeweb.cloud",
"https://registry.docker-cn.com"
]
}
После этого, вам необходимо перезагрузить сервис Docker. В Linux это выполняется командой (необходимо использовать sudo если вы залогинились из под обычного пользователя):
systemctl restart docker
После этого, ваш Docker будет работать как и ранее.
Решение для пользователей Home Assistant OS с возможностью установки дополнений
Так как система Home Assistant OS устанавливается из образа и уже имеет полный набор необходимых файлов, ее система находится в Read Only режиме, то есть приведенный выше вариант вам не подойдет.
Существует несколько решений. Одно из них, с помощью SSH доступа до вашего HA, другой с помощью дополнения AdGuard.
Решение через SSH доступ до Home Assistant
Вам необходимо установить дополнение из стандартного магазина дополнений под названием Advanced SSH & Web Terminal. Его необходимо установить, и после установки, в его конфигурации добавить любой пароль и отключить Режим защиты операционной системы
После этого необходимо запустить аддон и перейти в его веб интерфейс и выполнить следующую команду:
docker run -it --privileged --rm -v /dev:/dev --pid host cr.yandex/crp4oik6lbkii54bpnne/squashfs-tools sh -c "echo 'bWtkaXIgL21udC9zZGEzCnVuc3F1YXNoZnMgLWQgL21udC9zZGEzIC9kZXYvc2RhMwphcGsgYWRkIGpxCmpxICcuICsgeyJyZWdpc3RyeS1taXJyb3JzIjogWyJodHRwczovL21pcnJvci5nY3IuaW8iXX0nIC9tbnQvc2RhMy9ldGMvZG9ja2VyL2RhZW1vbi5qc29uID4gL21udC9zZGEzL2V0Yy9kb2NrZXIvZGFlbW9uX3RtcC5qc29uICYmIG12IC9tbnQvc2RhMy9ldGMvZG9ja2VyL2RhZW1vbl90bXAuanNvbiAvbW50L3NkYTMvZXRjL2RvY2tlci9kYWVtb24uanNvbgpta3NxdWFzaGZzIC9tbnQvc2RhMyAvbW50L3NkYTMuc3F1YXNoZnMgCnRydW5jYXRlIC1zIDI2ODQzNTQ1NiAvbW50L3NkYTMuc3F1YXNoZnMgCmRkIGlmPS9tbnQvc2RhMy5zcXVhc2hmcyBvZj0vZGV2L3NkYTMKZGQgaWY9L2Rldi9zZGEzIG9mPS9kZXYvc2RhNQplY2hvIC1lICJcblxuUkVCT09UIEhBIE9TIE5PV1xuXG4iIApyZWJvb3QgLWYK' | base64 -d > /tmp/script.sh && sh /tmp/script.sh"
Если декодировать "многабукав", то будет понятно, что этот скрипт делает:
mkdir /mnt/sda3
unsquashfs -d /mnt/sda3 /dev/sda3
apk add jq
jq '. + {"registry-mirrors": ["https://mirror.gcr.io"]}' /mnt/sda3/etc/docker/daemon.json > /mnt/sda3/etc/docker/daemon_tmp.json && mv /mnt/sda3/etc/docker/daemon_tmp.json /mnt/sda3/etc/docker/daemon.json
mksquashfs /mnt/sda3 /mnt/sda3.squashfs
truncate -s 268435456 /mnt/sda3.squashfs
dd if=/mnt/sda3.squashfs of=/dev/sda3
dd if=/dev/sda3 of=/dev/sda5
echo -e "\n\nREBOOT HA OS NOW\n\n"
reboot -f
1. Создает каталог /mnt/sda3.
2. Извлекает содержимое файловой системы из устройства /dev/sda3 в каталог /mnt/sda3.
3. Устанавливает пакет jq.
4. Обновляет файл конфигурации Docker daemon (daemon.json), добавляя в него зеркало реестра.
5. Создает SquashFS образ из каталога /mnt/sda3.
6. Урезает SquashFS образ до 268435456 байт (256 MB).
7. Копирует содержимое SquashFS образа на устройство /dev/sda3.
8. Копирует содержимое устройства /dev/sda3 на устройство /dev/sda5.
9. Выводит сообщение о необходимости перезагрузки системы Home Assistant.
10. Немедленно перезагружает систему.
Более простое решение с AdGuard
Еще одно решение, которое также всплывало в нашем чате Home Assistant, предложено нашим пользователем AlexxIT и является стабильным решением на сегодняшний день. Вам необходимо установить аддон AdGuard Home
Запустить после установки и перейти в его веб интерфейс. Далее надо перейти в раздел Settings -> DNS Settings
И добавить в раздел Upstream DNS Servers строку:
[/docker.com/docker.io/]https://dns.controld.com/comss
После этого необходимо нажать кнопку Apply ниже и перейти в настройки сетевых интерфейсов Home Assistant. Для этого надо перейти в Настройки - Система - Сеть, открыть настройки IPv4, переключить в статический режим, прописать 127.0.0.1 в качестве DNS сервера и сохранить изменения.
После этого у вас должен восстановиться доступ до Docker Hub и вы сможете обновлять аддоны и систему как и раньше
Все перечисленные методы обхода блокировок могут в любой момент перестать работать, поэтому предлагаем вам следить за новостями в нашем чате Home Assistant или в нашем новостном канале. Также не забываем, что у нас очень развитое сообщество и чатов значительно больше. С полным списком чатов, можно ознакомиться по ссылке ниже.
Telegram чатыВсе об умных домахhttps://sprut.ai/info/telegram