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

plnuker
Posty: 85
Rejestracja: ndz gru 30, 2018 10:11 pm

sob lis 21, 2020 10:08 pm

albo przełącz się na roota sudo su -
rono21
Posty: 11
Rejestracja: sob gru 05, 2020 2:09 pm

ndz gru 06, 2020 11:45 am

Witam,

Zainstalowałem wg. instrukcji na 1 stronie bez proxy, gdyż chce mieć dostęp tylko poprzez mailnę po adresie IP więc opóściłem punkt #3 oraz #5 supla-scripts.

Problem jest taki, że nie mogę dostać się do clouda wpisując ip maily. w IP tables mam takie wpisy:
-P INPUT ACCEPT
-P FORWARD DROP
-P OUTPUT ACCEPT
-N DOCKER
-N DOCKER-ISOLATION-STAGE-1
-N DOCKER-ISOLATION-STAGE-2
-N DOCKER-USER
-A FORWARD -j DOCKER-USER
-A FORWARD -j DOCKER-ISOLATION-STAGE-1
-A FORWARD -o br-3be745c27446 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o br-3be745c27446 -j DOCKER
-A FORWARD -i br-3be745c27446 ! -o br-3be745c27446 -j ACCEPT
-A FORWARD -i br-3be745c27446 -o br-3be745c27446 -j ACCEPT
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A FORWARD -o br-ef467668e231 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o br-ef467668e231 -j DOCKER
-A FORWARD -i br-ef467668e231 ! -o br-ef467668e231 -j ACCEPT
-A FORWARD -i br-ef467668e231 -o br-ef467668e231 -j ACCEPT
-A DOCKER -d 172.18.0.2/32 ! -i br-ef467668e231 -o br-ef467668e231 -p tcp -m tcp --dport 2016 -j ACCEPT
-A DOCKER -d 172.18.0.2/32 ! -i br-ef467668e231 -o br-ef467668e231 -p tcp -m tcp --dport 2015 -j ACCEPT
-A DOCKER -d 172.18.0.4/32 ! -i br-ef467668e231 -o br-ef467668e231 -p tcp -m tcp --dport 443 -j ACCEPT
-A DOCKER -d 172.18.0.4/32 ! -i br-ef467668e231 -o br-ef467668e231 -p tcp -m tcp --dport 80 -j ACCEPT
-A DOCKER-ISOLATION-STAGE-1 -i br-3be745c27446 ! -o br-3be745c27446 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -i br-ef467668e231 ! -o br-ef467668e231 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -j RETURN
-A DOCKER-ISOLATION-STAGE-2 -o br-3be745c27446 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -o br-ef467668e231 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -j RETURN
-A DOCKER-USER -j RETURN

W jaki spsób mam to zrobić , dodam że wcześniej istalując gotowy obraz Rpi wszyskto działało jak trzeba - nie potrzebowałem routera , sam switch wystarczył aby bezpośrednio połączyć się na IP maily. Router mam lecz jako AP do telefonu w tej samej sieci.

Czy podczas instalacji punkt #3 proxy jest konieczny ?
Jak zainstalować supla-scripts gdy port 80 i 443 mam zajęty po instalacji #2 supla-docker ?
Awatar użytkownika
lesny8
Posty: 1429
Rejestracja: pn gru 11, 2017 9:43 pm

ndz gru 06, 2020 1:13 pm

Jakie urządzenia masz w sieci? Nie masz routera? Czy masz gdzieś uruchomiony serwer dhcp?

Nie powinieneś mieć problemu z wejściem na chmurę po adresie IP np. 192.168.0.5 jeśli takowy ustawiłeś w pliku .env. W przeglądarce pojawi Ci się na pewno wyjątek bezpieczeństwa, który musisz zaakceptować, by zobaczyć stronę logowania. Co do urządzenia, z którego będziesz się próbował z chmurą połączyć, to ważne jest żeby było w tej samej klasie adresowej i tyle. Jeśli to urządzenie będziesz miał wpięte do tego samego switcha, to z połączeniem nie powinno być problemu.

Tryb proxy jest po to, by kilka usług (np. supla, suplascripts) działających na tej samej maszynie miało możliwość nasłuchu na tych samych portach t.j. 80 i 443. Proxy kieruje ruchem i requestami na tych portach i kieruje do właściwych usług. Zestawienie opisane w #3 daje dodatkowo możliwość generowania certyfikatu poprzez serwis Let's Encrypt dla Twoich usług, dzięki czemu przeglądarki nie potrzebują wyjątków bezpieczeństwa.

Jeśli chcesz uruchomić tylko serwer Supli w trybie standalone to proxy nie jest Ci potrzebne, #3 i #5 pomijasz, a w .env wpisujesz adres ip np. 192.168.0.5.

