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