[How-To] Nginx Proxy Manager – Reverse Proxy + letsencrypt na łatwego!

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

Kod:
{
  "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

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

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

Kod:
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

Leave a Reply

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.