Cześć.
Jestem nowy z HA ale za to mam przerobione kilka lat z linux więc ogarnąłem sobie instalację i zechciałem dorzucić kilka innych aplikacji do instancji home-assistant. O dziwo HA od razu rzucił problemami typu niekompatybilna instalacja itp. Po przejrzeniu źródła nie znalazłem opcji by zrobić whitelist moich kontenerów więc trzeba było to ogarnąć inaczej a poniżej macie opis jak to sobie zrobić. Jako, że mam świeżą instalację Debian 11 to opis tyczy się tej wersji - w poprzednich wersjach będzie to wyglądało bardzo podobnie o ile nie identycznie:
- Łączymy się SSH do maszyny z HA
- (opcjonalnie - w zależności czy SSH jako root czy user) za pomocą
sudo su -lubsuprzechodzicie na kontoroot. - wydajemy komendę
systemctl cat docker.service- zwróci nam ona zawartość serwisu w systemd. Kopiujemy to co nam się wyświetliło. - wydajemy komendę
systemctl edit --force --full docker-internal.service- otworzy nam się edytor i do niego wklejamy to co skopiowaliśmy w punkcie 3. - szukamy linii zaczynającej się od
ExecStart=i modyfikujemy ją następująco:
5.1 usuwamy parametr-H fd://- określa nam on sposób połączenia hosta docker.
5.2 dodajemy nasępujące parametry (w jednej linii, ja je tu rozpiszę pod sobą w celu opisu do czego one są):
-
-g /var/lib/docker-internal- folder, w którym nasz daemon dockera będzie trzymał obrazy, volume itp -
--host unix:///var/run/docker-internal.sock- nowy sock dla naszego dockera w celu komunikacji z naszą instancją -
--pidfile /var/run/docker-internal.pid- pid file określający ID naszego uruchomionego procesu
5.3 Zapisujemy zmiany i wychodzimy z edytora
- komendą
mkdir -p /var/lib/docker-internaltowrzymy folder, który zdeklarowaliśmy w naszym serwisie - wydajemy polecenia:
systemctl enable docker-internal.servicew celu włączenia autostartu dla naszego dockera orazsystemctl start docker-internal.servicew celu jego uruchomienia. - Komendą
systemctl status docker-internal.servicesprawdzamy status naszego serwisu - pozycjaActivepowinna mieć statusactive (running). - Wydajemy polecenie
echo $SHELLi jeśli odpowiedź jest/usr/bin/bashto edytujemy plik~/.bashrc, jeśli odpowiedź jest/usr/bin/zshto edytujemy plik~/.zshrc - Na końcu pliku dopisujemy dwie pozycje:
alias docker-internal="docker -H unix:///var/run/docker-internal.sock"
alias docker-compose-internal="docker-compose -H unix:///var/run/docker-internal.sock"
- Przeładowujemy shell, z którego korzystamy. Od teraz mamy dostęp do drugiego daemona dockera, który nie narusza integralności HA przy pomocy komend
docker-internalorazdocker-compose-internal, tak więc miłośnicy traefik, watchtower i innych kontenerów znajdą coś dla siebie
Jeśli chcecie to kolejny tutorial mogę wrzucić jak postawić sobie fajny zestaw traefik z podpięciem do jakiejś domenki z SSL itd.