Jeśli chcesz uruchomić dodatkowo suplascripts to wykonaj #5 ale ustaw w .env standalone i zmień numery portów dla usługi na np. 81 i 444 bo 80 i 443 będą już zajęte przez serwer supli i docker Ci o tym zgłosi podczas próby uruchamiania suplascripts.
rono21
Posty: 11
Rejestracja: sob gru 05, 2020 2:09 pm

ndz gru 06, 2020 2:22 pm

Router odłaczyłem (był jako AP) by wykluczyć problem z jego konfiguracją. Serwera dhcp nie mam, adres IP ustawiam ręcznie w /etc/dhcpcd.conf jako 10.10.10.200 co potwierdza if config z maską /24 255.255.255.0.

Po ssh loguje się do rpi, następnie sprawdzam docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ce578a297dfe supla/supla-server:arm32v7 "/usr/bin/server-ent…" 4 minutes ago Up 4 minutes 0.0.0.0:2015-2016->2015-2016/tcp supla-server
6b5c8c820811 supla/supla-cloud:arm32v7 "docker-php-entrypoi…" 4 minutes ago Up 22 seconds 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp supla-cloud
27006f830653 hypriot/rpi-mysql:5.5 "/entrypoint.sh mysq…" 4 minutes ago Up 4 minutes 3306/tcp supla-db

Chmura jest niewidoczna z poziomu przeglądarki komputera w podsieci 10.10.10.x, wcześniej było zapytanie o wyjątek na obrazie z karty, tutaj nie ma nic po podanym adresie.

W .env wpisuje ip 10.10.10.200 , i tak łącze się po ssh z rpi.
Awatar użytkownika
lesny8
Posty: 1429
Rejestracja: pn gru 11, 2017 9:43 pm

ndz gru 06, 2020 3:48 pm

Jak z komputera wbijasz się po ssh na maline to powinno być ok.
Komputer z którego testujesz z jaką jest przeglądarką? Spróbuj może innej. Firefox dopiero w trybie prywatnym pozwala zapamiętać wyjątek bezpieczeństwa. Łącz się po https.
https://10.0.0.200

Po pierwszym uruchomieniu kontenerów trzeba chwilę poczekać zanim Cloud utworzy wszystko w bazie, w tym czasie możesz nic nie zobaczyć w przeglądarce.

Sprawdź logi z uruchomionych kontenerów

Kod: Zaznacz cały

docker logs --tail=50 supla-cloud
docker logs --tail=50 supla-server
rono21
Posty: 11
Rejestracja: sob gru 05, 2020 2:09 pm

ndz gru 06, 2020 6:09 pm

To nie wina przeglądarki, jestem świadom, że nie będzie certyfikatów bez let's encrypt, wszystkie 3 przeglądarki nie uruchamiają się, na laptopie z windows w IE też nie wchodzi.

pi@raspberrypi:~ $ sudo netstat -lptu
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN 413/sshd
tcp6 0 0 [::]:ssh [::]:* LISTEN 413/sshd
tcp6 0 0 [::]:https [::]:* LISTEN 11139/docker-proxy
tcp6 0 0 [::]:2015 [::]:* LISTEN 1710/docker-proxy
tcp6 0 0 [::]:2016 [::]:* LISTEN 1696/docker-proxy
tcp6 0 0 [::]:http [::]:* LISTEN 11152/docker-proxy
udp 0 0 0.0.0.0:mdns 0.0.0.0:* 284/avahi-daemon: r
udp 0 0 0.0.0.0:38202 0.0.0.0:* 284/avahi-daemon: r
udp 0 0 0.0.0.0:bootpc 0.0.0.0:* 402/dhcpcd
udp6 0 0 [::]:mdns [::]:* 284/avahi-daemon: r
udp6 0 0 [::]:36335 [::]:* 284/avahi-daemon: r


