3 minutes
Configurando HTTPS em Contêineres Docker com steveltn/https-portal
Introdução
Este tutorial apresenta o processo de configuração do HTTPS para contêineres Docker utilizando a imagem steveltn/https-portal. Essa imagem permite a geração automática de certificados SSL usando Let’s Encrypt e facilita a configuração de serviços seguros.
O guia cobre todo o processo, desde a instalação do Docker no Debian 12 até a configuração do docker-compose.yml para ativar o SSL em aplicações containerizadas.
Requisitos
- Servidor rodando Debian 12
- Usuário com permissões de sudo
- Domínio válido apontando para o servidor
Passo 1: Instalando o Docker e o Docker Compose
Atualização dos pacotes do sistema:
sudo apt update && sudo apt upgrade -y
Instalação dos pacotes necessários:
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
Adição do repositório do Docker:
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo tee /usr/share/keyrings/docker-archive-keyring.gpg > /dev/null
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Instalação do Docker e do Docker Compose:
sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
Verificação da instalação:
docker --version
docker compose version
Ativação e inicialização do serviço Docker:
sudo systemctl enable --now docker
Para evitar o uso do sudo em todos os comandos, o usuário pode ser adicionado ao grupo Docker:
sudo usermod -aG docker $USER
Para que a alteração tenha efeito, é necessário sair e entrar novamente na sessão ou executar:
newgrp docker
Passo 2: Criando a rede Docker
Para que os contêineres possam se comunicar, é necessário criar uma rede Docker personalizada. Isso garante um melhor isolamento e facilita a configuração dos serviços.
Criação da rede:
docker network create \
--driver=bridge \
--subnet=192.168.0.0/24 \
docker_net
Verificação das redes existentes:
docker network ls
A saída deve exibir a rede recém-criada:
NETWORK ID NAME DRIVER SCOPE
62b769362acf bridge bridge local
5b1af52557f3 docker_net bridge local
Passo 3: Criando o ambiente Docker
Criação de um diretório para os arquivos do projeto:
mkdir -p ~/docker-projects && cd ~/docker-projects
Criação do arquivo docker-compose.yml:
version: '3'
services:
https-portal:
image: steveltn/https-portal:1
container_name: https-portal
ports:
- "80:80"
- "443:443"
links:
- wordpress
- zabbix-web
- grafana
- nginx-blog
restart: always
environment:
DOMAINS: 'hgbsoft.com.br -> http://wordpress:80, www.hgbsoft.com.br -> http://wordpress:80'
FORCE_SSL: "true"
REDIRECT: 'www.hgbsoft.com.br -> hgbsoft.com.br'
STAGE: production # Altere para 'staging' em ambiente de testes
volumes:
- ./ssl_certs:/var/lib/https-portal
networks:
docker_net:
ipv4_address: 192.168.0.10 # Endereço IP fixo para https-portal
wordpress:
image: wordpress:latest
container_name: wordpress
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_NAME: wordpress_db
WORDPRESS_DB_USER: wordpress_user
WORDPRESS_DB_PASSWORD: aksMercGX5YnM!v
volumes:
- wordpress_data:/var/www/html
networks:
docker_net:
ipv4_address: 192.168.0.2 # Endereço IP fixo para wordpress
networks:
docker_net:
external: true
volumes:
wordpress_data:
driver: local
Passo 4: Iniciando os contêineres
Para iniciar os contêineres, execute:
docker compose up -d
Verificação do status dos contêineres:
docker ps
O site poderá ser acessado no navegador através do domínio configurado: https://hgbsoft.com.br
Considerações finais
O https-portal facilita a adição de SSL em contêineres Docker sem necessidade de configuração manual do Let’s Encrypt ou do Nginx. Esse setup pode ser expandido para hospedar outras aplicações, como WordPress, APIs e painéis de monitoramento.