Este post também está disponível em:
O Portainer é uma solução de gerenciamento de contêineres de código aberto para Docker, Kubernetes e Nomad que simplifica iniciar, criar e executar contêineres de maneira fácil. Portainer fornece um painel de controle baseado na Web para gerenciar contêineres, imagens, redes e volumes. Inclui ainda uma seleção de templates(apps)
Neste tutorial, vamos instalar e configurar o Portainer em um servidor Linux com Ubuntu 20.04 LTS e usá-la para criar e gerenciar contêineres Docker para executar diferentes aplicativos. Vamos ainda aprender a colocar o portainer atrás do gerenciador de proxy reverso Nginx proxy.
1- Configure o Firewall
Verifique se o Firewall está ativo e habilite se necessário.
ufw status ufw enable
Abra as portas 80, 443, 9443, 81, 22
ufw allow 80 ufw allow 443 ufw allow 9443 ufw allow 81 ufw allow 22
reload no firewall
ufw reload
2- Instalação do Docker
apt install ca-certificates curl gnupg lsb-release curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null apt update apt install docker-ce docker-ce-cli containerd.io -y
Habilite o serviço do Docker
systemctl start docker --now
3 – Instale o Docker Compose
curl -L https://github.com/docker/compose/releases/download/v$(curl -Ls https://www.servercow.de/docker-compose/latest.php)/docker-compose-$(uname -s)-$(uname -m) > /usr/local/bin/docker-compose
Aplique permissão executável ao binário
chmod +x /usr/local/bin/docker-compose
3 – Instalação do Portainer
Crie um diretório para o portainer e acesse a seguir
mkdir ~/portainer cd ~/portainer
Crie o arquivo abaixo para o docker-compose
nano docker-compose.yaml
Cole o código abaixo no arquivo
version: "3.3" services: portainer: image: portainer/portainer-ce:latest container_name: portainer restart: always privileged: true volumes: - ./data:/data:Z - /var/run/docker.sock:/var/run/docker.sock:Z ports: - 9443:9443
Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.
Inicie o portainer
docker-compose up -d
4 – Acesse e configure Portainer
Abra a URL https://<ipdoseuservidor>:9443
Você verá a seguinte tela abaixo. Crie o usuário admin , senha e clique “Create User”
Você será direcionado a tela abaixo. Clique no menu Home
Em Home você verá “local” no qual o Portainer está sendo executado. Clique em local para começar.
A maioria das seções são autoexplicativas. A Stacks ajuda na criação de contêineres usando arquivos de composição do Docker. Você pode implantar contêineres diretamente usando a Contêineres na barra lateral. Você pode configurar o ambiente do docker atual por meio da Hosts . App Templates vem com arquivos de composição do Docker pré-instalados para instalar os aplicativos mais comuns. Você também pode criar modelos personalizados ou utilizar uma lista de Templates externos como por exemplo Templates App .
A seção Configurações(Settings) permite definir várias configurações, como adicionar registros personalizados do Docker, adicionar vários hosts para o Docker swarm, configurar o acesso do usuário, fazer backup de dados , personalizar o Portainer, Adicionar nova lista de Templates.
5 – Portainer atrás de um proxy reverso utilizando Nginx Proxy Manager
Precisaremos de um subdomínio apontando para o IP do servidor. Ex portainer.dominio.xx .O Nginx Proxy Manager é um aplicativo Docker que fornece uma interface do usuário de gerenciamento da Web para configurar o Nginx como um host de proxy reverso. Ele também pode ser usado como um redirecionamento ou um host de streaming.
Instalar NPM
A primeira etapa é criar uma rede para o Nginx Proxy Manager (NPM). Abra a Networks e clique no botão Add Network para criar uma nova rede. Dê um nome, mantenha os outros campos sem alteração.
Clique em Create the Network
Clique em Stacks e crie uma nova Stack utilizando Add Stack botão com nome nginx-proxy-manager
. Em Web Editor cole o código abaixo:
version: "3.3" services: npm-app: image: 'jc21/nginx-proxy-manager:latest' container_name: npm-app restart: unless-stopped ports: - '80:80' # Public HTTP Port - '443:443' # Public HTTPS Port - '81:81' # Admin Web Port # Add any other Stream port you want to expose # - '21:21' # FTP environment: DB_MYSQL_HOST: "npm-db" DB_MYSQL_PORT: 3306 DB_MYSQL_USER: "npm" DB_MYSQL_PASSWORD: ${DB_MYSQL_PASSWORD} DB_MYSQL_NAME: "npm" # Uncomment the line below if IPv6 is not enabled on your host # DISABLE_IPV6: 'true' volumes: - ./npm-data:/data:Z - ./letsencrypt:/etc/letsencrypt:Z depends_on: - npm-db networks: - npm-network - npm-internal npm-db: image: 'mariadb:latest' container_name: npm-db restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_DATABASE: 'npm' MYSQL_USER: 'npm' MYSQL_PASSWORD: ${DB_MYSQL_PASSWORD} volumes: - ./npm-data/mysql:/var/lib/mysql:Z networks: - npm-internal networks: npm-internal: npm-network: external: true
Vamos adicionar 2 variáveis neste Stack, uma para usuário mysql e outra para root mysql. Role a página e clique no botão “Add an environment variable” 2 vezes.
O primeiro campo preencha com DB_MYSQL_PASSWORD e a frente em value , defina uma senha segura.
O segundo campo preencha com MYSQL_ROOT_PASSWORD e a frente em value, defina uma senha segura.
Clique em Deploy the stack para criar e iniciar NPM Container.
Acesse a URL http://<ipdoservidor>:81
Usuário: admin@example.com
Senha: changeme
Após o login altere seu usuário e senha para sua segurança.
No Nginx Proxy Manager
Visite Host >> Proxy Hosts e clique no botão Add Proxy Host .
Neste ponto iremos utilizar o subdomínio apontando para o ip do servidor.
Digite o nome de domínio como portainer.seudominio.com.
Escolha o esquema como https.
Digite o nome do contêiner como o host de encaminhamento e 9443 como a porta de encaminhamento . Habilite as opções Block Common Exploits e Websockets Support.
Alterne para a aba SSL
Em SSL Certificate altere para “Request a new SSL Certificate”.
Habilite Force SSL e HTTP/2 Support. Em e-mail informe seu e-mail .
Para finalizar habilite I Agree to the Let´s Encrypt Terms of Service.
Clique em Save
Configuramos o host Proxy, mas o contêiner ainda não está conectado à rede NPM.
Volte para o painel do Portainer, visite a Containers e selecione o Portainer .
Localize a opção Connected networks e a frente de Join a network selecione npm-network. Clique no botão Join Network
Neste ponto você conseguirá acessar o portainer com https://portainer.seudominio.com
Portainer possui muitos outros recursos que facilitam o trabalho com Docker, Kubernetes , Nomad com bastante documentação . Espero que tenha gostado desta iniciação.