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:
| Tipo | Nome | Valor |
|---|---|---|
| A | painel | IP 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.ymle 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 volumeportainer_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.