[tutorial] Raspberry Pi – Docker, Proxy, Let’s Encrypt, SUPLA, SUPLA-Scripts...

User avatar
lesny8
Posts: 866
Joined: Mon Dec 11, 2017 9:43 pm

Sat Feb 23, 2019 10:27 pm

edm wrote:
Sat Feb 23, 2019 8:00 pm
1. Na routerze z LEDE / Openwrt mam:
a) publiczne dynamiczne ip i dynamiczny dns - działa
Czy jest to jeden wpis? Jeśli chcesz mieść Supla Cloud, Supla Scripts i swoją stronę www to musisz mieć trzy różne wpisy w DNS kierujące w danej chwili na ten sam zewnętrzny, dynamiczny adres IP należący do Twojego routera.
edm wrote:
Sat Feb 23, 2019 8:00 pm
b) zarezerwowany wewnętrzny adres IP 192.168.2.10 dla RPI
c) przekierowane porty TCP 80 i 443 (1 do 1) na wewnętrzny adres IP RPI
d) przekierowane porty TCP 2015 i 2016 (1 do 1) na wewnętrzny adres IP RPI
e) ustawiony NAT Loopback, tutaj z pomocą przyszedł ten artykuł https://morfikov.github.io/post/nat-ref ... w-openwrt/
Super.
edm wrote:
Sat Feb 23, 2019 8:00 pm
2. Malina jeszcze nie dotarła lecz będą na niej usługi:
a) Docker, Proxy, Let’s Encrypt, SUPLA cloud, SUPLA-Scripts
b) serwer www z zawartością strony internetowej (nie supla cloud)
Wszystko będzie działać na standardowych portach, pod warunkiem, że punkt b) połączysz z punktem a) i wszystko będzie działać za proxy. Musisz zdockeryzować tę stronę www i dostosować konfigurację do działania w trybie proxy.

Proxy kieruje ruchem na portach opierając się o nazwy domen/subdomen, dlatego muszą być trzy wpisy w DNS.

mojadomena.pl - pod tą domeną będziesz miał zawartoć www
cloud.mojadomena.pl - tu będzie chmura SUPLI
scripts.mojadomena.pl - a tu skrypty od @fracz

Jak to tak zrobisz, to każda z tych usług będzie wywoływana na 80(http) i 443(https) i dodatkowo będziesz miał dla https zielony automatycznie odnawialny certyfikat SSL dla każdej z domen/subdomen z osobna ;)
cino111
Posts: 707
Joined: Mon May 07, 2018 8:00 pm

Sat Mar 02, 2019 9:25 pm

Mam juz postawione Cloud i scripts na RPI 3 i chcę zrobić na zielono. Robię wg pierwszego posta ale mam jakiś błąd

Code: Select all

pi@raspberrypi:~/docker-compose-letsencrypt-nginx-proxy-companion $ ./start.sh
Error response from daemon: network with name webproxy already exists
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 16292  100 16292    0     0  32224      0 --:--:-- --:--:-- --:--:-- 32261
Pulling nginx-web         ... done
Pulling nginx-gen         ... error
Pulling nginx-letsencrypt ... error

ERROR: for nginx-gen  invalid reference format

ERROR: for nginx-letsencrypt  invalid reference format
ERROR: invalid reference format
invalid reference format
ERROR: no such image: wouterds / rpi- docker -gen: invalid reference format
User avatar
lesny8
Posts: 866
Joined: Mon Dec 11, 2017 9:43 pm

Sat Mar 02, 2019 9:51 pm

cino111 wrote:
Sat Mar 02, 2019 9:25 pm
ERROR: no such image: wouterds / rpi- docker -gen: invalid reference format
Masz tu spacje?? Nie powinno ich tam być...

Code: Select all

  nginx-gen:
    image: wouterds/rpi-docker-gen
cino111
Posts: 707
Joined: Mon May 07, 2018 8:00 pm

Sat Mar 02, 2019 10:11 pm

Teraz mam tak:

