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 [email protected] 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