[tutorial] Serwer Supla na Raspberry Pi Zero W

Awatar użytkownika
Lector
Posty: 1393
Rejestracja: pt lis 17, 2017 2:26 pm
Lokalizacja: Poznań
Kontakt:

Wiem ze podobny wątek jest, ale wszystkie informację są porozrzucane po całym wątku.
Na wstępie podziękowania dla @lesny8 i @fracz.

Stawiamy system na karcie SD z 2017-11-29-raspbian-stretch-lite.img (na chwilę obecną najnowsza wersja).
Po utworzeniu systemu tworzymy na karcie pliki:
- ssh (pozostawiam pusty)
- wpa_supplicant.conf
Zawartość wpa_supplicant.conf

Kod: Zaznacz cały

country=PL
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="wifi1
    psk="haslo1"
    key_mgmt=WPA-PSK
}

network={
    ssid="wifi2"
    psk="haslo2
    key_mgmt=WPA-PSK
}
Jeżeli będzie korzystać z jednej sieci to drugi network usuwamy lub możemy dodać kolejne.

Tak utworzoną kartę ładujemy do Pi Zero W i czekam aż się uruchomi.

Potem uruchamiamy putty i łączymy się z Pi.

Zmieniamy domyślne hasło "raspberry" na swoje można to zrobić tu:

Kod: Zaznacz cały

sudo raspi-config
Przystępujemy do przygotowania Maliny pod Suplę:

Kod: Zaznacz cały

sudo apt-get update
sudo apt-get -y install git curl
sudo apt-get -y install python-pip && pip 
curl -sSL https://get.docker.com | sh
sudo pip install docker-compose
sudo usermod -a -G docker pi
Robimy restart maliny:

Kod: Zaznacz cały

sudo reboot
Ponownie otwieramy putty i się logujemy (z nowym hasłem).
Sprawdzamy czy docker zainstalował się poprawnie:

Kod: Zaznacz cały

docker -v
docker-compose -v
Jak pokaże nam zainstalowane wersje to jest OK i idziemy dalej.

Pobieramy Suplę:

Kod: Zaznacz cały

git clone https://github.com/SUPLA/supla-docker.git
cd supla-docker
./supla.sh
Konfigurujemy adres serwera i pierwsze konto:

Kod: Zaznacz cały

nano .env
Start instalacji:

Kod: Zaznacz cały

./supla.sh start
No i teraz mamy jakieś 3 godziny z głowy :)
Czekamy aż wszystko przejdzie, po tym serwer wstanie i będzie działał do zaniku napięcia.

Skrypt autostart po zaniku napięcia:

Kod: Zaznacz cały

sudo nano /etc/init.d/clean-boot
I wklejamy zawartość:

Kod: Zaznacz cały

#!/bin/sh
cd /home/pi/supla-docker
docker-compose rm -fs
./supla.sh start
Po zapisaniu nadajemy uprawnienia:

Kod: Zaznacz cały

sudo chmod +x /etc/init.d/clean-boot
I dodajemy aby się uruchamiał przy rozruchu:

Kod: Zaznacz cały

sudo update-rc.d clean-boot defaults
Usuwanie automatycznych restartów Supli:

Kod: Zaznacz cały

nano docker-compose.yml
I usuwamy tu trzy razy linie restartu:

Kod: Zaznacz cały

restart: unless-stopped
Zapisujemy i wszystko powinno latać aż miło :)
Ostatnio zmieniony czw mar 15, 2018 7:56 am przez Lector, łącznie zmieniany 9 razy.
Niespełniony automatyk. :mrgreen:
https://3d-lamp.photos/
Awatar użytkownika
byniom
Posty: 633
Rejestracja: sob sty 07, 2017 1:17 pm

Czy można to zainstalować też na rasbianie zainstalowanym w orange pi one ? Jeżeli tak to proszę łopatologicznie o dalsze wskazówki bo jestem w tym zielony :)
Awatar użytkownika
lesny8
Posty: 2802
Rejestracja: pn gru 11, 2017 9:43 pm

Dołożę jeszcze 5 groszy do kupki :)

Po zaniku zasilania jest problem z dokerem bazy danych, żeby wstał jak należy i pozostałe kontenery mogły się z nim łączyć. Nie do końca wiadomo czemu tak jest, bynajmniej ja nie wiem, ale jest metoda na ten problem dyskutowana przez kolegę @Lector i @fracz. Poczytałem trochę i wdrożyłem to u siebie na malinie pomimo tego, że podpięta jest za UPSem i brak zasilania jej nie grozi.

Cały zabieg sprowadza się do kilku komend.
U mnie wygląda to tak:

1. Utworzyłem skrypt

Kod: Zaznacz cały

sudo nano /etc/init.d/supla-clean-boot.sh
o treści

Kod: Zaznacz cały


#! /bin/sh
cd /home/pi/supla-docker/
docker-compose rm -fs
./supla.sh start

cd /home/pi/supla-scripts/docker/
docker-compose rm -fs
./suplascripts.sh start

Jak widać mam jeszcze supla-scripts kolegi @fracz gdzie jest ten sam problem z kontenerem bazy, załatwiam za jednym zamachem :)

2. Nadałem uprawnienia wykonywalności dla skryptu

Kod: Zaznacz cały