Code: Select all

pi@raspberrypi:~/docker-compose-letsencrypt-nginx-proxy-companion $ ./start.sh  Error response from daemon: network with name webproxy already exists
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 16292  100 16292    0     0  48423      0 --:--:-- --:--:-- --:--:-- 48488
Pulling nginx-web         ... done
Pulling nginx-gen         ... done
Pulling nginx-letsencrypt ... done
Creating nginx-web         ... error
Creating nginx-letsencrypt ...
Creating nginx-gen         ...

ERROR: for nginx-web  Cannot start service nginx-web: driver failed programming external connectivity on endpoint nginx-web (a49ccc1604b0cccb837674b429acd44b2abCreating nginx-letsencrypt ... done
Creating nginx-gen         ... done

ERROR: for nginx-web  Cannot start service nginx-web: driver failed programming external connectivity on endpoint nginx-web (a49ccc1604b0cccb837674b429acd44b2abf5cff1292961ff561dd547a906686): Bind for 0.0.0.0:443 failed: port is already allocated
ERROR: Encountered errors while bringing up the project.
User avatar
lesny8
Posts: 866
Joined: Mon Dec 11, 2017 9:43 pm

Sat Mar 02, 2019 10:34 pm

Masz na portach 80 i 443 już wystawione uslugi. Pewnie to Cloud. Zatrzymaj suple i skrypty. Zobacz czy zobaczysz pustkę robiąc

Code: Select all

docker ps
cino111
Posts: 707
Joined: Mon May 07, 2018 8:00 pm

Sat Mar 02, 2019 11:33 pm

lesny8 wrote:
Sat Mar 02, 2019 10:34 pm
Masz na portach 80 i 443 już wystawione uslugi. Pewnie to Cloud. Zatrzymaj suple i skrypty. Zobacz czy zobaczysz pustkę robiąc

Code: Select all

docker ps
Coś tu jest nie tak. Mam jedną domenę na routerze. Wpisałem ją w pliku .env dla clouda. Przygotowuję się na GH. Scripts ma zostać jak jest i jest na portach 81 i 444. Teraz cloud w ogóle mi się nie wyświetla :(

Code: Select all

CONTAINER ID        IMAGE                                                   COMMAND                  CREATED             STATUS              PORTS                                      NAMES
4e8425126e60        supla/supla-server:arm32v7                              "/usr/bin/server-ent…"   3 minutes ago       Up 3 minutes        0.0.0.0:2015-2016->2015-2016/tcp           supla-server
40830903be58        supla/supla-cloud:arm32v7                               "docker-php-entrypoi…"   3 minutes ago       Up 3 minutes        80/tcp                                     supla-cloud
2cd69a6f5673        hypriot/rpi-mysql:5.5                                   "/entrypoint.sh mysq…"   3 minutes ago       Up 3 minutes        3306/tcp                                   supla-db
8a426c9013da        suplascripts_suplascripts                               "docker-php-entrypoi…"   9 minutes ago       Up 9 minutes        0.0.0.0:81->80/tcp, 0.0.0.0:444->443/tcp   suplascripts
094941a5c045        hypriot/rpi-mysql:5.5                                   "/entrypoint.sh mysq…"   9 minutes ago       Up 9 minutes        3306/tcp                                   suplascripts-db
272b01441633        wouterds/rpi-docker-gen                                 "/usr/local/bin/dock…"   About an hour ago   Up 10 minutes                                                  nginx-gen
56eaa1bb39bb        wouterds/rpi-docker-letsencrypt-nginx-proxy-companion   "/bin/bash /app/entr…"   About an hour ago   Up 10 minutes                                                  nginx-letsencrypt
09554d77d322        nginx                                                   "nginx -g 'daemon of…"   About an hour ago   Up 10 minutes       0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   nginx-web
User avatar
lesny8
Posts: 866
Joined: Mon Dec 11, 2017 9:43 pm

Sun Mar 03, 2019 9:39 am

cino111 wrote:
Sat Mar 02, 2019 11:33 pm
Scripts ma zostać jak jest i jest na portach 81 i 444.
Rozumiem, że za PROXY chcesz mieć tylko Cloud z zielonym certyfikatem, a przed Scripts bez zielonego?

Jeśli tak to w .env skryptów musisz pozmieniać:
  • odhaszować porty i zmienić na inne niż 80 i 443, ale to już masz pewnie ustawione
  • zahaszować ustawienia domeny i maila
  • zmienić docker-compose.proxy.yml na docker-compose.standalone.yml
Musi to wyglądać jak w tym przykłądzie

Code: Select all

...............
##### STANDALONE MODE CONFIGURATION #####
PORT_HTTP=81
PORT_HTTPS=444


##### PROXIED MODE CONFIGURATION #####
#DOMAIN_NAME=
#ADMIN_EMAIL=

COMPOSE_PROJECT_NAME=suplascripts
COMPOSE_PATH_SEPARATOR=:
COMPOSE_FILE=docker-compose.base.yml:docker-compose.standalone.yml:docker-compose.arm32v7.yml
Sprawdziłem to u siebie i zadziałało zgodnie z założeniem

Code: Select all

CONTAINER ID        IMAGE                                                   COMMAND                  CREATED             STATUS              PORTS                                                  NAMES
2d11b2a63981        suplascripts_suplascripts                               "docker-php-entrypoi…"   26 minutes ago      Up 12 minutes       0.0.0.0:81->80/tcp, 0.0.0.0:444->443/tcp               suplascripts
36b0cc9df002        nginx                                                   "nginx -g 'daemon of…"   10 days ago         Up 10 days          0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp               nginx-web
01cf9965f3fe        supla/supla-server:arm32v7                              "/usr/bin/server-ent…"   12 days ago         Up 5 days           0.0.0.0:2015-2016->2015-2016/tcp                       supla-server
c30149046183        supla/supla-cloud:arm32v7                               "docker-php-entrypoi…"   12 days ago         Up 5 days           80/tcp                                                 supla-cloud
dee9f53fcfe7        hypriot/rpi-mysql:5.5                                   "/entrypoint.sh mysq…"   12 days ago         Up 5 days           3306/tcp                                               supla-db
d7c69dd52389        hypriot/rpi-mysql:5.5                                   "/entrypoint.sh mysq…"   13 days ago         Up 12 minutes       3306/tcp                                               suplascripts-db
d2d5037e8a32        wouterds/rpi-docker-gen                                 "/usr/local/bin/dock…"   2 weeks ago         Up 2 weeks                                                                 nginx-gen
4170dba446fa        wouterds/rpi-docker-letsencrypt-nginx-proxy-companion   "/bin/bash /app/entr…"   2 weeks ago         Up 2 weeks                                                                 nginx-letsencrypt

cino111 wrote:
Sat Mar 02, 2019 11:33 pm
Teraz cloud w ogóle mi się nie wyświetla :(
Zobacz jeszcze co jest w logach supla-cloud.
Czy możesz dostać się do cloud od strony WAN?
cino111
Posts: 707
Joined: Mon May 07, 2018 8:00 pm

Sun Mar 03, 2019 9:52 am

Dokładnie tak miałem i scripts działał, tylko na Clouda nie mogłem wejść i scripts z clouda nie pobierał danych. Apka działała. Przywróciłem kopię zapasową, bo termostat nie działał.
Czy po zmianie w pliku.env dla clouda trzeba było może przebudować kontenery? NIe zabardzo sięw tym łapie.

Chyba najlepiej się na tym znasz to może opisze po kolei:
Mam router asusa i na nim darmową jedną domenę xxxxx.asuscomm.com i chciałem ją przypisać do clouda bo do scripts nie mam już jak.
Opisywałeś też, że można wykupić domenę lub zarejestrowac darmową na no-ip i doinstalować klienta i wtedy funkcję ddns pełni RPI. To było by najlepsze, ale mam wykupione domeny na home.pl i nie wiem jak to dalej ogarnąć. Mogę postawić serwer od nowa wg twojej instrukcji, ale co z clientem na RPI dla home.pl?
User avatar
lesny8
Posts: 866
Joined: Mon Dec 11, 2017 9:43 pm

Sun Mar 03, 2019 12:33 pm

cino111 wrote:
Sun Mar 03, 2019 9:52 am
Czy po zmianie w pliku.env dla clouda trzeba było może przebudować kontenery?
Tak, trzeba przebudować, bez tego zmian nie zobaczysz

Code: Select all

cd ~/supla-docker
./supla.sh restart
cino111 wrote:
Sun Mar 03, 2019 9:52 am
Mam router asusa i na nim darmową jedną domenę xxxxx.asuscomm.com i chciałem ją przypisać do clouda bo do scripts nie mam już jak.
Czy teraz logujesz się do Clouda poprzez tę domenę z WAN i z LAN? Masz zrobiny forward portów 80 i 443 na adres IP maliny?
cino111 wrote:
Sun Mar 03, 2019 9:52 am

Opisywałeś też, że można wykupić domenę lub zarejestrowac darmową na no-ip i doinstalować klienta i wtedy funkcję ddns pełni RPI. To było by najlepsze, ale mam wykupione domeny na home.pl i nie wiem jak to dalej ogarnąć. Mogę postawić serwer od nowa wg twojej instrukcji, ale co z clientem na RPI dla home.pl?
Z no-ip.pl możesz to ogarnąć bez problemu dla 3 subdomen, bo na tyle tam za free pozwalają utworzyć wpisów. RPi robi za klienta DDNS i uaktualnia adres IP co minutę jak zrobisz to w cronie.
Co do domen wykupionych w home.pl to gdzie są zaparkowane? Na co wskazują? I do czego Ci teraz służą? Zależy Ci na nich?
Pewien pomysł narodził mi się w głowie, ale nie wiem czy da się to zrealizować i czy to w ogóle zatrybi ;)
cino111
Posts: 707
Joined: Mon May 07, 2018 8:00 pm

Sun Mar 03, 2019 8:40 pm

Dobra zdecydowałem się w końcu na No-ip. Mam dwie domeny xxx.ddns.net i yyy.ddns.net.
Zainstalowałem noip.client-arm wg instrukcji viewtopic.php?f=40&t=2955&start=30
Wpisałem /usr/local/bin/noip.client-arm -u aaaaa11111 -p bbbbb1111 -d xxx.ddns.net -b 5
/usr/local/bin/noip.client-arm -u aaaaa11111 -p bbbbb1111 -d yyy.ddns.net -b 5
ale na stronie no-ip nie aktualizuje mi się IP. Czy w powyższych wierszach powinny być spacje przed -u, -p itd? Jak sprawdzić, czy dane są wysyłane?

Code: Select all

pi@raspberrypi:~ $ ps
  PID TTY          TIME CMD
 3918 pts/0    00:00:00 bash
 4165 pts/0    00:00:00 noip.client-arm
 4739 pts/0    00:00:00 noip.client-arm
 4748 pts/0    00:00:00 noip.client-arm
 6691 pts/0    00:00:00 ps
Druga sprawa to czy bez Let's Encrypt domeny powinny działać? Wpisałem na stronie no-ip prawidłowy mój zewnętrzny nr ip i wchodzi na clouda, jednak jak w pliku .env pozmieniam dane na proxy to kontenery clouda jak i scripts się nie uruchamiają.

Code: Select all

Starting SUPLA containers
ERROR: Network webproxy declared as external, but could not be found. Please create the network manually using `docker network create webproxy` and try again.
root@raspberrypi:/home/pi# ./supla-docker/supla.sh start
Starting SUPLA containers
ERROR: Network webproxy declared as external, but could not be found. Please create the network manually using `docker network create webproxy` and try again.
root@raspberrypi:/home/pi# supla-scripts/docker/suplascripts.sh start
Post Reply