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.
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.
I mamy pogląd naszych zainstalowanych systemów. Łączymy się lokalnie
I widzimy, że zainstalował się jeden kontener ( to oczywiście Portainer )
Przechodzimy dalej i możemy już zarządzać naszym kontenerem.
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.
I po wpisaniu adresu i portu w przeglądarkę możemy już zaczynać zabawę.
Po naciśnięciu ikony dokumentu ( na poprzednim zdjęciu ) możemy zobaczyć logi Domoticza.
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.
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.
PolubieniePolubienie
Moim zdaniem zdecydowanie warto. Obok Domoticza mam wiele innych usług. Stabilnie działa. Polecam.
PolubieniePolubienie
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.
PolubieniePolubienie
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
PolubieniePolubienie
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.
PolubieniePolubienie
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
PolubieniePolubienie
Domoticz w kontenerze ma adres 172.17.0.3. Co zrobić, aby widział sieć zewnętrzną – tj. sieć maszyny na której pracuje kontener?
PolubieniePolubienie
Witaj. Z repozytorium joshuacox/mkdomoticz powinien chodzić od strzału na adresie maszyny i porcie 8080 np. 192.168.1.23:8080. Możesz spróbować dodać flagę –net=host, ale nigdy nie było to u mnie konieczne. Pozdrawiam.
PolubieniePolubienie
Koledzy opanowaliście to bo mam to samo i nie wiem jak zmienić aby uzyskać dostęp z zewnątrz.
PolubieniePolubienie
[…] jest jeszcze Docker. Jak go okiełznać pisałem w Docker i Domoticz – pierwsze kroki. Dla wersji Hass.io komenda będzie jak […]
PolubieniePolubienie
Cześć,
jak przywracasz pełną konfigurację i bazę z RPI? Nadpisujesz tylko domoitcz.db? Czy coś więcej trzeba zrobić?
Świetny artykuł – dobra robota
PolubieniePolubienie