[tutorial] Serwer Supla na Raspberry Pi Zero W

User avatar
Lector
Posts: 223
Joined: Fri Nov 17, 2017 2:26 pm
Location: Poznań

Wed Mar 14, 2018 2:36 pm

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

Code: Select all

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:

Code: Select all

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

Code: Select all

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:

Code: Select all

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

Code: Select all

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

Pobieramy Suplę:

Code: Select all

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

Code: Select all

nano .env
Start instalacji:

Code: Select all

./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:

Code: Select all

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

Code: Select all

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

Code: Select all

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

Code: Select all

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

Code: Select all

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

Code: Select all

restart: unless-stopped
Zapisujemy i wszystko powinno latać aż miło :)
Last edited by Lector on Thu Mar 15, 2018 7:56 am, edited 9 times in total.
byniom
Posts: 255
Joined: Sat Jan 07, 2017 1:17 pm

Wed Mar 14, 2018 3:07 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 :)
lesny8
Posts: 118
Joined: Mon Dec 11, 2017 9:43 pm

Wed Mar 14, 2018 7:10 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

Code: Select all

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

Code: Select all


#! /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

Code: Select all

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

Code: Select all

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

Code: Select all

/etc/init.d/supla-clean-boot.sh 
Wdrożone u mnie przed chwilą i działa wyśmienicie ;) Dzięki chłopaki.
User avatar
Lector
Posts: 223
Joined: Fri Nov 17, 2017 2:26 pm
Location: Poznań

Wed Mar 14, 2018 8:37 pm

Uzupełniłem pierwszy post o auto uruchamianie.
Właśnie stawiam serwer według tego co napisałem, zobaczymy jak pójdzie.
User avatar
fracz
Posts: 977
Joined: Fri Oct 28, 2016 10:56 pm
Location: Rybna

Wed Mar 14, 2018 10:22 pm

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

Code: Select all

sed -i /unless-stopped/d docker-compose.yml
Dzięki za pozbieranie tych informacji :-)
lesny8
Posts: 118
Joined: Mon Dec 11, 2017 9:43 pm

Wed Mar 14, 2018 10:27 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 :)
User avatar
fracz
Posts: 977
Joined: Fri Oct 28, 2016 10:56 pm
Location: Rybna

Wed Mar 14, 2018 10:29 pm

lesny8 wrote:
Wed 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.
lesny8
Posts: 118
Joined: Mon Dec 11, 2017 9:43 pm

Wed Mar 14, 2018 10:57 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ć?
fast
Posts: 11
Joined: Fri Mar 09, 2018 8:12 pm

Thu Mar 15, 2018 2:11 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.
User avatar
Lector
Posts: 223
Joined: Fri Nov 17, 2017 2:26 pm
Location: Poznań

Thu Mar 15, 2018 7:31 pm

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

Code: Select all

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

Code: Select all

#!/usr/bin/env bash

cd "$(dirname "$0")"

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

Code: Select all

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

Code: Select all

#!/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

Code: Select all

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

Code: Select all

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.
Post Reply