pi@raspberrypi:~ $ ifconfig
br-9249e2712103: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.18.0.1 netmask 255.255.0.0 broadcast 172.18.255.255
inet6 fe80::42:b2ff:fe2f:fc29 prefixlen 64 scopeid 0x20<link>
ether 02:42:b2:2f:fc:29 txqueuelen 0 (Ethernet)
RX packets 440 bytes 47789 (46.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 97 bytes 8480 (8.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:aa:b6:ff:f9 txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.10.10.200 netmask 255.255.255.0 broadcast 10.100.100.255

ether b8:27:eb:1e:38:40 txqueuelen 1000 (Ethernet)
RX packets 289022 bytes 422287228 (402.7 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 18850 bytes 1858657 (1.7 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

veth0df3f4f: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 169.254.38.199 netmask 255.255.0.0 broadcast 169.254.255.255
inet6 fe80::29d1:4480:a0da:cf88 prefixlen 64 scopeid 0x20<link>
ether a2:93:f7:33:c1:d6 txqueuelen 0 (Ethernet)
RX packets 44 bytes 5502 (5.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 71 bytes 13488 (13.1 KiB)
TX errors 0 dropped 1 overruns 0 carrier 0 collisions 0

veth6691eaf: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 169.254.54.251 netmask 255.255.0.0 broadcast 169.254.255.255
inet6 fe80::5a54:ea83:5f5a:e16a prefixlen 64 scopeid 0x20<link>
ether 9a:2f:da:d0:cd:16 txqueuelen 0 (Ethernet)
RX packets 2380 bytes 387749 (378.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2333 bytes 371266 (362.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

vethed7e7a2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 169.254.44.17 netmask 255.255.0.0 broadcast 169.254.255.255
inet6 fe80::b0fd:4aff:feb1:9d3b prefixlen 64 scopeid 0x20<link>
ether b2:fd:4a:b1:9d:3b txqueuelen 0 (Ethernet)
RX packets 194 bytes 16514 (16.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 588 bytes 79945 (78.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0


pi@raspberrypi:~ $ docker logs --tail=50 supla-cloud

In CreateConfirmedUserCommand.php line 72:

Invalid e-mail address


supla:user:create [--if-not-exists] [-h|--help] [-q|--quiet] [-v|vv|vvv|--verbose] [-V|--version] [--ansi] [--no-ansi] [-n|--no-interaction] [-e|--env ENV] [--no-debug] [--] <command> [<username>] [<password>]

Database connection has been established.

Application Migrations


No migrations to execute.
Client for webapp exists.

// Warming up the cache for the prod environment with debug
// false

[OK] Cache for the "prod" environment (debug=false) was successfully warmed.


In CreateConfirmedUserCommand.php line 72:

Invalid e-mail address
supla:user:create [--if-not-exists] [-h|--help] [-q|--quiet] [-v|vv|vvv|--verbose] [-V|--version] [--ansi] [--no-ansi] [-n|--no-interaction] [-e|--env ENV] [--no-debug] [--] <command> [<username>] [<password>]

Database connection has been established.

Application Migrations

No migrations to execute.
Client for webapp exists.

// Warming up the cache for the prod environment with debug
// false

[OK] Cache for the "prod" environment (debug=false) was successfully warmed.

In CreateConfirmedUserCommand.php line 72:

Invalid e-mail address
supla:user:create [--if-not-exists] [-h|--help] [-q|--quiet] [-v|vv|vvv|--verbose] [-V|--version] [--ansi] [--no-ansi] [-n|--no-interaction] [-e|--env ENV] [--no-debug] [--] <command> [<username>] [<password>



pi@raspberrypi:~ $ docker logs --tail=50 supla-server
INFO[1607275780.336928] Scheduler version 2.3.9
INFO[1607275780.337287] Started at Sun Dec 6 17:29:40 2020
INFO[1607275780.353231] Server version 2.3.27 [Protocol v13]
INFO[1607275780.353642] Started at Sun Dec 6 17:29:40 2020
ERR[1607275780.357095] Incorrect database version! Expected: 20200911231401
2020-12-06 17:29:40,363 INFO exited: supla-scheduler (exit status 1; not expected)
2020-12-06 17:29:40,365 INFO gave up: supla-scheduler entered FATAL state, too many start retries too quickly
ERR[1607275780.374736] Incorrect database version! Expected: 20200911231401
2020-12-06 17:29:40,380 INFO exited: supla-server (exit status 1; not expected)
2020-12-06 17:29:41,383 INFO gave up: supla-server entered FATAL state, too many start retries too quickly
2020-12-06 18:28:08,193 WARN received SIGTERM indicating exit request
2020-12-06 18:29:24,054 CRIT Supervisor running as root (no user in config file)
2020-12-06 18:29:24,085 INFO supervisord started with pid 1
2020-12-06 18:29:25,092 INFO spawned: 'supla-scheduler' with pid 11
2020-12-06 18:29:25,102 INFO spawned: 'supla-server' with pid 12
INFO[1607279365.261930] Scheduler version 2.3.9
INFO[1607279365.262247] Started at Sun Dec 6 18:29:25 2020
INFO[1607279365.267768] Server version 2.3.27 [Protocol v13]
INFO[1607279365.268184] Started at Sun Dec 6 18:29:25 2020
INFO[1607279365.453126] SSL version: OpenSSL 1.1.0l 10 Sep 2019
2020-12-06 18:29:26,456 INFO success: supla-scheduler entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2020-12-06 18:29:26,470 INFO success: supla-server entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
Awatar użytkownika
lesny8
Posty: 1429
Rejestracja: pn gru 11, 2017 9:43 pm

ndz gru 06, 2020 6:43 pm

Zły masz broadcast, dla adresu 10.10.10.200 i maski 255.255.255.0 powinien być 10.10.10.255, a nie 10.100.100.255

Kontenery nie startują, popraw .env
rono21 pisze:
ndz gru 06, 2020 6:09 pm
...
In CreateConfirmedUserCommand.php line 72:

Invalid e-mail address
...
rono21
Posty: 11
Rejestracja: sob gru 05, 2020 2:09 pm

ndz gru 06, 2020 7:07 pm

Broadcast poprawiony,

w .env również poprawione

Niestety dalej nie mogę się połączyć

tutaj nmap z PC dla 10.10.10.72
nmap 10.10.10.72
Starting Nmap 7.91 ( https://nmap.org ) at 2020-12-06 20:03 CET
Nmap scan report for 10.10.10.72
Host is up (0.0096s latency).
Not shown: 999 closed ports
PORT STATE SERVICE
22/tcp open ssh

Nmap done: 1 IP address (1 host up) scanned in 0.25 seconds

Z jakiegoś powodu nie są otwarte porty 80 i 443


tutaj env

# Where the SUPLA Cloud will be accessible? Put domain or IP address here with port.
CLOUD_DOMAIN=10.10.10.72

# Initial user account details; delete these settings after the first launch
FIRST_USER_EMAIL=pi@raspberrypi
FIRST_USER_PASSWORD=qwe123

# Google ReCaptcha settings
RECAPTCHA_ENABLED=false
RECAPTCHA_PUBLIC_KEY=
RECAPTCHA_PRIVATE_KEY=

# Mailer settings (SMTP)
MAILER_HOST=10.10.10.72
MAILER_PORT=465
MAILER_USER=pi
MAILER_PASSWORD=qwe123
MAILER_ENCRYPTION=ssl
MAILER_FROM=

# If you want to be notified about some server errors, set this
#ADMIN_EMAIL=pi@raspberrypi

# Where to store SUPLA Cloud's data
VOLUME_DATA=./var

# On which ports the SUPLA Cloud should listen (only if standalone mode)
PORT_HTTP=80
PORT_HTTPS=443

REQUIRE_REGULATIONS_ACCEPTANCE=false
REQUIRE_COOKIE_POLICY_ACCEPTANCE=false
BRUTE_FORCE_AUTH_PREVENTION_ENABLED=true
ACCOUNTS_REGISTRATION_ENABLED=true

# These options protect your application
DB_PASSWORD=7TtQJVqnKub2jXaHS5NF2MHO1Q8NQ12J
SECRET=BRzv8dPPBoEHrUwXBwAu4fai3gzlESLG

COMPOSE_PROJECT_NAME=supla
COMPOSE_PATH_SEPARATOR=:
COMPOSE_FILE=docker-compose.yml:docker-compose.standalone.yml:docker-compose.arm32v7.yml
Awatar użytkownika
lesny8
Posty: 1429
Rejestracja: pn gru 11, 2017 9:43 pm

ndz gru 06, 2020 7:34 pm

rono21 pisze:
ndz gru 06, 2020 7:07 pm
Z jakiegoś powodu nie są otwarte porty 80 i 443
dlatego, że kontener nie wystartował poprawnie
rono21 pisze:
ndz gru 06, 2020 7:07 pm
...
# Initial user account details; delete these settings after the first launch
FIRST_USER_EMAIL=pi@raspberrypi
FIRST_USER_PASSWORD=qwe123
...
dołóż kropkę, żeby adres email mógł być poprawnie zwalidowany
pi@raspberry.pi
rono21
Posty: 11
Rejestracja: sob gru 05, 2020 2:09 pm

pn gru 07, 2020 9:17 pm

Udało się !! Aby ruszyło połączenie należało w pliku .env ustawić adres localhost czyli 127.0.0.1 , teraz wszystko działa prawidłowo.

Zastanawiam się tylko jak to sterować przez windows lub linux używam obu.

Idealnie było by zbierać to przez moją aplikację napisaną w QT w archlinux ale do tego chyba pomocy nie uzyskam :).

Póki co aplikacja supla-win pod windows skompilowana ze strony nie wyszukuje serwera , pytanie czy brnąć w kompilacje VS 2015 ? Czy będę tam mógł ustawić wybrane parametry aby połączyć się z serwerem w sieci lokalnej po adresie IP ?

Jeszcze pytanie do supla-scripts - czy to pozwala na używanie z poziomu przeglądarki aby odczytywać MEW-01 ?
ODPOWIEDZ

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