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

Moderator: fracz

User avatar
siba
Posts: 67
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ę.
Post Reply