Aprenda a instalar Portainer CE no Docker com segurança, acessar por túnel SSH ou VPN, implantar stacks e atualizar o painel sem perder dados.
Para que serve
Neste artigo você vai instalar Portainer no seu servidor. O Portainer CE (Community Edition, gratuito) é uma interface web para administrar o Docker: ver containers, logs e consumo, abrir um console, gerenciar volumes, redes e imagens e implantar projetos Compose (que ele chama de stacks). É útil para equipes que não vivem no terminal e para ter uma visão rápida de vários hosts Docker em um só lugar.
O Portainer não substitui o conhecimento de Docker: por trás de cada botão estão os mesmos comandos. E, como ele controla o socket do Docker, quem acessa o Portainer tem controle total do servidor. Proteja-o bem.
Pré-requisitos
- Docker instalado pelo repositório oficial (veja o artigo «Como instalar Docker no Ubuntu e no Debian (com Docker Compose, pelo repositório oficial)»).
- Recomendado: a correção de firewall do artigo «Docker ignora o UFW: por que acontece e como corrigir o firewall», porque a porta do Portainer seria publicada para a internet.
- Um navegador com acesso ao servidor (direto, por VPN ou por túnel SSH).
Passo a passo para instalar Portainer
- Crie o volume de dados:
docker volume create portainer_data - Suba o Portainer. A forma mais segura é publicar a interface apenas no localhost e acessá-la por VPN ou túnel SSH:
A porta 9443 é a interface HTTPS (com certificado autoassinado). A porta 8000 só é necessária para o recurso Edge Agent; se não usa, não publique. A tagdocker run -d --name portainer --restart=always \ -p 127.0.0.1:9443:9443 \ -v /var/run/docker.sock:/var/run/docker.sock \ -v portainer_data:/data \ portainer/portainer-ce:ltsltssegue a versão de suporte longo, mais indicada para produção. - Acesse a interface. Se publicou no localhost, abra um túnel a partir do seu computador:
e acessessh -L 9443:127.0.0.1:9443 usuario@IP_DO_SERVIDORhttps://localhost:9443. Se está numa VPN (WireGuard, por exemplo), você pode publicar no IP da VPN em vez do 127.0.0.1. - Informe o token de configuração. Versões recentes do Portainer pedem um setup token no primeiro acesso, para que ninguém "tome posse" de uma instalação nova antes de você. Pegue-o nos logs:
docker logs portainer 2>&1 | grep setup_token - Crie o usuário administrador com senha forte (mínimo de 12 caracteres). Se você demorar demais para concluir essa etapa, o Portainer se bloqueia por segurança; basta rodar
docker restart portainere recomeçar. - Na tela inicial, clique em Get Started para usar o ambiente local (o próprio Docker do servidor).
Implantando um projeto (stack)
- Vá em Stacks → Add stack, dê um nome e cole o conteúdo do seu
compose.yamlno editor (ou aponte um repositório Git). - Defina variáveis de ambiente na seção Environment variables em vez de escrever senhas no YAML.
- Clique em Deploy the stack. Para atualizar depois, edite a stack, marque Re-pull image and redeploy e confirme.
Atenção: stacks criadas pelo Portainer ficam guardadas no volume dele. Se você também gerencia projetos pelo terminal com docker compose, o Portainer mostra esses projetos como "limitados" (pode parar e iniciar, mas não editar o YAML). Escolha uma das formas para cada projeto.
Gerenciando outros servidores
Para controlar o Docker de outra VM ou servidor pelo mesmo painel, instale o Portainer Agent no destino e adicione-o em Environments → Add environment → Docker Standalone → Agent. O agent escuta na porta 9001; libere essa porta somente para o IP do servidor onde roda o Portainer, nunca para a internet.
Atualizando o Portainer
O container não se atualiza sozinho. Faça backup antes (em Settings → Backup Portainer) e então:
docker stop portainer
docker rm portainer
docker pull portainer/portainer-ce:lts
docker run -d --name portainer --restart=always \
-p 127.0.0.1:9443:9443 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:lts
Os dados ficam no volume portainer_data e são preservados.
Como saber se funcionou
docker ps --filter name=portainermostra o container comoUpe a porta127.0.0.1:9443.- No painel, o ambiente local aparece como Up com a contagem correta de containers.
- De fora, sem VPN/túnel,
https://IP_DO_SERVIDOR:9443não deve abrir.
Problemas comuns
- "Your Portainer instance timed out for security purposes": você não criou o admin a tempo. Rode
docker restart portainer. - Esqueci a senha do admin: o projeto oferece uma ferramenta de redefinição (
portainer/helper-reset-password); pare o Portainer antes de usá-la e siga a documentação oficial. - Aviso de certificado no navegador: esperado com o certificado autoassinado. Para certificado válido, coloque o Portainer atrás de um proxy reverso com Let's Encrypt ou envie seu certificado em Settings → SSL certificate.
- Painel aberto para a internet: se você publicou com
-p 9443:9443, o UFW não protege. Recrie o container com127.0.0.1:ou aplique as regras do artigo de firewall.
Perguntas frequentes
O Portainer é gratuito?
A edição Community (CE) é gratuita e open source e atende bem a um ou poucos servidores. A Business Edition é paga e traz recursos extras, como controle de acesso mais detalhado.
Qual a porta padrão do Portainer?
A interface HTTPS usa a 9443. A 8000 só serve para o Edge Agent e a 9001 para o Portainer Agent em outros hosts. Nenhuma delas deve ficar aberta para a internet.
É seguro deixar o Portainer exposto na internet?
Não é recomendado. Quem entra no Portainer controla o socket do Docker e, na prática, o servidor inteiro. Publique só no localhost e acesse por túnel SSH ou VPN. Veja também o artigo «Como liberar o acesso ao Proxmox (porta 8006), SSH e RDP só pela VPN».
Como colocar um certificado válido no Portainer?
Coloque-o atrás de um proxy reverso com Let's Encrypt ou envie o certificado em Settings → SSL certificate. Veja também o artigo «Como configurar proxy reverso com Nginx ou Caddy: vários sites e VMs em um único IP».
Leitura complementar
Precisa de ajuda? Abra um ticket ou fale com o suporte pelo WhatsApp.
