Nginx Proxy Manager jako kontener na QNAP NAS

Nginx Proxy Manager jako kontener na QNAP NAS

Kilka dni temu czystym przypadkiem wpadła mi w oko ciekawa aplikacja o nazwie Nginx Proxy Manger, a jak wiadomo nginx to jest to co ja lubię :) Ten blog jak i wiele innych stron czy aplikacji właśnie hostuje na swoim serwerze QNAP czy to jako kontenery lxc/docker czy to jako maszyny wirtualne. Obecnie też mam proxy ale wszystko konfigurowane ręcznie. Nie każdy ma wiedzę lub ochote pisać ręcznie pliki konfiguracyjne i tutaj właśnie za pomocą tej aplikacji możemy wszystko wyklikać w łatwy i szybki sposób.

UWAGA: wartości haseł, userów etc.. zostawiam domyślnie zgodnie z opisem autora aplikacji i to koniecznie trzeba zmienić. Katalogi są zgodnie z moją wizją :) jak i porty dostępowe są inne niż na stronie autora.

Do całości wykorzystamy docker-compose czyli nasz Container Statnio ale dziś nie będzie zabawy w konsoli :).

Na swoim routere musicie przekierować odpowiednio porty, i tak port http będzie nasłuchiwał na NAS_IP:980, https -> NAS_IP:9443, port do zarządzania NAS_IP:981. O ile portu do zarządzania nie musicie otwierać na świat to na routerze musicie zrobić mapowanie 80 -> NAS_IP:980 oraz 443 -> NAS_IP:9443.

Zacznymay od utorzenia shared folder nginx

Kolejno musimy w nim utworzyć katalogi data oraz letsencrypt

oraz wgrać plik config.json z zawartością:

{
  "database": {
    "engine": "mysql",
    "host": "db",
    "name": "npm",
    "user": "npm",
    "password": "npm",
    "port": 3306
  }
}

Teraz możemy przejść do Container Station i wybrać utworzenie aplikacji.

W kolejnym kroku musimy oczywiście aplikację nazwać oraz podać co ma zrobić docker-compose

Cała zawartość skryptu:

version: '3'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    ports:
      - '980:80'
      - '981:81'
      - '9443:443'
    volumes:
      - /share/nginx/config.json:/app/config/production.json
      - /share/nginx/data:/data
      - /share/nginx/letsencrypt:/etc/letsencrypt
  db:
    image: 'jc21/mariadb-aria:10.4'
    environment:
      MYSQL_ROOT_PASSWORD: 'npm'
      MYSQL_DATABASE: 'npm'
      MYSQL_USER: 'npm'
      MYSQL_PASSWORD: 'npm'
    volumes:
      - /share/nginx/data/mysql:/var/lib/mysql

Jak widac mamy tutaj podane katalogi, portu oraz dane logowania dla bazy mysql, które są powiązane z tymi z config.json - i to jest to co prosiłem zmienić wyżej :)

I już się nam aplikacja tworzy.

Po chwili będzie ona zainstalowana i widoczna jako dwa kontenery - aplikacji oraz bazy danych.

Teraz możemy się już logować. Domyślny login to admin@example.com z hasłem changeme. Oczywiście po pierwszym logowaniu system wymusi zmianę na nas danych logowania.

Teraz po przejściu do sekcji proxy można już dodać konfigurację

oraz certyfikat :)

Zatem to wszystko :). Miłej zabawy