Como instalar o Portainer.io no Linux com Docker Swarm

Passo 1

Servidor VPS Linux

Antes de começarmos a configuração do Portainer.io no Docker Swarm, é essencial garantir um desempenho ótimo e tempo de resposta rápido.

Recomendamos contratar um servidor VPS Linux (Ubuntu ou Debian):

↑ Voltar ao topo

Config

Configuração Cloudflare

1. Criar conta gratuita no Cloudflare

Acesse cloudflare.com, clique em Sign Up e preencha o formulário com seu e-mail e senha.

2. Cadastrar domínio no Registro.br

Acesse registro.br, faça login e selecione o domínio que deseja configurar. Abra a área de configurações DNS.

3. Apontar nameservers do Cloudflare para o Registro.br

  • No Cloudflare, em Adicionar um site, insira seu domínio e clique em Adicionar site.
  • Copie os dois nameservers fornecidos pelo Cloudflare.
  • No Registro.br, substitua os nameservers padrão pelos do Cloudflare.

4. Criar registro tipo A para "manager"

  • No Cloudflare, vá em DNS → Adicionar registro → Tipo A.
  • Nome: manager | Conteúdo: IP da sua VPS
  • Proxy: desativado (sem nuvem laranja) | TTL: Auto

5. Criar registro tipo CNAME para "portainer"

  • No Cloudflare, Adicionar registro → Tipo CNAME.
  • Nome: portainer | Conteúdo: manager.seudominio.com.br
  • Proxy: desativado | TTL: Auto
Aguarde a propagação DNS após as alterações — pode levar algumas horas para entrar em vigor globalmente.
↑ Voltar ao topo

Passo 2

Acesso SSH com Bitvise

Para acessar o terminal de comandos, utilizaremos o Bitvise SSH Client. Baixe em: Bitvise Client

Após instalar, configure o acesso com as informações abaixo:

  • Host: seu IP do servidor
  • Porta: 22
  • Nome de usuário: root
  • Método inicial: senha
  • Senha: sua senha da VPS
  • ☑ Armazenar senha criptografada no perfil
  • ☑ Habilitar fallback de senha por teclado
  • Elevação: Padrão
↑ Voltar ao topo

Passo 3

Atualizar o Sistema

Antes de qualquer instalação, atualize os pacotes da sua VPS:

sudo apt update
sudo apt upgrade -y
↑ Voltar ao topo

Passo 4

Instalar Docker e Iniciar o Swarm

Instalação automática do Docker

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

Iniciar o Docker Swarm

⚠️ Substitua IP_DO_SERVIDOR pelo endereço IP real da sua VPS.
docker swarm init --advertise-addr=IP_DO_SERVIDOR
↑ Voltar ao topo

Passo 5

Criar Rede para o Portainer

Crie a rede overlay que o Portainer utilizará internamente:

docker network create --driver=overlay agent_network
↑ Voltar ao topo

Passo 6

Criar Rede para o Traefik

Mesmo que o Traefik seja implantado depois dentro do Portainer, criamos a rede agora para simplificar a configuração:

docker network create --driver=overlay traefik_public
↑ Voltar ao topo

Passo 7

Criar Diretório do Portainer

Crie a pasta e o arquivo de configuração:

ls
mkdir portainer
ls
cd portainer/
nano portainer.yaml
↑ Voltar ao topo

Passo 8

Stack do Portainer

Cole o conteúdo abaixo no arquivo portainer.yaml:

version: "3.8"

services:
  agent:
    image: portainer/agent:2.33.0
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /var/lib/docker/volumes:/var/lib/docker/volumes
    networks:
      - agent_network
    deploy:
      mode: global
      placement:
        constraints: [ node.platform.os == linux ]

  portainer:
    image: portainer/portainer-ce:2.33.0
    command: -H tcp://tasks.agent:9001 --tlsskipverify
    ports:
      - 9000:9000
    volumes:
      - portainer_data:/data
    networks:
      - agent_network
      - traefik_public
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints: [ node.role == manager ]
      #labels:
        #- "traefik.enable=true"
        #- "traefik.docker.network=traefik_public"
        #- "traefik.http.routers.portainer.rule=Host(`portainer.SEU_DOMINIO.com`)"
        #- "traefik.http.routers.portainer.entrypoints=websecure"
        #- "traefik.http.routers.portainer.priority=1"
        #- "traefik.http.routers.portainer.tls.certresolver=le"
        #- "traefik.http.routers.portainer.service=portainer"
        #- "traefik.http.services.portainer.loadbalancer.server.port=9000"

networks:
  traefik_public:
    external: true
    attachable: true
  agent_network:
    external: true

volumes:
  portainer_data:
    external: true
💾 Para salvar e fechar o arquivo: pressione Ctrl + X, depois Y e Enter.
↑ Voltar ao topo

Passo 9

Deploy do Portainer

Implante a stack com o comando:

docker stack deploy -c portainer.yaml portainer
↑ Voltar ao topo

Passo 10

Acessar o Portainer

No navegador, acesse o endereço IP da sua VPS seguido de :9000:

http://SEU_IP:9000

Exemplo: http://7.161.218.7:9000

Na tela inicial, crie um nome de usuário e uma senha forte para configurar a conta de administrador.

↑ Voltar ao topo

Passo 11

Stack do Traefik

No Portainer, clique em Stacks no menu lateral e depois em + Add Stack.

⚠️ Na linha 18, substitua [email protected] pelo seu e-mail real antes de fazer o deploy.
version: '3.8'

services:
  traefik:
    image: traefik:v2.11
    command:
      - --providers.docker=true
      - --entrypoints.web.address=:80
      - --entrypoints.websecure.address=:443
      - --providers.docker.exposedbydefault=false
      - --providers.docker.swarmMode=true
      - --providers.docker.network=traefik_public
      - --providers.docker.endpoint=unix:///var/run/docker.sock
      - --certificatesresolvers.le.acme.httpchallenge.entrypoint=web
      - [email protected]
      - --certificatesresolvers.le.acme.storage=/letsencrypt/acme.json
      - --certificatesresolvers.le.acme.tlschallenge=true
      - --entrypoints.web.http.redirections.entryPoint.to=websecure
      - --entrypoints.web.http.redirections.entryPoint.scheme=https
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - traefik_certificates:/letsencrypt
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints:
          - node.role == manager
    networks:
      - traefik_public

volumes:
  traefik_certificates:
    external: true
    name: certificados

networks:
  traefik_public:
    external: true

Desabilite o Enable access control e clique em Deploy the Stack.

↑ Voltar ao topo

Passo 12

Configurar DNS nas Labels

Volte ao terminal e edite o arquivo da stack do Portainer:

nano portainer.yaml

Na seção labels, siga estes passos:

  • Remova o # das linhas de labels para descomentar.
  • Exclua a linha com traefik.docker.network=traefik_public (não é mais necessária).
  • Substitua painel.SEU_DOMINIO.com pelo seu domínio real.
  • Comente a linha da porta 9000 adicionando # no início.
💾 Para salvar: Ctrl + X, depois Y e Enter.
↑ Voltar ao topo

Passo 13

Deploy Final do Portainer

Reimplante a stack com o SSL e o domínio configurados:

docker stack deploy -c portainer.yaml portainer
↑ Voltar ao topo
🎉

Instalação Concluída!

Acesse seu Portainer com SSL ativo pelo domínio configurado.
Se ficou com alguma dúvida, deixe nos comentários!

COMPARTILHAR