0

Como gerenciar o Docker pelo navegador com Portainer numa VPS (com HTTPS)

Docker sem decorar comando

O Docker é ótimo, mas gerenciar tudo pelo terminal cansa: ver qual container caiu, ler log, reiniciar serviço, limpar imagem velha. O Portainer é um painel web gratuito que mostra tudo isso numa tela só.

Com ele você:

  • vê todos os containers e o estado de cada um;
  • lê logs e abre um terminal do container pelo navegador;
  • sobe aplicações inteiras colando um docker-compose.yml (as stacks);
  • gerencia imagens, volumes e redes, e limpa o que sobrou.

O que você vai precisar

  • Uma VPS Linux (Ubuntu ou Debian) com 1 GB de RAM ou mais.
  • Acesso root por SSH.
  • Um subdomínio, por exemplo painel.suaempresa.com.br.

1. Aponte o subdomínio para a VPS

No DNS do seu domínio, crie um registro A:

TipoNomeValor
ApainelIP da sua VPS

2. Instale o Docker

ssh root@IP_DA_VPS
curl -fsSL https://get.docker.com | sh

3. Crie o projeto

mkdir -p /opt/portainer && cd /opt/portainer

Crie o docker-compose.yml:

services:
  portainer:
    image: portainer/portainer-ce:lts
    restart: unless-stopped
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - portainer_data:/data

  caddy:
    image: caddy:2
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - caddy_data:/data

volumes:
  portainer_data:
  caddy_data:

E o Caddyfile:

painel.suaempresa.com.br {
    reverse_proxy https://portainer:9443 {
        transport http {
            tls_insecure_skip_verify
        }
    }
}

O Portainer usa um certificado próprio na porta 9443. O Caddy conversa com ele por dentro e entrega para o navegador um HTTPS válido, emitido e renovado sozinho.

4. Suba tudo e crie o admin rápido

docker compose up -d

Abra https://painel.suaempresa.com.br e crie o usuário administrador com uma senha forte.

⚠️ Faça isso nos primeiros 5 minutos. Por segurança, o Portainer trava a criação do admin depois desse tempo. Se travar, rode docker compose restart portainer e abra a página de novo.

Na tela seguinte, escolha Get Started para gerenciar o Docker da própria VPS.

5. O que fazer no painel

  • Containers: veja quem está rodando, parado ou reiniciando. Clique num container para ver Logs, Stats (CPU e memória) e Console.
  • Stacks → Add stack: cole um docker-compose.yml e clique em Deploy the stack. É o jeito mais fácil de subir n8n, Uptime Kuma, bancos e outros serviços.
  • Images → Unused: apague imagens que ninguém usa e libere disco.

Segurança

O Portainer tem acesso total ao Docker da máquina. Quem entra nele controla o servidor. Por isso:

  • use senha forte e não compartilhe o usuário admin. Crie usuários separados para a equipe;
  • mantenha o painel só em HTTPS, como neste tutorial;
  • se der, libere o acesso só para o IP do escritório no firewall, ou coloque o painel atrás de uma VPN.

Manutenção

  • Atualizar: docker compose pull && docker compose up -d. As configurações ficam no volume portainer_data.
  • Firewall: só as portas 22, 80 e 443 precisam ficar abertas. A 9443 fica fechada, porque o acesso passa pelo Caddy.

Problemas comuns

Aparece "Your Portainer instance timed out for security purposes". Passou dos 5 minutos sem criar o admin. Rode docker compose restart portainer e crie o usuário logo em seguida.

O navegador mostra erro de certificado. O DNS ainda não apontou para a VPS, ou a porta 80 está fechada. O Caddy precisa dela para validar o domínio.

Erro 502 ao abrir o painel. O Portainer ainda está subindo. Espere alguns segundos. Se continuar, veja os logs com docker compose logs portainer.


Escrevi esse passo a passo para o blog da NullNinja, uma hospedagem brasileira (VPS com IP fixo e datacenter em São Paulo). Se travar em alguma etapa, comenta aqui que eu ajudo.

Carregando publicação patrocinada...