How to Install and Configure NGINX Proxy Manager

NGINX ile uzun uzadıya konfigürasyonlar yapmanın daha kolay bir yolu var mı acaba? 🤔 Evet, NGINX Proxy Manager!

How to Install and Configure NGINX Proxy Manager

NGINX ile uzun uzadıya konfigürasyonlar yapmanın daha kolay bir yolu var mı acaba? 🤔 Evet, NGINX Proxy Manager!

Düşünsenize; tüm alan adlarınıza ve hatta tüm alt adlarınıza ters vekil sunucu (reverse proxy) ekliyor hem bir koruma elde ediyorsunuz hem de tüm alan adlarınız için otomatik olarak Let's Encrypt ile SSL oluşturuyorsunuz. Hem de yalnızca birkaç adımda!

Kurulum adımlarına geçmeden önce şunlara sahip olduğumuzdan emin olalım:

  • Alan adı veya alt alan adı —> Sunucu IP'sine yönlendirilmiş olmalı. (A Record)
  • Docker ve Docker Compose kurulu bir sunucu. (Alan adı bu sunucuya yönlendirilmeli)

Sunucuya SSH ile bağlandıktan sonra nginx proxy managere ait bazı container dosyalarının saklanması için /opt altında nginxproxymanager adında dizin oluşturalım. Ardından compose dosyasını oluşturalım.

sudo mkdir -p /opt/nginxproxymanager && cd /opt/nginxproxymanager
sudo touch docker-compose.yml

NGINX Proxy Manager, sunucumuzun hem 443 hem de 80 portunu dinlemeli ki http ve https isteklerini alabilsin. Bu yüzden compose dosyasında bunları container ile paylaşmalıyız. Bunun dışında admin arayüzüne erişebilmek için 8181 portunu da containere balamalıyız.

version: "3"
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      # These ports are in format <host-port>:<container-port>
      - '80:80' # Public HTTP Port
      - '443:443' # Public HTTPS Port
      - '8181:81' # Admin Web Port
      # Add any other Stream port you want to expose
      # - '21:21' # FTP
    environment:
      DB_MYSQL_HOST: "db"
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: "manager"
      DB_MYSQL_PASSWORD: "your-db-password"
      DB_MYSQL_NAME: "proxymanager"
      # Uncomment this if IPv6 is not enabled on your host
      # DISABLE_IPV6: 'true'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    depends_on:
      - db

  db:
    image: 'jc21/mariadb-aria:latest'
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: 'your-db-root-password'
      MYSQL_DATABASE: 'proxymanager'
      MYSQL_USER: 'manager'
      MYSQL_PASSWORD: 'your-db-password'
    volumes:
      - ./data/mysql:/var/lib/mysql

Dosyayı incelediğiniz zaman /opt/nginxproxymanager altında iki farklı dizinin containerlere bağlandığını göreceksiniz. Compose dosyası ayağa kaldırıldığı zaman bunlar otomatik olarak oluşturulacak. Ancak terminalde pwd yazdığınızda aldığınız çıktının /opt/nginxproxymanager olduğundan emin olun. Ardından aşağıdaki komut ile servislerimizi ayağa kaldırabiliriz. Ha, unutmadan, veritabanı için yazdığınız parolayı proxy servisinde de aynı şekilde yazığınızdan emin olun.

sudo docker-compose up -d

Servisler ayağa kaltığı zaman sunucunun 8181 portuna giderek admin sayfasını açabilirsiniz. Varsayılan kullanıcı adı ve parola:

Email   : admin@example.com
Password: changeme

Giriş yaptıktan sonra ilk işiniz email ve password değerlerini değiştirmek olsun. İkinci işiniz ise SSL sertifikasını yönlendirmesini yaptığınız alan adı için hemen oluşturun. Admin UI size bu konuda büyük kolaylık sağlayacaktır.

SSL oluşturduktan sonra Proxy Hosts bölümünden alan adınız için proxy oluşturun ve http servisini seçin. Port olarak 8181 seçin. SSL sertifikasını da az önce oluşturduğunuz sertifikayı seçerek kurulumu tamamlayın. Artık admin sayfasına SSL ile ulaşabilirsiniz. Tebrikler , hazırsınız! 😃🎉

Eğer videolu anlatım istiyorsanız o da hemen aşağıda! 😃