Docker i Domoticz – pierwsze kroki.

Na Raspberry Pi przerobiłem już kilka systemów: Domoticza, Homeassistant, OpenHub, Volumio i pewnie jeszcze kilka innych pomniejszych. Pomimo tego, iż mam 5 malinek, do różnych testów jest to zdecydowanie za mało. Jako, iż Domoticz jest moim tzw. systemem produkcyjnym i zależy mi na jego stabilności,  pokusa ciągłej zmiany i ulepszania systemu jest tak wielka, że szukałem rozwiązania, które zapewni mi możliwość eksperymentowania i  jeżeli się sprawdzi uwolni mnie od nieszczęścia padniętej karty SD. Oczywiście jest możliwość ograniczenia strat ( o regularnych kopiach nawet nie wspominam ) poprzez instalacje systemu na pamięci USB, o czym pisałem w poście Instalacaja DOMOTICZ – na USB . Z Raspberry Pi 3 B+ sprawa jest jeszcze łatwiejsza ponieważ ma juz możliwość bootowania bezpośrednio z USB, jednakże z przyczyn przytoczonych powyżej szukałem innego rozwiązania i znalazłem DOCKER.

Próbowałem iść w instalację maszyn wirtualnych na VirtualBox, ale nie mam tak mocnego sprzętu aby pociągnął kilkanaście na raz, a takie aktualnie mam potrzeby. Docker rozwiązuje ten problem. Pozwala umieścić program oraz jego zależności w lekkim, przenośnym, wirtualnym kontenerze, który można uruchomić na prawie każdym serwerze z systemem Linux. Nie będę rozpisywał się o specyfikacji i filozofii konteneryzacji ponieważ są ludzie którzy na pewno mają wiekszą wiedzę na ten temat i w razie potrzeby sprostują moje amatorskie instrukcje. Łopatologicznie rzecz biorąc Doker to takie wirtualne środowisko w systemie Linux, w którym instalujemy inne programy i systemy trochę jak aplikacje. Możemy postawić sobie kilka Domoticzów jednocześnie, na każdym z nich mieć inne urządzenia, co innego testować i z czym innym walczyć i po udanych testach przenieść to do głównego systemu.

Czego będziemy potrzebować. Oczywiście jakiejś maszyny na serwer. Ja mam stary, pasywny nettop ( takie coś jak poniżej ). Ważne aby procesor miał 64bit architekturę ponieważ Docker nie obsługuje 32bit.

Dell OptiPlex FX160 Intel 1.6GHz Flash 2GB RAM 1GB

Na takim czymś ( do wyboru do koloru – od 150 zł ) instalujemy najlepiej Ubuntu Server ( u mnie wersja 16.04 ), chociaż dystrybucja typu Desktop będzie równie dobra. Po wszystkim przechodzimy do instalacji Dockera.

Aktualizujemy oczywiście bazę pakietów.

sudo apt-get update

Dodajemy klucz do repozytorium.

sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

Następnie dodajemy repozytorium.

echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list

Ponownie aktualizujemy bazę pakietów

sudo apt-get update

Sprawdzamy, czy instalujemy Dockera z oficjalnego repozytorium.

apt-cache policy docker-engine

Jeżeli zobaczymy nr wersji kandydującej do instalacji np.

 Kandydująca:   17.05.0~ce-0~ubuntu-xenial

instalujemy Dockera.

sudo apt-get install -y docker-engine

I tyle. Mamy postawionego Dockera. I teraz najfajniejsze. Zarządzanie nim z poziomu wiersza poleceń jest jednak niewygodne, więc bez zbędnego wdawania się w magię poleceń w konsoli od razu instalujemy program do zarządzania kontenerami. Jest ich kilka. Ja wybrałem Portainer. Instalujemy go jako klasyczny kontener. Wydajemy  2 polecenia:

 
sudo docker volume create portainer_data
sudo docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

Trochę potrwa zanim zostaną poprane i rozpakowane wymagane pakiety. Po zakończonej operacji wpisujemy w przeglądarkę adres IP naszego serwera i port: 9000. Tworzymy użytkownika, login i hasło.

FireShot Capture 38 - Portainer - http___192.168.2.167_9000_#_init_admin.png

FireShot Capture 36 - Portainer - http___192.168.2.101_9000_#_auth.png

I mamy pogląd naszych zainstalowanych systemów. Łączymy się lokalnie

fireshot capture 40 - portainer - http___192.168.2.167_9000_#_init_endpoint

I widzimy, że zainstalował się jeden kontener ( to oczywiście Portainer )

fireshot capture 41 - portainer - http___192.168.2.167_9000_#_home

Przechodzimy dalej i możemy już zarządzać naszym kontenerem.

fireshot capture 42 - portainer - http___192.168.2.167_9000_#_containers

Ale nie ma na co czekać. Instalujemy DOMOTICZA. Nic prostrzego. W konsoli wklejamy:

docker pull joshuacox/mkdomoticz

I teraz jako jedno polecenie

docker run --name=domoticz \
        --privileged \
        -d \
        -p 8080:8080 \
        -t joshuacox/mkdomoticz

I to wszystko. Zainstaluje nam się gotowy kontener Domoticza i wystawi usługę na porcie 8080. Jeżeli chcemy możemy zmienić port modyfikując linię na np:

-p 8009:8009 \

oraz strefę czasową na Warszawę

-e TZ=Europe/Warsaw \

Linijka –privileged \ odpowiada za prawidłowe wykrywanie urządzeń np. RFLink do portów USB. Po wszystkim w Portinerze widzimy naszego kontenerowego Domoticza.

