Новость

Как обойти блокировку Docker для Home Assistant и HA OS. Собрали все рабочие способы

После новости о том, что 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.

Ошибка, которую получают пользователи, выглядит следующим образом:

<html><body><h1>403 Forbidden</h1> Since Docker is a US company, we must comply with US export control regulations. In an effort to comply with these, we now block all IP addresses that are located in Cuba, Iran, North Korea, Republic of Crimea, Sudan, and Syria. If you are not in one of these cities, countries, or regions and are blocked, please reach out to https://hub.docker.com/support/contact/ </body></html>

Есть способ решить проблему. Начнем с простых решений для тех, кто использует в своих домашних лабораториях и умных домах Linux системы с установленным Docker и имеет возможность редактировать файлы на host системе через SSH.

Все перечисленные решения вы используете на свой страх и риск. Они могут перестать работать в любой момент и мы не несем никакой ответственности за прекращение их работы.

Восстановление работы Docker на Linux, Windows и Mac OS

Для того, чтобы восстановить доступ к Docker на этих операционных системах, необходимо отредактировать файл конфигурации вашего Docker на вашем сервере или компьютере. Он расположен в следующих местах:

Linux, обычная установка/etc/docker/daemon.json
Linux, rootless режим (когда вы работаете из под обычного пользователя)~/.config/docker/daemon.json
WindowsC:\ProgramData\docker\config\daemon.json
WIndows с Docker DesktopC:\Users\<Пользователь>\.docker\daemon.json или Preferences -> Docker engine (в самом приложении)
Mac OS~/.docker/daemon.json

Файла может не быть, поэтому его нужно создать и внести в него следующие изменения:

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"
  ]
}

Если там уже есть какие то параметры, то нужно добавить указанный выше код после параметров и не забыть поставить запятую перед этим кодом. Например:

json
Копировать
{ "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 если вы залогинились из под обычного пользователя):

bash
Копировать
systemctl restart docker

После этого, ваш Docker будет работать как и ранее.

Решение для пользователей Home Assistant OS с возможностью установки дополнений

Так как система Home Assistant OS устанавливается из образа и уже имеет полный набор необходимых файлов, ее система находится в Read Only режиме, то есть приведенный выше вариант вам не подойдет.

Существует несколько решений. Одно из них, с помощью SSH доступа до вашего HA, другой с помощью дополнения AdGuard.

Решение через SSH доступ до Home Assistant

Вам необходимо установить дополнение из стандартного магазина дополнений под названием Advanced SSH & Web Terminal. Его необходимо установить, и после установки, в его конфигурации добавить любой пароль и отключить Режим защиты операционной системы

После этого необходимо запустить аддон и перейти в его веб интерфейс и выполнить следующую команду:

bash
Копировать
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"

Если декодировать "многабукав", то будет понятно, что этот скрипт делает:

bash
Копировать
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. Немедленно перезагружает систему.

Это решение имеет временный характер и его необходимо будет повторять каждый раз после каждого обновления Home Assistant. Надо понимать, что вы это выполняете на свой страх и риск.

Более простое решение с AdGuard

Еще одно решение, которое также всплывало в нашем чате Home Assistant, предложено нашим пользователем AlexxIT и является стабильным решением на сегодняшний день. Вам необходимо установить аддон AdGuard Home 

Запустить после установки и перейти в его веб интерфейс. Далее надо перейти в раздел Settings -> DNS Settings

И добавить в раздел Upstream DNS Servers строку:

auto
Копировать
[/docker.com/docker.io/]https://dns.controld.com/comss

После этого необходимо нажать кнопку Apply ниже и перейти в настройки сетевых интерфейсов Home Assistant. Для этого надо перейти в Настройки - Система - Сеть, открыть настройки IPv4, переключить в статический режим, прописать 127.0.0.1 в качестве DNS сервера и сохранить изменения.

После этого у вас должен восстановиться доступ до Docker Hub и вы сможете обновлять аддоны и систему как и раньше

Присвоение вашему Home Assistant статического IP адреса потребует уделить внимание настройкам вашего роутера, чтобы этот адрес больше никому не выдавался. Для этого можно настроить резервирование этого адреса (который был раньше выдан вашему Home Assistant. Как это сделать - вы можете узнать в инструкции к вашему роутеру или спросить в нашем чате Ethernet & WiFi и немножко Unifi

Все перечисленные методы обхода блокировок могут в любой момент перестать работать, поэтому предлагаем вам следить за новостями в нашем чате Home Assistant или в нашем новостном канале. Также не забываем, что у нас очень развитое сообщество и чатов значительно больше. С полным списком чатов, можно ознакомиться по ссылке ниже.

Telegram чатыВсе об умных домахhttps://sprut.ai/info/telegram
0

Вернуться назад
Вернуться назад