Instalação do Nginx Proxy Manager

O que é o Nginx Proxy Manager?
É um sistema que possui uma interface web limpa, eficiente e fácil de configurar, sem precisar saber muito sobre Nginx ou Letsencrypt.

Característica
– Interface de administração bonita e segura baseada
– Crie facilmente domínios de encaminhamento, redirecionamentos, streams e hosts 404 sem saber nada sobre Nginx
– SSL grátis usando Let’s Encrypt ou forneça seus próprios certificados SSL personalizados
– Listas de acesso e autenticação HTTP básica para seus hosts
– Configuração avançada do Nginx disponível para superusuários
– Gerenciamento de usuários, permissões e log de auditoria

Distribuição testadas:
Debian 12 Bookworm
Debian 11 Bullseye

Como melhorar a produtividade no seu Debian após instalação (Recomendado)

Porta Utilizadas
81 – Porta de administração do Nginx Proxy Manager
80 – Porta HTTP pública
443 – Porta HTTP pública

Configurações de interface de Rede

Para a configuração da interface de rede vou usar uma configuração Pointopoint (Ponto a ponto) assim utilizando de apenas um endereço IP público, você pode (deve) ler este tutorial para conhecer varias possibilidades de configuração de rede pensa em como economizar endereços IPs.

# vim /etc/network/interfaces

No meu exemplo vamos pesar que esse servidor esteja conectado ao RouterOS/Mikrotik ether2 e meu endereço de IP publico será o 200.200.200.255

allow-hotplug enp0s3
iface enp0s3 inet static
        address 200.200.200.255
        pointopoint 192.168.171.171
        netmask 255.255.255.255
        gateway 192.168.171.171

Agora no seu RouterOS vamos criar nosso Pointopoint gatewai 192.168.171.171 tendo como network o endereço IP público.

RouterOS# /ip address
RouterOS# add address=192.168.171.171 comment=Pointopoint interface=ether2 network=200.200.200.255

Se você não tem IP publico para colocar em seu servidor, então fixe um endereço IP Privado e redirecione as potas 80,81 e 443 para ele, utilizando seu IP público que está em seu router. Exemplo:

allow-hotplug enp0s3
iface enp0s3 inet static
        address 10.10.10.2/24
        gateway 10.10.10.1

E é clario se você conter endereço IPv6, não deixe de configurar sua placa! Exemplo:

iface enp0s3 inet6 static
        pre-up modprobe ipv6
        address 2804:bebe:cafe::2
        netmask 64
        gateway 2804:bebe:cafe::1

Instalação Docker

Iremos instalar os pacotes necessários, bem como adicionar o repositório oficial do Docker

# apt install ca-certificates curl gnupg2 apt-transport-https lsb-release
# curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
# echo "deb https://download.docker.com/linux/debian $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list

Atualize o repositório e instale-o

# apt update
# apt install docker-ce docker-ce-cli containerd.io

Instalação Docker Compose

Vamos fazer download do Docker Compose, e adicionar aos binários do nosso servidor como um executável.

# curl -L "https://github.com/docker/compose/releases/download/v2.24.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# chmod +x /usr/local/bin/docker-compose
# ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

Versão baixada foi a 2.24.5, mas você pode consultar uma mais recente em: https://github.com/docker/compose/releases/, para verificar qual versão instalado use:

# docker-compose --version
Docker Compose version v2.24.5

Instação Nginx Proxy Manager

Crie os diretórios quais ficarão todas as configurações:

# mkdir /etc/nginx-proxy
# mkdir /etc/nginx-proxy/{data,letsencrypt}

Crie seu arquivo de composição do Docker com as configuração, para realizar a instalação dos containers do Nginx Proxy Manager e MariaDB com o Docker Compose. (Ajustes as senhas)

# vim /etc/nginx-proxy/docker-compose.yml

Adicione:

version: "3"
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      # These ports are in format :
      - '80:80'       # Porta HTTP pública
      - '443:443'     # Porta HTTPS pública
      - '81:81' # Porta de administracao do Nginx Proxy
      # Adicione qualquer outra porta Stream que você queira expor, ex
      # - '21:21' # FTP
    environment:
      DB_MYSQL_HOST: "db"
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: "nginxproxy"
      DB_MYSQL_PASSWORD: "S3NHA_NGINX_PR0XY"
      DB_MYSQL_NAME: "nginxproxy"
      # Remova o comentário se você não tem o IPv6 em seu 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: 'S3NHA_D3_R00T'
      MYSQL_DATABASE: 'nginxproxy'
      MYSQL_USER: 'nginxproxy'
      MYSQL_PASSWORD: 'S3NHA_NGINX_PR0XY'
    volumes:
      - ./mysql:/var/lib/mysql

Execute o comando Docker Compose

# cd /etc/nginx-proxy
# docker-compose up -d

Aguarde finalizar… em seguida visualize se os containers que foram criados

