Tryb proxy (poprawne certyfiakty SSL, Let's Encrypt)

Moderator: fracz

siba
Posts: 80
Joined: Mon Feb 06, 2017 4:01 pm
Location: Kraków

Tue Feb 06, 2018 12:54 pm

Udało mi się uruchomić na raspberry suplę i skrypty z certyfikatami letsencrypt opartymi o proxy z tego linku:
https://github.com/buchdag/multiarch-le ... ginx-proxy

Jednak nie działa on tak bezpośrednio po zainstalowaniu bo kontenery suplowe i skryptowe nie "widzą" tego proxy. Aby to działało na raspberry potrzebna jest integracja do której "pożyczyłem" pliki z proxy dla architektury x86 z poniższego linku:
https://github.com/evertramos/docker-co ... -companion

lista "pożyczonych" plików:

Code: Select all

.env
docker-compose.yml
docker-compose-multiple-networks.yml
start.sh
nginx.tmpl
Modyfikacje polegały na zmianie tylko w pliku docker-compose.yml potem pliki trzeba przekopiować do głównego katalogu multiarch-letsencrypt-nginx-proxy i uruchomić ./start.sh

poniżej zawartość zmodyfikowanego pliku docker-compose.yml:

Code: Select all

version: '3'
services:
  nginx-web:
    image: nginx
    labels:
        com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy: "true"
    container_name: ${NGINX_WEB:-nginx-web}
    restart: always
    ports:
      - "${IP:-0.0.0.0}:80:80"
      - "${IP:-0.0.0.0}:443:443"
    volumes:
      - ${NGINX_FILES_PATH:-./data}/conf.d:/etc/nginx/conf.d
      - ${NGINX_FILES_PATH:-./data}/vhost.d:/etc/nginx/vhost.d
      - ${NGINX_FILES_PATH:-./data}/html:/usr/share/nginx/html
      - ${NGINX_FILES_PATH:-./data}/certs:/etc/nginx/certs:ro
      - ${NGINX_FILES_PATH:-./data}/htpasswd:/etc/nginx/htpasswd:ro
    logging:
      options:
        max-size: ${NGINX_WEB_LOG_MAX_SIZE:-4m}
        max-file: ${NGINX_WEB_LOG_MAX_FILE:-10}

  nginx-gen:
    build:
      context: ./docker-gen
      args:
        OS: alpine-linux
        ARCH: armhf
    image: docker-gen
    command: -notify-sighup ${NGINX_WEB:-nginx-web} -watch -wait 5s:30s /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf
    container_name: ${DOCKER_GEN:-nginx-gen}
    restart: always
    volumes:
      - ${NGINX_FILES_PATH:-./data}/conf.d:/etc/nginx/conf.d
      - ${NGINX_FILES_PATH:-./data}/vhost.d:/etc/nginx/vhost.d
      - ${NGINX_FILES_PATH:-./data}/html:/usr/share/nginx/html
      - ${NGINX_FILES_PATH:-./data}/certs:/etc/nginx/certs:ro
      - ${NGINX_FILES_PATH:-./data}/htpasswd:/etc/nginx/htpasswd:ro
      - /var/run/docker.sock:/tmp/docker.sock:ro
      - ./nginx.tmpl:/etc/docker-gen/templates/nginx.tmpl:ro
    logging:
      options:
        max-size: ${NGINX_GEN_LOG_MAX_SIZE:-2m}
        max-file: ${NGINX_GEN_LOG_MAX_FILE:-10}

  nginx-letsencrypt:
    build:
      context: ./letsencrypt-nginx-proxy-companion
      args:
        OS: alpine-linux
        ARCH: armhf
    image: letsencrypt-nginx-proxy-companion
    container_name: ${LETS_ENCRYPT:-nginx-letsencrypt}
    restart: always
    volumes:
      - ${NGINX_FILES_PATH:-./data}/conf.d:/etc/nginx/conf.d
      - ${NGINX_FILES_PATH:-./data}/vhost.d:/etc/nginx/vhost.d
      - ${NGINX_FILES_PATH:-./data}/html:/usr/share/nginx/html
      - ${NGINX_FILES_PATH:-./data}/certs:/etc/nginx/certs:rw
      - /var/run/docker.sock:/var/run/docker.sock:ro
    environment:
      NGINX_DOCKER_GEN_CONTAINER: ${DOCKER_GEN:-nginx-gen}
      NGINX_PROXY_CONTAINER: ${NGINX_WEB:-nginx-web}
    logging:
      options:
        max-size: ${NGINX_LETSENCRYPT_LOG_MAX_SIZE:-2m}
        max-file: ${NGINX_LETSENCRYPT_LOG_MAX_FILE:-10}

networks:
  default:
    external:
      name: ${NETWORK:-webproxy}
pozostałe pliki skopiowałem bez zmian (trzeba tylko ustawić ścieżkę NGINX_FILES_PATH w pliku .env na swoją, u mnie jest to ścieżka /home/pi/nginx/data która oczywiście musi istnieć fizycznie). Plik docker-compose.yaml który domyślnie po sklonowaniu znajduje się w katalogu multiarch-letsencrypt-nginx-proxy nie jest potrzebny.

potem uruchomiłem ./start.sh i poczekałem dłuższą chwilę aż skończy.

Zanim zaczniecie cokolwiek trzeba zainstalować potrzebne składniki tak jak w tym wątku:
viewtopic.php?p=16391#p16391 - instalacja docker i docker-compose
Z tym że ja jeszcze dodaję użytkownika pi do grupy "docker" wedle tych wytycznych:
https://docs.docker.com/install/linux/l ... stinstall/

Po poprawnym uruchomieniu proxy trzeba jeszcze zainstalować suplę i skrypty oraz uruchomić je w trybie proxy, cała procedura opisana tu:
https://github.com/SUPLA/supla-docker#l ... proxy-mode
https://github.com/fracz/supla-scripts/ ... -docker.md

Podczas zabawy z dockerem przydatne mogą być poniższe komendy:
  • docke ps --> lista uruchomionych kontenerów
  • docke ps -a --> lista wszystkich kontenerów
  • docker stop $(docker ps -a -q) --> zatrzymanie wszystkich uruchomionych kontenerów
  • docker rm $(docker ps -a -q) --> usunięcie wszystkich kontenerów (wcześniej muszą być zatrzymane)
  • docker network ls - lista sieci utworzonych przez dockera
Wszystko pisane z głowy tak jak zapamiętałem jak dorwę nową kartę to spróbuję to wykonać od zera na czystym rasbianie i jeśli zauważę jakieś braki lub niedoskonałości tej instrukcji to ją poprawię.
User avatar
Woden
Posts: 32
Joined: Sat Mar 10, 2018 9:17 am

Tue Nov 27, 2018 7:30 am

Witam.
Dzięki Waszej instrukcji udało mi się postawić Supla na Raspberry Pi 3 (pomimo braku podstawowej wiedzy o Linuxie) bez problemu . Dzięki za kawał dobrej roboty.
Jako punkt honoru postawiłem sobie uruchomienie Supli w trybie proxy wraz z poprawnymi certyfikatami SSL i zainstalowanie Supla Scripts. Niestety wykładam się na proxy. Proxy próbowałem uruchomić według instrukcji użytkownika siba.
Po instalacji, kontener 'nginx' z multiarch-letsencrypt-nginx-proxy startuje bez problemu i w logach nie pojawiają się błędy. Po wystartowaniu Supli, serwer wywala błąd "standard_init_linux.go:190: exec user process caused "exec format error".
Cały tydzień z tym walczyłem (żona wkurzona, dzieci zaniedbane) lecz bez skutku. Ktoś ma może jakiś pomysł co jeszcze może być przyczyną? Będę wdzięczny za pomoc.
User avatar
fracz
Posts: 1525
Joined: Fri Oct 28, 2016 10:56 pm
Location: Rybna

Tue Nov 27, 2018 7:38 am

Tego typu błędy oznaczają, że docker mimo wszystko pobrał kontener dla złej architektury. Z twojego posta nie jest dla mnie jasne - kontener nginxa czy supli daje taki błąd? I oczywiście pamiętaj że żeby mieć certyfikat, musisz mieć domenę.

Problem pobierania złego kontenera zidentyfikowaliście już tutaj na PI Zero dla Docker 18.06 (w innym wątku). Zgłosiłem nawet tutaj: https://github.com/docker/for-linux/issues/463

Sprawdź wersję dockera. Jeśli masz tą problemtayczną, spróbuj downgrade do 18.03.0-ce.
User avatar
Woden
Posts: 32
Joined: Sat Mar 10, 2018 9:17 am

Tue Nov 27, 2018 7:55 am

Szybko działasz. Domenę mam założoną.

Błąd wywala kontener Supli. Poniżej zamieszczam logi.
pi@raspberrypi:~/supla-docker $ docker logs --since=20m supla-cloud
standard_init_linux.go:190: exec user process caused "exec format error"
pi@raspberrypi:~/supla-docker $ docker logs --since=20m supla-server
standard_init_linux.go:190: exec user process caused "exec format error"
Jeżeli chodzi o wersję dockera:
pi@raspberrypi:~/supla-docker $ docker -v
Docker version 18.09.0, build 4d60db4
pi@raspberrypi:~/supla-docker $ docker-compose -v
docker-compose version 1.23.1, build b02f130
Mam zrobić downgrade do 18.03.0-ce?

Jeżeli chodzi o zainstalowanie nginx proxy to zainstalowałem wersję z lokalizacji, którą poleciłeś we wcześniejszych postach (https://github.com/buchdag/multiarch-le ... ginx-proxy). Dodatkowo zastosowałem się do instrukcji użytkownika siba, która wydaje mi się nie do końca kompletna (nie do końca jasna ze względu na braki w mojej wiedzy) więc mogłem coś zamieszać.
User avatar
Woden
Posts: 32
Joined: Sat Mar 10, 2018 9:17 am

Tue Nov 27, 2018 8:48 am

Dzięki za zainteresowanie. Teraz coś kojarzę, że podczas instalacji proxy wyskoczył komunikat o problemie odnośnie dostępu do katalogu docker-gen więc bardzo prawdopodobne, że jest tak jak mówisz "docker mimo wszystko pobrał kontener dla złej architektury".
pi@raspberrypi:~/multiarch-letsencrypt-nginx-proxy $ ./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 16288 100 16288 0 0 35286 0 --:--:-- --:--:-- --:--:-- 35255
Pulling nginx-web ... done
Pulling nginx-gen ... error
Pulling nginx-letsencrypt ... error

ERROR: for nginx-gen pull access denied for docker-gen, repository does not exi st or may require 'docker login'

ERROR: for nginx-letsencrypt pull access denied for letsencrypt-nginx-proxy-com panion, repository does not exist or may require 'docker login'
ERROR: pull access denied for docker-gen, repository does not exist or may requi re 'docker login'
Szczerze mówiąc nie wiem dlaczego wywala mi błąd odnośnie docker-gen.
User avatar
fracz
Posts: 1525
Joined: Fri Oct 28, 2016 10:56 pm
Location: Rybna

Tue Nov 27, 2018 9:24 am

Zatrzymaj wszystkie kontenery i je usuń:

docker system prune -fa

Zrób downgrade dockera do 18.03.

Po tym powinno ruszyć.
User avatar
Woden
Posts: 32
Joined: Sat Mar 10, 2018 9:17 am

Tue Nov 27, 2018 1:36 pm

Próbowałem zrobić wszystko wg Twoich instrukcji ale dalej Supla wywala błąd:
standard_init_linux.go:190: exec user process caused "exec format error"

Code: Select all

pi@raspberrypi:~ $ docker images
REPOSITORY                          TAG                 IMAGE ID            CREATED             SIZE
letsencrypt-nginx-proxy-companion   latest              e763435f6483        38 minutes ago      84.7MB
docker-gen                          latest              14f88fc2c696        About an hour ago   13.5MB
<none>                              <none>              07790aa7b9a0        About an hour ago   628MB
golang                              1.10-alpine         b8151bfd27cb        6 days ago          243MB
nginx                               latest              a2d703f88eb8        10 days ago         88.1MB
alpine                              3.7                 a175bcd07e83        2 months ago        3.83MB
hypriot/rpi-mysql                   5.5                 4f3cbdbc3bdb        5 months ago        209MB
supla/supla-server                  latest              ecccf46756c3        6 months ago        398MB
supla/supla-cloud                   latest              71f97fde7a1c        6 months ago        621MB
php                                 7.0.27-apache       7e11cf36f4f7        9 months ago        335MB
armhf/hello-world                   latest              d40384c3f861        2 years ago         1.64kB
Podejrzewam, że robię coś źle przy instalacji proxy - spróbuję poźniej jeszcze raz podejść do tego tematu.
PuteR
Posts: 524
Joined: Wed Dec 06, 2017 10:07 am

Fri Nov 30, 2018 12:13 am

zaczynam wymiękać, walczę z tym proxy i supla scripts i wywal;a mi coś takiego :

Code: Select all

pi@raspberrypi:~ $ supla-scripts/docker/suplascripts.sh start
  ___ _   _ ___ _      _
 / __| | | | _ \ |    /_\
 \__ \ |_| |  _/ |__ / _ \
 |___/\___/|_| |____/_/ \_\
 / __| __ _ _(_)_ __| |_ ___
 \__ \/ _| '_| | '_ \  _(_-<
 |___/\__|_| |_| .__/\__/__/
               |_| by @fracz

Starting SUPLA Scripts containers
Building suplascripts
Step 1/10 : FROM php:7.0.27-apache
 ---> 4dbb41f6ed5b
Step 2/10 : WORKDIR /var/www
 ---> Using cache
 ---> ec5d6a94dc97
Step 3/10 : RUN apt-get update     && apt-get install -y --no-install-recommends       li                                                                                                                                                    bicu-dev       libpq-dev       ca-certificates       ssl-cert       libcurl4-gnutls-dev                                                                                                                                                           git       unzip       mysql-client       supervisor       cron       wget     && upd                                                                                                                                                    ate-ca-certificates     && docker-php-ext-install       pdo_mysql       opcache       cur                                                                                                                                                    l       zip     && apt-get autoremove     && rm -r /var/lib/apt/lists/*
 ---> Using cache
 ---> 36c611f5a43c
Step 4/10 : COPY utils/crontab /etc/cron.d/suplascripts
 ---> Using cache
 ---> 20745ec54b11
Step 5/10 : RUN {               echo 'opcache.memory_consumption=128';          echo 'opc                                                                                                                                                    ache.interned_strings_buffer=8';                echo 'opcache.max_accelerated_files=4000'                                                                                                                                                    ;               echo 'opcache.revalidate_freq=2';               echo 'opcache.fast_shutdo                                                                                                                                                    wn=1';          echo 'opcache.enable_cli=1';    } > /usr/local/etc/php/conf.d/opcache-rec                                                                                                                                                    ommended.ini     && a2enmod rewrite expires deflate ssl cgi alias env && a2ensite default                                                                                                                                                    -ssl     && chmod 0644 /etc/cron.d/suplascripts
 ---> Using cache
 ---> f5dfd5360172
Step 6/10 : ENV SUPLA_SCRIPTS_VERSION=2.8.3
 ---> Using cache
 ---> dbcc2f3b698b
Step 7/10 : RUN wget -nc https://github.com/fracz/supla-scripts/releases/download/v${SUPL                                                                                                                                                    A_SCRIPTS_VERSION}/supla-scripts-${SUPLA_SCRIPTS_VERSION}.tar.gz     && tar -xzf supla-sc                                                                                                                                                    ripts-${SUPLA_SCRIPTS_VERSION}.tar.gz -C .     && rm -f supla-scripts-${SUPLA_SCRIPTS_VER                                                                                                                                                    SION}.tar.gz     && chown -hR www-data:www-data .
 ---> Using cache
 ---> 36188e58810e
Step 8/10 : COPY utils/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
 ---> Using cache
 ---> dca4eae35c78
Step 9/10 : COPY utils/entrypoint.sh /usr/local/bin/docker-php-entrypoint
 ---> Using cache
 ---> 8626bc0a2d0b
Step 10/10 : CMD ["/usr/bin/supervisord", "--nodaemon", "--configuration", "/etc/supervis                                                                                                                                                    or/conf.d/supervisord.conf"]
 ---> Using cache
 ---> 2e3c0da22e1a
Successfully built 2e3c0da22e1a
Successfully tagged suplascripts_suplascripts:latest
suplascripts-db is up-to-date
Starting suplascripts ... error

ERROR: for suplascripts  Cannot start service suplascripts: driver failed programming ext                                                                                                                                                    ernal connectivity on endpoint suplascripts (5e137a19cc5ad88af1a574abbd39eeb63061b48904ae                                                                                                                                                    ae9468f7b6e9648830df): Error starting userland proxy: listen tcp 0.0.0.0:443: bind: addre                                                                                                                                                    ss already in use
co robię tak??

chyba troszkę namieszałem w ustawieniach i teraz nie mogę wystartować nawet supla cloud bo wyskakuje taki sam error jak powyżej o zajęciu portu 443.
User avatar
fracz
Posts: 1525
Joined: Fri Oct 28, 2016 10:56 pm
Location: Rybna

Fri Nov 30, 2018 11:04 am

Jak konfigurujesz proxy, to jedyną aplikacją która zajmuje porty jest.... proxy.

Skrypty i Cloud mają się do niego wpiąć.

https://github.com/SUPLA/supla-docker#l ... proxy-mode
https://github.com/fracz/supla-scripts/ ... sample#L12

Używasz konfiguracji standalone ALBO proxy. Nie obydwu na raz.
PuteR
Posts: 524
Joined: Wed Dec 06, 2017 10:07 am

Fri Nov 30, 2018 11:46 am

Ok, rozumiem, w plikach .env zarówno w supla cloud jak isupla scripts zmeiniłem na proxy. Startuje jedno i drugie. Ale o ile aplikacja działa to nie mogę zalogować się na clouda

P.S Pytanie może banalne jak mam wejść na swoją instalację scriptów aby ich używać?? :]

Wrzucam logi jak to wygląda:

Code: Select all

pi@raspberrypi:~ $ ./supla-docker/supla.sh start
Starting SUPLA containers
Recreating supla-db ... done
Recreating supla-cloud ... done
Recreating supla-server ... done
SUPLA containers has been started.

pi@raspberrypi:~ $ supla-scripts/docker/suplascripts.sh start
  ___ _   _ ___ _      _
 / __| | | | _ \ |    /_\
 \__ \ |_| |  _/ |__ / _ \
 |___/\___/|_| |____/_/ \_\
 / __| __ _ _(_)_ __| |_ ___
 \__ \/ _| '_| | '_ \  _(_-<
 |___/\__|_| |_| .__/\__/__/
               |_| by @fracz

Starting SUPLA Scripts containers
WARNING: The DOMAIN_NAME variable is not set. Defaulting to a blank string.
WARNING: The ADMIN_EMAIL variable is not set. Defaulting to a blank string.

^[[BBuilding suplascripts
Step 1/10 : FROM php:7.0.27-apache
 ---> 4dbb41f6ed5b
Step 2/10 : WORKDIR /var/www
 ---> Using cache
 ---> ec5d6a94dc97
Step 3/10 : RUN apt-get update     && apt-get install -y --no-install-recommends       libicu-dev       libpq-dev       ca-certificates       ssl-cert       libcurl4-gnutls-dev       git       unzip       mysql-client       supervisor       cron       wget     && update-ca-certificates     && docker-php-ext-install       pdo_mysql       opcache       curl       zip     && apt-get autoremove     && rm -r /var/lib/apt/lists/*
 ---> Using cache
 ---> 36c611f5a43c
Step 4/10 : COPY utils/crontab /etc/cron.d/suplascripts
 ---> Using cache
 ---> 20745ec54b11
Step 5/10 : RUN { 		echo 'opcache.memory_consumption=128'; 		echo 'opcache.interned_strings_buffer=8'; 		echo 'opcache.max_accelerated_files=4000'; 		echo 'opcache.revalidate_freq=2'; 		echo 'opcache.fast_shutdown=1'; 		echo 'opcache.enable_cli=1'; 	} > /usr/local/etc/php/conf.d/opcache-recommended.ini     && a2enmod rewrite expires deflate ssl cgi alias env && a2ensite default-ssl     && chmod 0644 /etc/cron.d/suplascripts
 ---> Using cache
 ---> f5dfd5360172
Step 6/10 : ENV SUPLA_SCRIPTS_VERSION=2.8.3
 ---> Using cache
 ---> dbcc2f3b698b
Step 7/10 : RUN wget -nc https://github.com/fracz/supla-scripts/releases/download/v${SUPLA_SCRIPTS_VERSION}/supla-scripts-${SUPLA_SCRIPTS_VERSION}.tar.gz     && tar -xzf supla-scripts-${SUPLA_SCRIPTS_VERSION}.tar.gz -C .     && rm -f supla-scripts-${SUPLA_SCRIPTS_VERSION}.tar.gz     && chown -hR www-data:www-data .
 ---> Using cache
 ---> 36188e58810e
Step 8/10 : COPY utils/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
 ---> Using cache
 ---> dca4eae35c78
Step 9/10 : COPY utils/entrypoint.sh /usr/local/bin/docker-php-entrypoint
 ---> Using cache
 ---> 8626bc0a2d0b
Step 10/10 : CMD ["/usr/bin/supervisord", "--nodaemon", "--configuration", "/etc/supervisor/conf.d/supervisord.conf"]
 ---> Using cache
 ---> 2e3c0da22e1a
Successfully built 2e3c0da22e1a
Successfully tagged suplascripts_suplascripts:latest
Starting suplascripts-db ... done
Starting suplascripts    ... done
SUPLA Scripts containers have been started


Coś pewnie dalej pomija tylko nie wiem co.
Post Reply