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 -
lubsu
przechodzicie 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-internal
towrzymy folder, który zdeklarowaliśmy w naszym serwisie - wydajemy polecenia:
systemctl enable docker-internal.service
w celu włączenia autostartu dla naszego dockera orazsystemctl start docker-internal.service
w celu jego uruchomienia. - Komendą
systemctl status docker-internal.service
sprawdzamy status naszego serwisu - pozycjaActive
powinna mieć statusactive (running)
. - Wydajemy polecenie
echo $SHELL
i jeśli odpowiedź jest/usr/bin/bash
to edytujemy plik~/.bashrc
, jeśli odpowiedź jest/usr/bin/zsh
to 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-internal
orazdocker-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.