Ten tutorial jest dla użytkowników SUPLI, którzy posiadają Raspberry Pi, i którzy chcieliby mieć własną instancję SUPLA - Cloud w domu z zielonym, poprawnym certyfikatem zweryfikowanym przez Let’s Encrypt. Obok własnej instancji SUPLI można zaparkować SUPLA-Scripts od @fracz, lub cokolwiek innego.
Temat był poruszany już w kilku wątkach. Niektórym się udało jakoś poskładać wszystko do kupy, a niektórym nie. Jako, że zaszła u mnie potrzeba postawienia wszystkiego od nowa (nowa karta tym razem Industrial, bo stara padła), postanowiłem cały proces jak najbardziej dokładnie opisać STEP by STEP, tak aby nawet użytkownicy oderwani łopatą od windowsa sobie z tym poradzili
#1
Router i Domena
Co potrzebujemy mieć i jak skonfigurowane, na wstępie?
- RaspberryPi i czystą kartę SDHC min 8GB(sugeruję kupić wersję przemysłową)
- Zewnętrzny adres IP:
- jeśli mamy stałe IP to potrzebna jest własna domena.
Może być darmowa np. zarejestrowana w dot.tk. U rejestratora domeny w DNS ustawiamy rekordy A wskazujące na nasz adres IP, dla domeny i subdomen (cloud, scripts i czegokolwiek innego).
- jeśli mamy zmienne IP (Neustrada, Netia, Internet mobilny itd.) trzeba skonfigurować DDNS w posiadanym routerze.
Link do filmu wyjaśniającego w czym rzecz.
- jeśli mamy stałe IP to potrzebna jest własna domena.
- W routerze rezerwujemy jakiś wewnętrzny adres IP dla naszego RPI.
Jeśli klasa adresowa naszego routera to 192.168.0.0/24 i router jest bramką i ma adres 192.168.0.1, to RPI niech ma adres 192.168.0.2 lub każdy inny wolny z tej klasy. Ważne, żeby przypisać RPI go na stałe, by DHCP zawsze dawał naszej malinie ten sam adres. Jest to konieczne z uwagi na przekierowanie portów. - Robimy przekierowane portów TCP 80 i 443 na wewnętrzny adres IP RPI.
Sprawdźcie to w pierwszej kolejności, czy posiadany router/dostawca internetu daje wam możliwość przekierowania poru 80 TCP, jest to kluczowy warunek dla Let’s Encrypt podczas weryfikacji domeny. Jeśli nie to trzeba szukać alternatywnego firmware dla routera albo zmienić router/dostawcę internetu na taki z możliwością przekierowania portu TCP 80. - Robimy przekierowanie portów TCP 2015 i 2016.
Jest to wymagane do działania APP na smartfonach i tabletach. - Ustawiamy NAT Loopback.
Jeśli tego nie ustawimy, bo nasz router jest ograniczony funkcjonalnie, to będąc w sieci LAN nie połączymy się do usług po nazwie domeny/subdomeny, a tylko po nazwie możemy się do nich podłączyć w omawianym trybie proxy. Od strony WAN-u będzie wszystko działać.
#2
Raspbian Lite
Jeżeli już poustawiamy wszystko co niezbędne, to czas na zabawę z Raspberry Pi.
Robimy formatowanie karty programem SD Memory Card Formatter (do tego potrzebny windows), jeżeli była wcześniej używana w innych urządzeniach, środowiskach. Nowe karty tego nie potrzebują.
Pobieramy ostatnią stabilną wersję Raspbiaa Stertch Lite. Pobieramy program Etcher i po jego uruchomieniu wskazujemy obraz i kartę, na której obraz ma się znaleźć i go nagrywany.
Umieszczamy kartę w RPI i uruchamiamy sprzęt.
Logujemy się jako użytkownik pi z hasłem raspberry,
Zmieniamy domyślne hasło wpisując
Code: Select all
passwd
Code: Select all
sudo raspi-config
Code: Select all
sudo apt update
sudo apt -y upgrade
Code: Select all
sudo apt -y install mc
Code: Select all
sudo apt -y install git curl
sudo apt -y install python-pip && pip
sudo apt -y install libffi-dev libssl-dev
Code: Select all
curl -sSL https://get.docker.com | sh
Code: Select all
sudo usermod -a -G docker pi
Instalujemy docker-compose.
Code: Select all
sudo pip install docker-compose
Code: Select all
docker -v && docker-compose -v
Code: Select all
Docker version 18.09.0, build 4d60db4
docker-compose version 1.23.2, build 1110ad0
#3
PROXY Let’s Encrypt
Możemy przejść teraz do instalacji PROXY i parkowania pierwszych kontenerów.
Pobieramy co trzeba.
Code: Select all
cd ~
git clone https://github.com/lesny8/docker-compose-letsencrypt-nginx-proxy-companion.git
Code: Select all
cd docker-compose-letsencrypt-nginx-proxy-companion/
cp .env.sample .env
Code: Select all
uname -m
Code: Select all
sudo apt-get install -y docker-ce=18.03.0~ce-0~raspbian --allow-downgrades
Edytujemy ponownie
Code: Select all
nano docker-compose.yml
Tak ma to wyglądać
Code: Select all
version: '3'
services:
nginx-web:
image: arm32v6/nginx:alpine
Code: Select all
./start.sh
Code: Select all
docker ps
Code: Select all
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
08b3a67e987c lesny8/rpi-docker-gen "/usr/local/bin/dock…" About a minute ago Up 24 seconds nginx-gen
4b29e76b4bde lesny8/rpi-docker-letsencrypt-nginx-proxy-companion "/bin/bash /app/entr…" About a minute ago Up 24 seconds nginx-letsencrypt
465367d78385 nginx "nginx -g 'daemon of…" About a minute ago Up 24 seconds 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp nginx-web
#4
SUPLA-DOCKER
Przyszedł czas na Suplę, klonujemy git-a.
Code: Select all
cd ~
git clone https://github.com/SUPLA/supla-docker.git
Code: Select all
./supla-docker/supla.sh
nano supla-docker/.env
Code: Select all
# Where the SUPLA Cloud will be accessible? Put domain or IP address here with port.
CLOUD_DOMAIN=moja_domena.tk
# Initial user account details; delete these settings after the first launch
FIRST_USER_EMAIL=prawdziwy_adres@mailowy.pl
FIRST_USER_PASSWORD=nasze_haslo
....
# If you want to be notified about some server errors, set this
ADMIN_EMAIL=prawdziwy_adres@mailowy.pl
....
# On which ports the SUPLA Cloud should listen (only if standalone mode)
#PORT_HTTP=80
#PORT_HTTPS=443
....
COMPOSE_FILE=docker-compose.yml:docker-compose.proxy.yml:docker-compose.arm32v7.yml
Code: Select all
./supla-docker/supla.sh start
Sprawdzamy czy wszystko wystartowało prawidłowo
Code: Select all
docker ps
Code: Select all
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
753cf45457bd supla/supla-server:arm32v7 "/usr/bin/server-ent…" About a minute ago Up About a minute 0.0.0.0:2015-2016->2015-2016/tcp supla-server
e2bbc4fa7a49 supla/supla-cloud:arm32v7 "docker-php-entrypoi…" 2 minutes ago Up About a minute 80/tcp supla-cloud
db2e3dc01015 hypriot/rpi-mysql:5.5 "/entrypoint.sh mysq…" 3 minutes ago Up 2 minutes 3306/tcp supla-db
08b3a67e987c lesny8/rpi-docker-gen "/usr/local/bin/dock…" 19 minutes ago Up 18 minutes nginx-gen
4b29e76b4bde lesny8/rpi-docker-letsencrypt-nginx-proxy-companion "/bin/bash /app/entr…" 19 minutes ago Up 18 minutes nginx-letsencrypt
465367d78385 nginx "nginx -g 'daemon of…" 19 minutes ago Up 18 minutes 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp nginx-web
#5
SUPLA-SCRIPTS
A teraz supla-scripts od @fracz, klonujemy.
Code: Select all
git clone https://github.com/fracz/supla-scripts.git
Code: Select all
./supla-scripts/docker/suplascripts.sh
nano supla-scripts/docker/.env
Code: Select all
##### STANDALONE MODE CONFIGURATION #####
#PORT_HTTP=80
#PORT_HTTPS=443
....
##### PROXIED MODE CONFIGURATION #####
DOMAIN_NAME=scripts.moja_domena.tk
ADMIN_EMAIL=prawdziwy_adres@mailowy.pl
....
COMPOSE_FILE=docker-compose.base.yml:docker-compose.proxy.yml:docker-compose.arm32v7.yml
Code: Select all
supla-scripts/docker/suplascripts.sh start
Po zainstalowaniu sprawdzamy czy wszystkie kontenery działają
Code: Select all
docker ps
Code: Select all
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
397c7b769734 suplascripts_suplascripts "docker-php-entrypoi…" About a minute ago Up 36 seconds 80/tcp suplascripts
9e83f5655b86 hypriot/rpi-mysql:5.5 "/entrypoint.sh mysq…" About a minute ago Up About a minute 3306/tcp suplascripts-db
753cf45457bd supla/supla-server:arm32v7 "/usr/bin/server-ent…" 34 minutes ago Up 34 minutes 0.0.0.0:2015-2016->2015-2016/tcp supla-server
e2bbc4fa7a49 supla/supla-cloud:arm32v7 "docker-php-entrypoi…" 35 minutes ago Up 34 minutes 80/tcp supla-cloud
db2e3dc01015 hypriot/rpi-mysql:5.5 "/entrypoint.sh mysq…" 36 minutes ago Up 35 minutes 3306/tcp supla-db
08b3a67e987c lesny8/rpi-docker-gen "/usr/local/bin/dock…" About an hour ago Up About an hour nginx-gen
4b29e76b4bde lesny8/rpi-docker-letsencrypt-nginx-proxy-companion "/bin/bash /app/entr…" About an hour ago Up About an hour nginx-letsencrypt
465367d78385 nginx "nginx -g 'daemon of…" About an hour ago Up About an hour 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp nginx-web