# docker ps -a
CONTAINER ID   IMAGE                             COMMAND             CREATED          STATUS         PORTS                                                                                  NAMES
6b796a07af22   jc21/nginx-proxy-manager:latest   "/init"             9 seconds ago    Up 7 seconds   0.0.0.0:80-81->80-81/tcp, :::80-81->80-81/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp   nginx-proxy-app-1
4c93d3b8a544   jc21/mariadb-aria:latest          "/scripts/run.sh"   13 seconds ago   Up 8 seconds   3306/tcp                                                                               nginx-proxy-db-1

Abra em navegador http://IP_SERVIDOR/ se tudo ocorreu bem você verá:

Agora abra na porta 81 http://IP_SERVIDOR:81/ e entre com:

Email: admin@example.com 
Password: changeme


Ao entrar pela primeira vez um formulário com informações será exibido para você alterar seus dados, altere seus e-mail e senha.

Configurações de DNS Autoritativa

Para que possamos encaminhar os acessos iremos necessitar configurar um subdomínios para cada situação em nosso servidor DNS autoritativo.

Vamos criar um cenário fictício para ilustrar melhor. Temos 1 clientes recebendo IPs privados da classe de um CGNAT, e o mesmo solicita um redirecionamento de portas para seu DVR. O cliente recebe o endereço IP privado 100.64.0.71 (Fixado) seu DVR esta na porta 80 na rede local 192.168.0.7. Para cada situação irei criar um novo subdomínio, exemplo “dvrudi” no servidor DNS autoritativo apontando para o IP Público do seu servidor Nginx Proxy, assim eu acesso “dvrudi.remontti.com.br”. Agora ao acessar o roteato e criar o redirecionamento provavelmente não iremos poder usar a porta 80, pois ela já é a porta de acesso do roteador 100.64.0.71, e é bem possível que você tenha fechado ela em seu firewall também para se proteger de ataques, neste caso use outra porta exemplos 60080 para fazer o direcionamento para a porta 80 do DVR, o cliente nem precisa saber desta porta 60080 ela é a penas a porta de entrada do Nginx Proxy. Agora volte ao Admin do NPM, no menu Hosts >> Proxy Hosts >> Add Proxy Host

Se desejar pode ativar certificado grátis com Lets Encrypt.

Agora ao acessar “dvrudi.remontti.com.br” ele estará acessando diretamente o DVR. #clientefeliz

Legal não? Agora você pode ter um painel administrativo para redirecionamento de serviços web, no exemplo sitei o caso de CGNAT, mas você pode usar para qualquer outra situação, bem como até apontar para um subdiretório, e restringir o acesso do mesmo, sabe esses ERP porco que você acessar com /admin, daria para restringir. Bom o painel do NPM é bem intuitivo, para quem já conhece o Nginx sabe das suas enumeras possibilidades vai achar um doce.

Atualizando do NPM

# cd /etc/nginx-proxy/
# docker-compose down
# docker-compose pull
# docker-compose up -d

Gostou? Se quiser apoiar o blog e fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!

Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato clique aqui.

Abraço!


Fonte:
https://nginxproxymanager.com/guide/
https://github.com/NginxProxyManager/nginx-proxy-manager

Rudimar Remontti

Trabalho atualmente como Gerente de Redes em um Provedor de Internet no Rio Grande do Sul.

Você pode gostar...

5 Resultados

  1. André Dias disse:

    Wopa! Para que tiver o erro “Bad Gateway” ao acessar o front, isso acontece pois no docker-compose está bindado o folder errado para o mysql.

    No serviço do mysql, altere o volume para ./mysql:/vri/lib/mysql ao inves de ser ./data/mysql:……

    Vlw flw

  2. Raildson Felipe da Silva disse:

    Muito bem explicado.

  3. Delvan disse:

    E aí Remontti.
    Primeiro, meus parabéns pelos seus artigos.

    É impressão minha ou um servidor desse seria ideal pra empresas que só tem disponível um único ip público mas quer oferecer alguns serviços web, tipo, mail server, sites, aplicações e etc… digo, assumindo que nessa empresa tenha um servidor de virtualização, por exemplo.

    • Vicente Filho disse:

      Também fiquei curioso sobre isso…
      no meu caso, eu até consegui 4 IP’s Públicos (usando um /30 pùblico e usando ip privado como gateway)
      porém, desses 4, 2 deles usei pro servidor DNS ns1 e ns2 (feito pelo exemplo do remontti), ja o Terceiro, usei pro servidor de e-mail (Também pelo tutorial do Remontti) e o Ultimo (4º) Usei pra montar um Servidor WEB (Também pelo Tutorial do remontti) com Painel do tipo CPANEL. então não tenho mais ip’s Públicos pra usar em outros serviços. Então Esse tutorial NGM me pareceu a luz do Fim do Tunel.
      Será que confirma isso Remontti?

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *