Docker

3 jun, 2021

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

Publicidade

Escrevi um post há pouco tempo explicando como instalar um painel no Ubuntu e configurá-lo 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 fará 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.

Em seguida, 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 última versão do docker dele mesmo nginx-proxy-manager e junto, um banco de dados mariadb última 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:

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

sudo docker ps

Podemos ver que temos no docker dois caras rodando, sendo um deles o mariadb utilizando porta 3306 e o 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:

Após login, a primeira coisa que vai pedir é para você colocar seu nome NickName, 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 e apontá-lo 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. E tem outras maneiras de subir e configurá-lo, 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

Artigo original publicado aqui e republicado no iMasters a pedido do autor.