Instalação
Um comando. O instalador é idempotente: rodar de novo atualiza o plugin sem tocar nos stacks nem nos dados.
Requisitos
| Item | Exigência |
|---|---|
| Painel | cPanel/WHM instalado, acesso root |
| Sistema | CloudLinux, AlmaLinux, Rocky, CentOS ou RHEL, versão 8 ou 9 |
| Servidor web | ea-nginx obrigatório: é ele que publica
os redirecionamentos. Não precisa estar instalado: o instalador explica o que muda
(nginx assume 80/443, Apache vai para 81/444) e pergunta antes |
| Handler de PHP | PHP com uid por conta: cgi/suexec,
suPHP, fcgid ou lsapi. Com PHP como módulo do Apache (dso) o
instalador recusa instalar: nesse modo o PHP de todas as contas roda com o
usuário do servidor web e o dPanel não consegue isolar um cliente do outro.
Ajuste em WHM → MultiPHP Manager |
| Docker | não precisa estar instalado, o instalador cuida disso |
| Disco | ao menos 5 GB livres; imagens Docker crescem rápido |
| Memória | o teto padrão dos containers é 2,2 GB; ajuste conforme o servidor |
Instalar
Como root, na máquina do servidor:
git clone <repositorio> dpanel cd dpanel bash install.sh
Ao terminar, o plugin aparece em WHM → Plugins → dPanel Docker. Se você já estava com o WHM aberto, recarregue a página.
docker (se já existia) e o cpsrvd, que é o serviço do próprio
WHM/cPanel. O reinício do cpsrvd derruba sessões abertas do painel por alguns segundos;
sites, e-mail e banco não são afetados.
O que o instalador faz
Nesta ordem, parando no primeiro erro:
- Confere que é root, que há cPanel e que o sistema é da família RHEL 8/9.
- Cria
/var/cpanel/dpanel/e o usuário de sistemadpanel, usado para rodar o parser de YAML sem privilégio. - Copia o plugin e valida a sintaxe dos programas antes de expor no WHM.
- Instala
docker-cee o plugin Compose v2 a partir do repositório oficial do Docker (se ainda não houver). - Escreve
/etc/docker/daemon.json: redes fixas em 172.17/172.18, publicação padrão em127.0.0.1, rotação de log,live-restoree ocgroup-parentapontando para o teto global. - Cria o
dpanel.slicedo systemd, o limite global de memória e CPU dos containers, aplicado pelo kernel. - Aplica as regras de isolamento e instala os três gatilhos que as mantêm vivas.
- Configura rotação dos logs e registra o plugin no WHM via AppConfig.
Um daemon.json já existente é preservado como backup antes de ser substituído;
revise se você tinha ajustes próprios.
Opções
| Comando | Efeito |
|---|---|
bash install.sh | instalação ou atualização completa |
bash install.sh --files-only |
só atualiza o código do plugin; não toca em Docker, firewall ou systemd |
bash install.sh --no-docker |
instala o plugin sem mexer no Docker (útil se você já gerencia o daemon) |
bash install.sh --yes |
não pergunta nada; autoriza instalar o ea-nginx e a troca de portas.
Obrigatório quando a execução não é interativa |
bash install.sh --disable-nginx-cache |
desliga o cache do ea-nginx no sistema e em todas as contas.
O tráfego dos containers já ignora o cache de qualquer forma |
bash install.sh --verify |
não altera nada; só relata o estado da instalação, incluindo nginx -t |
Verificar
bash install.sh --verify
Resposta esperada:
==> Verificacao
ok AppConfig registrado
ok plugin instalado em /usr/local/cpanel/whostmgr/docroot/cgi/dpanel
ok docker Docker version 29.x
ok docker ativo
ok isolamento ativo
Pela linha de comando também dá para consultar a API, útil quando algo não abre no navegador:
cd /usr/local/cpanel/whostmgr/docroot/cgi/dpanel ./api.cgi --action=health
Atualizar
Baixe a nova versão e rode o instalador de novo. Stacks em execução, redirecionamentos e logs são preservados.
cd dpanel && git pull bash install.sh
Para trocar só o código do plugin, sem reiniciar o Docker:
bash install.sh --files-only
Desinstalar
bash uninstall.sh
Remove o plugin do WHM, as regras de firewall e os serviços auxiliares. Preserva os
containers em execução, os stacks publicados, as regras do nginx e o
/etc/docker/daemon.json: os sites publicados continuam no ar.
Para remover tudo:
bash uninstall.sh --purge
Aí sim os stacks são derrubados e, na sequência, as regras do nginx são removidas e o
serviço recarregado, nessa ordem, para nenhum domínio ficar apontando para container morto e
devolvendo 502. Includes antigos do Apache (versões 0.1.x) também são limpos, e
/var/cpanel/dpanel é apagado. O Docker Engine nunca é desinstalado: isso fica por
sua conta.
/home/{conta}/docker/ — inclusive os volumes nomeados, que o
dPanel materializa como pastas ali — e o --purge não toca no /home.
Mas os stacks são derrubados e a configuração some. Confira o que está no ar antes.
Nota sobre o CSF
O CSF reconstrói todas as cadeias do iptables quando reinicia, e isso apaga também as
cadeias que o Docker cria para publicar portas e dar saída aos containers. Sem tratamento,
um csf -r deixaria os containers sem rede.
O instalador resolve isso de três formas, para não depender de uma só:
DOCKER = "1"nocsf.conf, para o CSF preservar o que sabe do Docker.- Um
csfpost.shque roda depois de cada reconstrução: reinicia o Docker (comlive-restore, os containers não caem) e repõe as regras do dPanel. - Um timer do systemd que confere a cada 60 segundos, cobrindo casos que o hook não pega,
como um
csf -f.
Além disso, o painel se recusa a subir um stack se as regras de isolamento não estiverem ativas naquele momento.