Niniejsza notatka pokazuje jak utworzyć na jednym fizycznym sprzęcie (w moim przypadku HP t630 z monitorem dotykowym) mikroserwer wraz z możliwością fizycznego zarządzania przez ten sprzęt.
Całość oparta na systemie Ubuntu Server 24.04 z minimalnym GUI, z kontenerami Dockerowymi: Portainer, Home Assistant Core i Nextcloud.
Założenie - jedna fizyczna maszyna na panel i serwer, całość serwera zamknięta w jednej obudowie, dyski w kompilacji RAID1, pełen mirror (system i dane), kontenery aktualizowane ręcznie za pomocą jednej komendy.
Kroki - komendy od kroku 2 proszę przeklejać ze źródeł, nie wiem czemu mi tu spacje ze skryptów pouciekały…
Instalacja Ubuntu Server. Potem: sudo apt update && sudo apt upgrade -y
następnie instalacja GUI: sudo apt install ubuntu-desktop-minimal
po zainstalowaniu wpisać: startx
i po wyświetleniu pulpitu restart, a po nim poustawianie systemu według własnych preferencji. Reset.
Po przeładowaniu systemu zalogować się na konto root komendą sudo su, podać haslo i załączyć: sudo apt-get update
a później cały skrypt:
Instalacja Portainer, HA i Nextcloud: cd /opt
tam utworzyć:
sudo nano docker-compose.yaml
W edytorze wkleić cały skrypt skompilowany z powyższych źródeł:
Po zapisaniu skryptu uchomić: docker-compose up -d
Logowanie:
Portainer https://<IPADDRESS>:9443
Home Assistant http://<IPADDRESS>:8123
Nextcloud https://<IPADDRESS>:8765
Restart. Po przeładowaniu systemu zalogować się na konto root komendą sudo su, podać hasło i utworzyć skrypt do aktualizacji kontenerów: cd /opt
i utworzyć: nano update.sh
w nim wkleić cały skrypt:
Zapisać skrypt i w lokalizacji cd /opt wydać polecenie: sudo ./update.sh
Po wszystkim zalecam reset serwetka i po przeładowaniu załączenie kontenerów przez przegladarkowy Portainer. Niestety nie wiem czemu po aktualizacji kontenerów nie chcą się one automatycznie załadować i stąd ten reset i ręczny start.
Zdalny dostęp ZeroTier: curl -s https://install.zerotier.com | sudo bash
a następnie: zerotier-cli join <nazwa sieci>
UPDATE:
Witajcie. Na początku mały ukłon w stronę szopena i anglera - ogromne dzięki za wasze uwagi, pomoc i wsparcie!!!
Nastąpił transfer mikroserwera z t630 na t640 - zmiany: Debian zamiast Ubuntu; brak RAID. Kopia zapasowa - będzie albo dysk podłączony do routera albo RAID przez usb - na razie po udanym uruchomieniu kolejnych kontenerów i potwierdzeniu prawidłowego działania leci Clonezilla.
Mała modyfikacja dotycząca repozytoriów - korzystam z oficjalnych z małymi modyfikacjami według wspomnianych źródeł.
W Portainerze tworzymy stos Nextcloud - opierałem się tym razem na wsadzie od AdminAkademia - jest sensowniejszy, znaleźć go można na jego kanale YouTube.
Tak na szybko, uwaga generalna dla czytających ten poradnik. Przedstawiona tu instalacja Home Assistant to wersja Core.
Nie ma w przypadku takiej instancji Supervisora i sklepu z dodatkami AddOn’s.
Jest jeden kontener z HA i ewentualna możliwość doinstalowania, w ramach tego serwera/kontenera samego HACS.
W dokumentacji HA jest to metoda opisana jako Home Assistant Container.
Generalnie taki sposób instalacji jest dla osób, które znają i rozumieją działanie wirtualizacji Docker i wiedzą na jakie ryzyka wystawiają swój serwer w przypadku wystawiania go na świat. Zwłaszcza w przypadku, gdzie nadajemy podwyższone uprawnienia dla tworzonych użytkowników grupy docker. Każdy AddOn HA możemy tu zastąpić własnym kontenerem i korzystać z całej masy dostępnych projektów w tej formie. Ale zarządzanie systemem hosta i bezpieczeństwo danych są po naszej stronie.
Co bym też gorąco polecał, to zapoznanie się na początek z tworzeniem kontenerów za pomocą Docker Compose i tworzenia pliku (w YAML), który określa całą konfigurację tworzonego kontenera. Tu dla początkujących polecam zaczynać nie od Portainer’a, a od łatwiejszej platformy jaką jest projekt (w formie kontenera oczywiście) Dockge. Zarządzie kontenerami na bazie stacks, które pozwalają na ich odtwarzanie, wersjonowanie i przenoszenie.
Portainer jest zwyczajnie zbyt potężnym narzędziem w rękach nieświadomych użytkowników, a do tego trzyma stacks jako ściśle powiązane z nim byty.
Mam jeszcze sporo uwag do tego poradnika… Radzę na razie potraktować go jako fajną formę poznawania możliwości tej instancji, dla eksperymentu. Jest to tylko jedna z możliwych ścieżek, bo tak jak wiele jest dystrybucji Linux’a, tak wiele mamy możliwości wykorzystywania narzędzi w nim zawartych. A elastyczność zastosowania kontenerów Docker jest ogromna. Odpowiedzialność administratora również. Jak widać brakuje opisu jak wykonywać bezpiecznie aktualizacje, jak tworzyć kopie zapasowe i parę innych strategicznych dla usług serwerowych aspektów, gdzie HAOS załatwia je często za nas.
Bardzo dziękuję za powyższe uwagi. No zapomniałem na górze napisać… Sorki.
Jeśli mogę, to jeszcze dodam:
Wrzuciłem notatkę jako swego rodzaju ciekawostkę - że można, że się da mieć i HA i serwer plików i jeszcze panel na jednym fizycznym sprzęcie.
Przy założeniach jakie postawiłem sobie i opisałem na początku oraz dla eksperymentów lub uczenia się całkiem fajnie się to sprawdza. Ale jest to moja subiektywna ocena na zasadzie “u mnie działa”. A i uczę się dzięki temu każdego dnia.
Addony są super - bardzo pomagają. Ale bez nich też da się żyć. Tylko trzeba więcej główkować.
I to jest to, co mnie na tym etapie najbardziej boli - jedno ze źródeł z których korzystałem do notatki podaje skrypt (u mnie pkt 13) - ale już wiem, że to nie działa do końca tak jak powinno - no chyba że coś schrzaniłem… Dlatego opisałem w pkt 13 jak ja sobie radzę - komenda skryptu, wyłączenie kontenerów, restart całości, załączenie kontenerów.
Dlatego, że tak skonfigurowałeś nieświadomie działanie tego w pliku docker-compose.yaml, który u ciebie odpowiada za tworzenie i konfigurację trzech kontenerów na raz - Portainer, HA i Nextcloud. Jest to dokładnie wiersz - restart.
I tak always - dla Portainr’a i unless-stopped dla HA i Nextcloud.
Moim zdaniem bezpieczniej (dla nowego użytkownika) było by robić osobne pliki dla każdego kontenera. Aktualizacja jednego kontenera nie wpływa na pozostałe.
Zapoznaj się z Dockge. W sumie mogę bardziej przybliżyć te rozwiązanie, bo wyjdzie z korzyścią dla wszystkich chcących spróbować przygody z Docker i łatwo zarządzać kontenerami.
Jak już mamy zainstalowanie środowisko Docker’a na hoście i Docker Compose to na stronie Dockge mamy fajny generator dla stworzenia naszego wyjściowego kontenera Dockge poprzez wygenerowanie pliku compose.yaml z parametrami jakie chcemy.
podajemy ścieżkę gdzie przechowywane będą nasze stacks czyli pliki compose.yaml dla każdego kontenera (domyślnie linuxowy folder opt)
podajemy port pod jakim będzie dostępny graficzny interfejs zarządzania Dockge
pobieramy gotowy plik compose.yaml - w sumie tylko dla celów archiwizacji.
Na tej samej stronie poniżej mamy opis co należy dalej zrobić z tym plikiem na maszynie gdzie chcemy uruchomić nasz kontener z Dockge, wykorzystując terminal.
Strona jest tak sprytnie pomyślana, że pozwala na dynamiczne generowanie komend z naniesionymi już zmianami ścieżki i portu w pliku compose.yaml.
narzędzie curl ściąga nasz plik compose.yaml, do katalogu w którym się aktualnie znajdujemy (dockge), ze strony dockge.kuma.pet z konfiguracją ścieżki i portu jaką wybraliśmy.
docker compose up -d
wydajemy polecenie aby Docker wdrożył plik w życie, stworzył i uruchomił kontener z Dockge.
Od tej pory logując się do interfejsu po adresie IP i porcie jaki podaliśmy przy konfiguracji możemy następne kontenery tworzyć już przez piękne UI naszego Dockge.
Kurcze - i właśnie tak ja rozumiem forum (byłem kiedyś na takim, gdzie szukając odpowiedzi na swoje pytania, zamiast odpowiedzi/pomocy “dostałem z liścia” i zostałem wyśmiany… temu szukałem sam i powstało takie moje “cudo”)!!!
Ktoś coś wrzuci (nieporadnie, jak ja), ktoś inny doda coś od siebie, i z tego może się urodzić coś naprawdę fajnego!!!
Dziękuję angler!!!
W kolejnym wpisie pokażę jak stworzyć nowy kontener przy użyciu Dockge.
Za przykład posłuży kolejny i bardziej popularny projekt tego samego autora jakim jest Uptime Kuma
Na powitalnej stronie projektu mamy minimalizm, z którego słyną projekty tego twórcy. Jest jedna komenda dla docker run. Jak przekształcić takie polecenie
wklejamy wiersze z naszego przykładowego pliku compose.yaml
bardzo ważne aby świadomie z edytować zapisy mapowania zasobów dla volumes, ports itd.
Gdy zrozumie się jak działają te zapisy to wszystko będzie prostsze. Podstawowa zasady mapowania tu opisałem: Freegate instalacja - #4 przez angler
Pozostaje zapisać a następnie uruchomić, trzymać kciuki i czytać logi w oknie terminala kontenera.
W każdej chwili możemy z tego UI zatrzymać kontener, zaktualizować go, nanieść zmiany i wdrożyć ponownie. A jak już działa to łatwo przeskoczyć do UI uruchomionej usługi dzięki podręcznym przyciskom:
W sumie trochę to wszystko przekombinowałeś, ale wartość edukacyjna jest z pewnością duża. Jak już korzystałeś z kanału YT Admin Akademia, to on pokazywał rozwiązania jeszcze prostsze w postaci np CasaOS jest też podobny projekt:
Ale rozumiem, że koniecznie chciałeś wykorzystać ekran monitora i dlatego ten wybór z pulpitem. Ale jak widać możliwości jest sporo.
Wisi sobie pod biurkiem. Wykorzystywany jest w domu przeze mnie, żonę i córkę.
Przykłady wykorzystania na kilku zdjęciach - kalendarz, pogodynka, kamera. Są jeszcze gniazdka i światła, jest monitor systemu z monitorem drukarek i monitorem baterii w termometrach i czujnikach. Moje (na razie) MikroHA.
Przez nextclouda przerzucamy np. zdjęcia. Dodatkowo ja mam np. dostęp do dokumentów, które muszę mieć pod ręką.
Takie “mikro” na 3 osoby. Nam się przydaje.
Testowałem podobny monitor w wersji BA92 / 1024 x 768 px - 12.1". Działał bardzo responsywnie, ale pancerna obudowa z odlewu alu ostatecznie mnie przekonała do jego zwrotu. W komplecie miał czytnik RFID. Jest nadal aktualna oferta na te monitorki, sprzedawane również w parze z mniejszym modelem bez dotyku, na znanym portalu na A. Cena bardzo atrakcyjna, nawet lepsza niż w maju, bo spadła o połowę. Ale to dlatego, że pojawiło się więcej tego używanego sprzętu i są konkurencyjne ceny.
Z tej serii producenta dostępne są na znanym portalu 4 modele:
BA90 8" bez dotyku
BA92 12,1" z dotykiem
BA93 15" z dotykiem
BA93W 15,6" z dotykiem
Osobiście mam jeszcze - poza tym ze zdjęcia - dwa pierwsze - we wszystkich wyciągnąłem czytniki RFID.
Pierwszy chodzi na zasilaczu 12V 1,5A (drugi też daje na nim radę); pozostałe na 12V 2,25A. Jak mierzyłem pobór mocy tanim miernikiem z marketu budowlanego, to w takim czuwaniu wyszło mi jakieś 0,5W-1W; w działaniu - ustawienie na 25% - jakieś 5-7W. I trzeba zaznaczyć, że te 25% nawet w słońcu naprawdę daje radę.
Do działania nie można się przyczepić i jak się na nie patrzy od frontu, to na prawdę ładnie wyglądają. Tyle że ta właśnie wspomniana obudowa… No toporna jest jak fiks.
Zgadza się w 100% - trzeba ogarniać choćby co nie co to narzędzie. Natomiast świetnym łopatologicznym sposobem uczenia/nauczenia się go i potem samodzielnego podejmowania działań jest kanał AdminAkademia, a konkretnie Playlista, openmediavault od odcinka chyba 5.
Nie znajduję informacji, jak zainstalowałeś przeglądarkę web? A może jakoś inaczej wyświetlasz webUI z HA na tym monitorze dotykowym. Czy sterowniki dla dotyku było od razu w systemie?
Przeglądarka Mozilla.
I teraz dla wyjaśnienia słów kilka…
Debian jest w wersji desktop, a przez “widzi-mi-się” rozumiem posuwanie z Debiana wszystkich gier i różnego rodzaju innych programów, które nie są tu do niczego potrzebne (Libre Office i takie tam inne).
Jeśli chodzi o instalację serwerowej wersji Debiana i dokładanie do niej GUI, to tak też można, ale… Ta opcja mi coś nie pasowała - nie wiem, cały czas miałem wrażenie, że czegoś tej instalacji brakuje, ale z racji że nie jestem informatykiem, nie potrafię wytłumaczyć czego - ot przeczucie.
Przy Ubuntu jest prościej. Wszystko jest w wersji desktop. Zresztą instalując na wersji serwerowej desktop-minimal też Mozilla pojawia się od razu.
A dlaczego finalnie Debian? Bo jest mniej zasobożerny niż Ubuntu.
W instalacjach testowych instalowałem też na próbę Chrome, ale ostatecznie pozostałem przy Mozilli.
Po zainstalowaniu systemu sterowniki są od razu. Zauważyłem jednak pewną prawidłowość w przypadku obu Linuxów - jak już się po instalacji pojawi interfejs GUI to przed paluszkowaniem najlepiej zrobić od razu apt update && apt upgrade -y i zrestartować kompa - dopiero po tym zabiegu dotyk działa w pełni responsywnie.