Docker, Cerveja e .....
Fala galera !
Como vocês estão nesta volta do "meio verão" (calorzin bããão) ?
Mais uma da série Docker e Cervejas !
Estava eu praticando a arte do Apache
Pensei que poderia desinstalar o Apache, mas como se já tinha bastante coisa configurada no server ? E como fazer um proxy reverso no Apache cara ???
Lutei bravamente meus xóvens, até encontrar a saída da solução, e não achei de todo o mal o Apache.
A causa disso ? Precisei migrar o servidor que tinha de RocketChat (Docker) para outro server com Apache e outras cositas más. E acabei reencontrando uma ferramenta LINDEZA DO PAPAI para gerar certificados https gratuitamente, o famigerado CERTBOT da LetsEncrypt.
Então bora para um step-by-step de como configurar um proxy reverso no Apache e como subir um rocketchat lindo com mongodb sem perder suas configurações no Docker :)
Essa semana experimentei uma IPA cítrica deliciosa, a IPA da Baden Baden, achei um tom bem suave perto das IPA's "galho seco" que encontramos.
Deu tempo de abrir ? Então vamos lá.....
Pré-requisitos:
- Ter o yml do docker compose do RocketChat. Você consegue isso aqui no nosso github.
- Ter os conceitos de módulos do Apache2 no Ubuntu.
- Ter os conceitos básicos sobre proxy reverso.
- Ter os conceitos básicos sobre SSL Challenge.
- Compreender o uso dos arquivos de certificados SSL e redirecionamento HTTP.
Mãos na massa !
- Instale o Docker-CE e Docker-Compose no servidor. Caso seu Ubuntu (ou derivado) tenha algum docker instalado, desinstale-o
sudo apt-get remove docker docker-engine docker.io
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update
sudo apt-get install -y docker-ce
sudo systemctl enable docker
sudo apt-get install -y docker-compose
- Instale o Apache 2
sudo apt-get install apache2
- Instale o
CertBot/LetsEncrypt
(Necessário que você tenha um cadastro junto com o pessoal da LetsEncrypt/CertBot)Adicione o Repositório (PPA) do certbot
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
python --version
sudo apt-get install python-certbot python-certbot-apache
sudo apt-get install python3-certbot python3-certbot-apache
- Suba os containeres do rocketchat, mongodb e mongodb-init-replica Na pasta onde está o YML do docker-compose, execute o comando abaixo:
docker-compose up -d
3100->3000
Para saber mais sobre portas no docker, olhe este artigo: Docker e Cerveja !- Após ter os containeres rodando (
docker ps -a
), configure o Apache 2 como Reverse Proxy para os domínios (Iremos assumir aqui que você já configurou o subdomínio apontando para o servidor em seu DNS)
Configuração Apache HTTP (porta 80).
/etc/apache2/sites-available/
com o nome do seu domínio.vim /etc/apache2/sites-available/chat.keep-linux.tk.conf
≺VirtualHost *:80≻
ServerName chat.keep-linux.tk
ServerAdmin keeplinuxbr@gmail.com
ErrorLog ${APACHE_LOG_DIR}/chat_error.log
CustomLog ${APACHE_LOG_DIR}/chat_access.log combined
Redirect permanent / https://chat.keep-linux.tk/
≺/VirtualHost≻
/etc/apache2/sites-enabled/
cd /etc/apache2/sites-enabled/ && sudo ln -s /etc/apache2/sites-available/chat.keep-linux.tk.conf chat.keep-linux.tk.conf
sudo touch /etc/letsencrypt/live/dummy.pem
Configuração Apache HTTPS (porta 443).
sudo vim /etc/apache2/sites-available/chat.keep-linux.tk-ssl.conf
≺VirtualHost *:443≻
# Definindo o nome que o Apache Reverse Proxy irá ouvir (listenning)
ServerName chat.keep-linux.tk
ServerAdmin keeplinuxbr@gmail.com
# Configure as opções para SSL
SSLEngine on
SSLProxyEngine On
# Defina onde estão os certificados SSL para seu domínio (na primeira execução do certbot, mantenha da forma abaixo)
SSLCertificateFile /etc/letsencrypt/live/dummy.pem
SSLCertificateKeyFile /etc/letsencrypt/live/dummy.pem
SSLProxyCACertificateFile /etc/letsencrypt/live/dummy.pem
# Ative o Proxy Reverso do Apache
ProxyPreserveHost On
ProxyRequests Off
# Permita requisições de qualquer origem dentro do proxy
Order deny,allow
Allow from all
Order allow,deny
Allow from all
# Configure o "roteamento" do proxy reverso caso for utilizada a websocket (Necessário apra o APP+ RocketChat)
ProxyPass /websocket ws://127.0.0.1:3100/websocket
ProxyPassMatch ^/sockjs/(.*)/websocket ws://127.0.0.1:3100/sockjs/$1/websocket
# Configure o Reverse Proxy para todos os paths para dentro do container RocketChat
ProxyPass / http://127.0.0.1:3100/
ProxyPassReverse / http://127.0.0.1:3100/
≺/VirtualHost≻
/etc/apache2/sites-enabled/
cd /etc/apache2/sites-enabled/ && sudo ln -s /etc/apache2/sites-available/chat.keep-linux.tk-ssl.conf chat.keep-linux.tk-ssl.conf
Ative os módulos de Proxy, proxy reverso e proxy de chamadas de websockets.
sudo a2enmod proxy_http
sudo a2enmod proxy
sudo a2enmod ssl
sudo a2enmod proxy_wstunnel
sudo a2enmod rewrite
sudo systemctl restart apache2
- Configurado o Apache 2 com os módulos corretos e as diretivas para Proxy Reverso, crie os certificados SSL para que seu HTTPS funcione corretamente com o CERTBOT.
sudo certbot certonly --apache
/etc/letsencrypt/live/chat.keep-linux.tk/
.(/etc/apache2/sites-available/chat.keep-linux.tk.conf)
e altere os seguintes campos com o path dos certificados gerados:SSLCertificateFile /etc/letsencrypt/live/chat.keep-linux.tk/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/chat.keep-linux.tk/privkey.pem
SSLProxyCACertificateFile /etc/letsencrypt/live/chat.keep-linux.tk/fullchain.pem
reload
no Apache, para que as configurações novas entrem em vigor sem que o serviço sofra intermitênciasudo systemctl reload apache2
0 comentários :
Postar um comentário