FireShot Capture 43 - Portainer - http___192.168.2.167_9000_#_containers.png

I po wpisaniu adresu i portu w przeglądarkę możemy już zaczynać zabawę.

fireshot capture 44 - domoticz - http___192.168.2.167_8080_#_dashboard

Po naciśnięciu ikony dokumentu ( na poprzednim zdjęciu ) możemy zobaczyć logi Domoticza.

FireShot Capture 46 - Portainer_ - http___192.168.2.167_9000_#_contai.png

Kłopotliwe może być znalezienie ścieżki instalacji jeżeli byśmy chcieli np ręcznie dodawać własne pluginy czy skrypy. Ja po prostu wyszukuje plik domoticz.sh na serwerze i zapisuje sobie ścieżkę. U mnie wygląda tak:

/var/lib/docker/overlay2/01202460d31e7587f06edf80ed293633c25849f9e26dd94d6a8b0eda81c9c8a6/merge/src/domoticz

Następnie w mc ( Midnight Commander ) robię dowiązanie symboliczne do dowolnego katalogu i nie muszę dalej grzebać.

Jeżeli ktoś chciałby pobawić się Docker-em na Raspberry Pi sprawę załatwi jedno polecenie, uważam to jednak za „masło maślane”

curl -fsSL get.docker.com -o get-docker.sh && sh get-docker.sh

Nieprzebrana bazę kontenerów znajdziemy w oficjalnym repozytorium – DockerHub .

Zdaję sobie sprawę, że tylko liznąłem temat, ale miało być praktycznie. U mnie działa. W kolejnych wpisach pokaże jak bawić się Homeasstantem, OpenHub, monitorować systemy, robić kopię czy postawić Logitech Media Server. I to oczywiście wszystko w Dockerze.

11 komentarzy do “Docker i Domoticz – pierwsze kroki.

  1. Cześć

    Czy pracuje lepiej niż na raspberry?
    Właśnie mam taki sam plan, ale nie wiem, czy będzie to warte przechodzenia na dell.

    Polubienie

  2. Witam,
    Dzięki za super poradnik. Mam jeden problem – po restarcie Ubuntu i próbie otwarcia Portainer ciągle otrzymuję „błąd wczytywania strony” (oczywiście dla Domoticz wygląda to tak samo). Czy po restarcie należy uruchomić jakąś usługę? Czy dockera trzeba jakoś uruchamiac? Metodą prób wykonuję ponownie polecenie sudo docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer. Wtedy pozwala mi na uruchomienie przez www. niestety zakłada kolejny kontener, więc zapewne to nie jest dobra droga…
    Co należy zrobić, aby po ponownym uruchomieniu dostać się przez www do portainer i domoticz?
    Z góry dzięki za pomoc.

    Polubienie

  3. Witam,
    Udało mi się ogarnąć kwestię uruchamiania Portainer’a po restarcie (znalazłem gdzieś w necie komendę: docker run -d -p 9000:9000 –restart always –name portainer -v /opt/portainer-data:/data -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer. Po ponownym uruchomieniu systemu portainer działa. Niestety po kontener z domoticz jest zatrzymany i wymaga uruchomienia. Jest może (z pewnością jest) jakiś sposób, aby zmusić domoticz po ponowym uruchomieniu do wystartowania? I mam jeszcze jedno pytanie: zmieniam domyślny port dla domoticz (zrobiłem to podczas instalacji – niestety nie mogłem się zalogować przez www; finalnie więc zainstalowałem go na 8080 – i dziala). Kiedy próbuję zmienić go w domoticz.sh (mam dowiązanie symboliczne), to nie działa na nowym porcie, natomiast działa na starym. Robilem restart i nadal nowy nie działa a dziala stary. W portainer – ciągle jest 8080 (niezależnie jaki zmieniam w domoticz.sh). Jest jakiś sposób?
    Pozdrawiam

    Polubienie

  4. Cześć

    Też pracuję na FX160, ale ubuntu chodzi strasznie opornie. Czy też masz podobnie? Przy pracy z innego komputera poprzez ssh jest juz ok.
    Dzięki za tę instrukcję, bardzo mi pomogła.

    Polubienie

  5. Witaj, jako że w tym wpisie na początku napisałeś:
    „Na Raspberry Pi przerobiłem już kilka systemów: Domoticza, Homeassistant, OpenHub, Volumio i pewnie jeszcze kilka innych pomniejszych.”
    Więc postanowiłem wrzucić to pytanie tutaj.
    Pytanie moje brzmi.
    Czy zamierzasz napisać więcej o OpenHab np instalacji. Chociaż to jest za mną.
    Nie mogę sobie poradzić z nowym wiązaniem MQTT 2.4 w PAPER UI w wersji OpenHab 2.4.0 oczywiście.
    Chciałem obsłużyć Sonoff Tasmota z MQTT Binding 2.4
    Nidy nie miałem do czynienie z wcześniejszymi wersjami OpenHub.
    Jeżeli nie to był bym wdzięczny za wyrażenie opinii o tym systemie automatyki. Podobają mi się jego założenia. Lecz to zabawa chyba bardziej dla osób bardzo zaawansowanych.
    Pozdrawiam

    Polubienie

  6. Cześć,
    jak przywracasz pełną konfigurację i bazę z RPI? Nadpisujesz tylko domoitcz.db? Czy coś więcej trzeba zrobić?
    Świetny artykuł – dobra robota

    Polubienie

Dodaj komentarz