sudo chmod +x /etc/init.d/supla-clean-boot.sh 
3. Edytowałem plik

Kod: Zaznacz cały

sudo nano /etc/rc.local
i dopisałem tam ścieżkę do skryptu, ważne aby zrobić to przed exit 0

Kod: Zaznacz cały

/etc/init.d/supla-clean-boot.sh 
Wdrożone u mnie przed chwilą i działa wyśmienicie ;) Dzięki chłopaki.
Czekam na kolejne Supla Offline Party 👍
Awatar użytkownika
Lector
Posty: 1393
Rejestracja: pt lis 17, 2017 2:26 pm
Lokalizacja: Poznań
Kontakt:

Uzupełniłem pierwszy post o auto uruchamianie.
Właśnie stawiam serwer według tego co napisałem, zobaczymy jak pójdzie.
Niespełniony automatyk. :mrgreen:
https://3d-lamp.photos/
Awatar użytkownika
fracz
Posty: 2256
Rejestracja: pt paź 28, 2016 10:56 pm
Lokalizacja: Kraków

Usuwanie automatycznych restartów SUPLI możesz zrobić łatwiej jedną komendą:

Kod: Zaznacz cały

sed -i /unless-stopped/d docker-compose.yml
Dzięki za pozbieranie tych informacji :-)
Awatar użytkownika
lesny8
Posty: 2802
Rejestracja: pn gru 11, 2017 9:43 pm

Uruchomienie skryptu usuwającego kontenery podczas startu systemu można zrealizować na kilka sposobów.
Zanim klepnąłem swój post przetestowałem wszystkie opcje jakie znalazłem w sieci.
Wybrałem wydaje się najprostrzą metodę, bo nie ingeruje w pliki konfiguracyjne docer-composera.
Wygląda na to, że skrypt wykonuje się zanim kontenery wystartują i z usunięciem ich nie ma problemu.
U mnie działa z powodzeniem, choć braku zasilania nie przewiduje :)
Czekam na kolejne Supla Offline Party 👍
Awatar użytkownika
fracz
Posty: 2256
Rejestracja: pt paź 28, 2016 10:56 pm
Lokalizacja: Kraków

lesny8 pisze: śr mar 14, 2018 10:27 pm Wygląda na to, że skrypt wykonuje się zanim kontenery wystartują
Nie zawsze musi Ci się to udać. Podejście @Lectora jest pewniejsze.
Awatar użytkownika
lesny8
Posty: 2802
Rejestracja: pn gru 11, 2017 9:43 pm

Nie przeczę. Twoje rozwiązanie jeszcze bardziej mi się podoba :)
Co do mojego wpisu to siedem razy na twardo gasiłem malinę i za każdym razem skrypt się wykonywał poprawnie, we właściwym czasie, nie wiem kiedy miało by to nie zadziałać?
Czekam na kolejne Supla Offline Party 👍
fast
Posty: 11
Rejestracja: pt mar 09, 2018 8:12 pm

Dzięki @Lector za uporządkowanie poradnika.

Tak naprawdę okazuje się, że niewiele mi brakowało :) o jedną komendę za dużo było. Ale co ciekawe dopiero za trzecim razem się udało bo 2 razy zatrzymała mi się instalacja na tym samym miejscu co wcześniej.

Nie działa jeszcze restart po zaniku zasilania według tego co dopisałeś i muszę jeszcze posprawdzać. Jak się wszystko uda to mogę udostępnić obraz karty ale mam pytanie czy da się zrobić obraz (jakim programem) ale taki, który ma rzeczywistą zawartość a nie dokładnie taki jaką mam kartę SD (bo używam 8GB). Kopiowanie sektor po sektorze trochę duży do udostępnienia jest.
Awatar użytkownika
Lector
Posty: 1393
Rejestracja: pt lis 17, 2017 2:26 pm
Lokalizacja: Poznań
Kontakt:

Chyba w tutku jeszcze do poprawy jest autostart, bo coś mi nie startuje.
Ogólnie robiłem tak wcześniej, ale chciałem lepiej.

Kod: Zaznacz cały

nano supla-docker/clean-boot.sh
I wklejam to

Kod: Zaznacz cały

#!/usr/bin/env bash

cd "$(dirname "$0")"

docker-compose rm -fs
./supla.sh start
Potem

Kod: Zaznacz cały

nano /etc/init.d/clean-boot
I wklejam

Kod: Zaznacz cały

#!/bin/sh
### BEGIN INIT INFO
# Provides: start serwera
# Required-Start: $remote_fs $syslog $all
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start serwera
# Description: start serwera
### END INIT INFO

cd /home/pi/supla-docker
./clean-boot.sh

exit 0
później uprawnienia

Kod: Zaznacz cały

sudo chmod +x /etc/init.d/clean-booth
i dodanie do startu

Kod: Zaznacz cały

update-rc.d clean-booth defaults
Więc jakby komuś nie wstawał daje tu, a może ktoś pomoże ogarnąć aby był jeden skrypt.
Ja szykuje się na wypad weekendowy i będę mógł coś działaś dopiero od wtorku, bo z telefonu trudno będzie.
Niespełniony automatyk. :mrgreen:
https://3d-lamp.photos/
ODPOWIEDZ

Wróć do „FAQ / Jak to zrobić”