Linux Ubuntu com Docker, proxy reverso e SSL com Nginx Proxy Manager

Escrevi um post a pouco tempo explicando como instalar um painel no Ubuntu e o configurar o para fazer proxy reverso, durante as minhas pesquisas achei este projeto Open Source chamado: Nginx Proxy Manager e achei animal.

Este projeto vem como uma imagem docker pré-construída que permite que você encaminhe facilmente para seus sites rodando em casa ou não, incluindo SSL grátis, sem ter que saber muito sobre Nginx ou Letsencrypt.

Bom pra resumir a história é assim se você tem um Linux instalado e não quer instalar painel de controle e precisa só rotear o trafego de um domínio que esteja apontando para sua maquina para uma aplicação docker, basta instalar essa aplicação docker no docker que ela vai escutar a porta 80 e 443 por padrão e toda requisição que chegar ele faz o trabalho de encaminhar o domínio para a aplicação docker que você quiser e até mesmo baixar o certificado SSL do Let’s Encrypt tudo isso através de uma interface web bem simples de configurar.

Estes processos foram feitos no Ubuntu 20.04.2.0 LTS

Veja como é simples….

Antes de tudo não se esqueça de atualizar seu Ubuntu rodando no terminal:

sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade

Primeiro instale o docker caso não tenha para instalar é simples.

sudo apt install docker.io

Depois instale o docker compose

sudo apt install docker-compose

Seguindo o tutorial de instalação do próprio Nginx Proxy Manager

Após instalado crie um arquivo chamado docker-compose.yml eu recomendo criar em um diretório onde seja fácil acessar/manter guardado no meu caso como estou usando Ubuntu com interface coloquei em Documentos/NginxProxyManager, e cole o seguinte conteúdo.

version: '3'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
ports:
- '80:80'
- '81:81'
- '443:443'
environment:
DB_MYSQL_HOST: "db"
DB_MYSQL_PORT: 3306
DB_MYSQL_USER: "npm"
DB_MYSQL_PASSWORD: "npm"
DB_MYSQL_NAME: "npm"
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
db:
image: 'jc21/mariadb-aria:latest'
environment:
MYSQL_ROOT_PASSWORD: 'npm'
MYSQL_DATABASE: 'npm'
MYSQL_USER: 'npm'
MYSQL_PASSWORD: 'npm'
volumes:
- ./data/mysql:/var/lib/mysql

Neste arquivo docker-compose podemos ver que ele irá criar 1 projeto com a ultima versão do docker dele mesmo nginx-proxy-manager e junto um banco de dados mariadb ultima versão e se auto conectar a ele.

Após isto acesse este diretório via terminal usando o comando

cd Documentos/NginxProxyManager

Neste diretório digite:

sudo docker-compose up -d

Após a instalação da imagem ser feita no docker podemos usar o comando:

sudo docker ps

Podemos ver que temos no docker 2 caras rodando sendo um deles o mariadb utilizando porta 3306 eo nginx-proxy-manager na porta 80 mandando para 81 e 443 mandando para 443.

Feito isto basta abrir o navegador e digitar:

http://localhost:81

Os dados para primeiro acesso são:

Email:    admin@example.com
Password: changeme

Após login a primeira coisa que vai pedir é para você colocar seu nome NickName e e-mail e trocar a senha.

Tela inicial

Agora podemos criar nosso Host, para isso acessar o menu Hosts e escolher proxy Hosts

Depois Add Proxy Host

E agora vamos configurar nosso domínio apontar ele para um docker que esteja rodando.

Na aba SSL devemos escolher para ele solicitar um novo certificado SSL para este domínio, após isto, salve e pronto!.

Se tudo estiver ok, seu domínio já deverá estar funcionando para ser acessado com e sem https.

Bom esse Nginx Proxy Manager é um projeto bem legal, você pode ver muita informação no site oficial, tem outras maneiras de subir e configurar ele, até mesmo de como configurar mais a parte avançada para encaminhar para o IP desejado alguns cabeçalhos a mais enfim tem muita coisa.

Espero que isto ajude!

Abs

Desenvolvedor há mais de 20 anos, atualmente estou me especializando em ASP.NET CORE com Linux.

Desenvolvedor há mais de 20 anos, atualmente estou me especializando em ASP.NET CORE com Linux.