Ostatnio przeglądałem różne skrypty do reverse proxy z web GUI, poza Traefik, HAProxy spotkałem ten oto miły kontener Nginx Proxy Manager
Apache w moim przypadku zajmował się reverse proxy, jednak im więcej usług dodawałem i wgłębiałem się w temacie sieci doszedłem do wniosku że przyszedł czas na zmianę, a padło nie inaczej jak na Nginx Proxy Manager. Dlaczego Nginx a nie np. Traefik? Czas pokaże czy wybór był trafny, sam jestem ciekaw czy sprosta moim wymaganiom które niestety ciągle rosną. Przechodzimy do głównego dania.
Instalacja będzie składał się z dwóch kontenerów, Nginx Proxy Manager oraz MariaDB
Wymagania:
- Docker
- Docker Compose
Kontener składa się z bazy danych i aplikacji, baza danych będzie używała pliku config.json
poniżej znajduje się przykład takiego pliku. Jeśli chcemy zmienić hasło, użytkownika czy nazwę bazy należy pamiętać o tych zmianach przy dalszej konfiguracji i zastosować się do wprowadzonych zmian.
{ "database": { "engine": "mysql", "host": "db", "name": "npm", "user": "npm", "password": "npm", "port": 3306 } }
W tym momencie jeśli jesteś zaawansowanym użytkownikiem możesz stworzyć swoją bazę danych posiadając niezbędne informacje i dodać tak utworzone dane do pliku docker-compose.yml
Bazy które są wspierane to minimum:
- MySQL v5.7.8+
- MariaDB v10.2.7+
I n s t a l a c j a
1. Przechodzimy do katalogu gdzie chcemy zachować swoje dane, zalecana następująca struktura i przykład będzie oparty na tej strukturze (katalog domowy):
/nginxproxy/ /nginxproxy/data /nginxproxy/letsencrypt
2. Przechodzimy do katalogu nginxproxy
(tworzymy w katalogu domowym) i tworzymy plik config.json
oraz wklejamy poniższy kod
{ "database": { "engine": "mysql", "host": "db", "name": "npm", "user": "npm", "password": "npm", "port": 3306 } }
3. Tworzymy plik docker-composer.yml
i kopiujemy poniższy kod
version: "3" services: app: image: jc21/nginx-proxy-manager:2 restart: always ports: # Public HTTP Port: - '80:80' # Public HTTPS Port: - '443:443' # Admin Web Port: - '81:81' environment: # Uncomment this if IPv6 is not enabled on your host # DISABLE_IPV6: 'true' volumes: # Make sure this config.json file exists as per instructions above: - ./nginxproxy/config.json:/app/config/production.json - ./nginxproxy/data:/data - ./nginxproxy/letsencrypt:/etc/letsencrypt depends_on: - db db: image: jc21/mariadb-aria:10.4 restart: always environment: MYSQL_ROOT_PASSWORD: 'npm' MYSQL_DATABASE: 'npm' MYSQL_USER: 'npm' MYSQL_PASSWORD: 'npm' volumes: - ./data/mysql:/var/lib/mysql
4. następnie wydajemy komendę do utworzenia kontenerów i uruchomienia
docker-compose up -d
Teraz można się zalogować do strony http://adres.ip.serwera:81
Standardowe dane do logowania:
- email: admin@example.com
- password: changeme
Podczas pierwszego uruchomienia zachodzą następujące procesy:
- baza danych się zainicjuje wraz ze strukturą tabel
- klucze GPG zostaną wygenerowane i zapisane w pliku konfiguracyjnym
- utworzone zostanie konto admina ze standardowymi danymi
Nginx Proxy Manager automatycznie generuje certyfikaty SSL podczas dodawania nowej domeny
Temat na Forum HSNet.org: https://forum.hsnet.org/thread-77.html