Blogue ·
O módulo WHMCS para CyberPanel, e a alternativa
O que um módulo WHMCS para CyberPanel pode e não pode fazer, porque a sua API define o teto. Limites medidos, e uma camada de aprovisionamento por cima.
Por Provibr
Quem faz correr o WHMCS e quer vender alojamento OpenLiteSpeed vai à procura de um módulo de aprovisionamento CyberPanel. Medidos a 21 de agosto de 2026, os resultados dessa pesquisa são um repositório GitHub mantido por uma só pessoa, e um tópico de fórum comunitário.
Isto não é uma crítica ao trabalho de ninguém. É a descrição de uma lacuna: um software que se situa entre as suas faturas e os sites dos seus clientes, e que a maioria dos alojadores encontra sob a forma de projeto paralelo em vez de produto.
Esta página trata do que um módulo destes pode fazer, do que estruturalmente não pode, e do aspeto de uma forma diferente de solução. A primeira parte é a que mais pesa, porque o teto não é o módulo: é a API do CyberPanel.
O teto: o que a API do CyberPanel autoriza
Medido contra o CyberPanel 3.0, não retirado da documentação. Qualquer módulo (o do GitHub, um escrito por conta própria, ou o descrito mais abaixo) está limitado por tudo o que se segue.
Criar um site responde antes de conhecer o resultado
createWebsite devolve o controlo em cerca de três segundos com createWebSiteStatus: 1. Isso não é um veredicto; significa que o trabalho foi iniciado. O endpoint lança um comando em segundo plano e devolve o controlo de imediato. O progresso real vive num ficheiro de estado que tem de ser sondado à parte.
Medido com dados deliberadamente errados:
| Caso | Resposta HTTP | O que realmente aconteceu |
|---|---|---|
| Domínio já existente | createWebSiteStatus: 1 (êxito) | This website already exists. [404] |
| Pacote desconhecido | createWebSiteStatus: 1 (êxito) | Package matching query does not exist. [404] |
| Domínio malformado | createWebSiteStatus: 0 | recusado de imediato |
Só a forma do domínio e do endereço é validada à partida. Um módulo que confia na primeira resposta marca uma encomenda WHMCS como ativa para um site que nunca foi criado, e o cliente recebe credenciais de boas-vindas para algo que não existe.
Sondar esse ficheiro de estado comporta mais duas ciladas. Ler um estado concluído apaga-o, pelo que uma sondagem a mais transforma uma criação terminada num «ainda a trabalhar» permanente. E a chamada de estado situa-se na parte da API do CyberPanel que recusa todo o administrador que não se chame literalmente admin.
A criação completa demora cerca de cinquenta segundos, dos quais cerca de vinte e oito são uma tentativa de SSL que o CyberPanel faz incondicionalmente. A API sobrepõe-se a esse indicador seja o que for que se envie. Qualquer módulo precisa de um tempo-limite que o acomode.
Mudar de pacote muda um campo em base de dados
changePackageAPI devolve o controlo em cerca de 270 milissegundos e o painel mostra o novo nome. Medido depois a partir do interior do servidor, com um pacote com limites diferentes: a quota de disco estava inalterada (soft 0, hard 0) e a configuração vhost ainda tinha os limites de memória e de processos do pacote antigo.
Nada foi aplicado. Assim, uma encomenda de upgrade WHMCS pode concluir-se, ser faturada e mudar o nome no painel, ao passo que os limites reais do cliente são exatamente os de antes. Nenhum módulo pode corrigir isto: toda a implementação deste endpoint é uma atualização de campo.
A suspensão não bloqueia a conta
O CyberPanel suspende um site reescrevendo o seu vhost para uma página de suspensão e reiniciando o servidor web. O utilizador unix não é bloqueado; o FTP, o correio e as bases de dados continuam a funcionar. Se suspende por falta de pagamento, o seu cliente continua a ter o correio e a base de dados. Isso pode ser exatamente o que quer, mas deveria ser uma decisão e não uma surpresa.
Há também uma aresta mais afiada: a implementação é if state == "Suspend": … else: <reativar>, sem validação. Medido: enviar "suspend" em minúsculas reativou um site suspenso e anunciou êxito. Qualquer módulo deveria manter esses dois valores como constantes e nunca compô-los a partir de uma variável.
Não há dados de utilização
A largura de banda é calculada pelo CyberPanel e depois descartada antes de chegar a qualquer listagem. A utilização de disco provém de uma cache no registo do site, que está vazia num site novo, pelo que o valor recai para zero. E um zero vindo de uma cache vazia não se distingue de um site que não consome nada.
O WHMCS dispõe de um hook de recolha de utilização que espera valores de disco e de largura de banda. No CyberPanel não há nada de honesto para lá colocar: um módulo que o preenche mesmo assim está a reportar um valor por predefinição, não uma medição.
O acesso à API está desativado, e a ordem das verificações esconde porquê
Num CyberPanel novo, a API está desativada, incluindo para o administrador principal, e o indicador é verificado antes da palavra-passe, pelo que, com ele desligado, uma palavra-passe correta e uma errada devolvem o mesmo API Access Disabled. A falha de primeira execução de todos os módulos para este painel parece um problema de credenciais e não o é.
O que isto significa para um módulo
Nada do que precede é reparável dentro de um módulo WHMCS, porque nada disto é um problema de módulo. O que difere entre módulos é a honestidade com que o tratam:
- Sonda o estado de criação, ou confia na primeira resposta?
- Lê o estado uma vez e regista o resultado, ou sonda até apagar esse resultado por acidente?
- Avisa que uma mudança de pacote não aplicou nada?
- Deixa o hook de utilização vazio, ou enche-o de zeros que parecem dados?
- Diz «o acesso à API está desativado» em vez de «credenciais inválidas»?
São estas as perguntas a fazer a qualquer módulo que se esteja a ponderar. Respondem-se lendo o código, e pesam mais do que a lista de funcionalidades. Há mais uma, que diz respeito a si e não ao código: quem o mantém daqui a dezoito meses? Um módulo de aprovisionamento está no caminho crítico de cada encomenda que aceita.
A alternativa: uma camada de aprovisionamento, não um módulo de painel
O Provibr coloca-se entre o seu sistema de faturação e a sua infraestrutura. Não é um módulo WHMCS para CyberPanel; é uma plataforma de aprovisionamento que fala com o CyberPanel, e com a qual o WHMCS fala através de um único módulo, independentemente do que esteja por baixo.
A diferença prática:
| Um módulo WHMCS para CyberPanel | Provibr | |
|---|---|---|
| Painéis cobertos | CyberPanel | Painéis de controlo, hipervisores e painéis de jogo, incluindo o CyberPanel |
| Integração WHMCS | este módulo | um módulo para todos |
| Faturação fora do WHMCS | escrever outro módulo | API REST |
| Acessibilidade | o WHMCS tem de alcançar o painel | o agente liga para o exterior; nada exposto |
| Armazenamento de credenciais | na base de dados do WHMCS | no cofre do agente no seu próprio anfitrião |
| Resultado da criação | depende do módulo | sonda o estado real |
| Gráficos de utilização no CyberPanel | nenhum disponível | nenhum, e di-lo |
| Mudança de pacote no CyberPanel | não aplica nada | não aplica nada, e di-lo |
| Custo | gratuito | por conta de alojamento em gestão, por mês |
| DNS, correio, bases de dados | painel | painel |
| Quem o mantém | variável | uma empresa que o vende |
Duas linhas merecem um desenvolvimento, porque são as honestas.
O custo. O módulo é gratuito e o Provibr não é. O Provibr cobra a capacidade que reserva (quantas contas de alojamento pode fazer correr ao mesmo tempo) a um preço unitário por escalões que baixa à medida que o número sobe. O que cobra aos seus próprios clientes continua inteiramente seu. Se tem doze sites CyberPanel e nenhum plano de crescimento, um módulo gratuito é a resposta certa.
Os mesmos limites, uma honestidade diferente. O Provibr não repara a mudança de pacote do CyberPanel, não inventa valores de utilização, e não bloqueia uma conta suspensa. Não o pode fazer: são propriedades do painel. O que faz é recusar-se a fingir o contrário.
Como se encaixa no WHMCS
Um módulo, instalado como um simples zip em modules/servers/. No WHMCS adiciona-se um servidor que aponta para o Provibr com uma chave de API, e depois faz-se apontar um produto WHMCS para um plano de alojamento web Provibr. Uma encomenda paga cria a conta, uma suspensão suspende-a, uma rescisão remove-a. O seu cliente mantém uma conta, uma fatura e um início de sessão.
A chave de API contém âmbitos, e o que pode realmente fazer é a interseção desses âmbitos e das permissões do membro a que pertence, pelo que uma chave só pode restringir o acesso, nunca alargá-lo. Retire-se uma permissão a um colega e todas as suas chaves ficam mais restritas no pedido seguinte, sem que ninguém tenha de revogar seja o que for.
Se não faz correr o WHMCS, as mesmas operações estão disponíveis através da API REST: uma chave, um URL de base. Tudo o que toca numa máquina responde «aceite» com um comando a seguir, porque a sua infraestrutura só é acessível através do agente que está dentro da sua própria rede. As leituras respondem de imediato.
Quando o módulo é a melhor escolha
Para ser direto: se o CyberPanel é o único painel que faz correr, se já tem o WHMCS, se o seu volume é pequeno e se ler PHP quando algo se avaria não o incomoda, um módulo representa menos maquinaria e nenhum custo mensal. Os limites do topo desta página aplicam-se igualmente às duas opções.
O argumento a favor de uma camada por cima começa quando faz correr mais do que um painel, quando quer as credenciais fora do seu anfitrião WHMCS, quando algo que não o WHMCS tem de colocar encomendas, ou quando quer que o caminho de aprovisionamento seja o produto de alguém em vez do fim de semana de alguém.
O Provibr faz correr hoje os seus painéis de controlo, os seus hipervisores e os seus painéis de jogo lado a lado, num só inventário, sob um só modelo de permissões, com um só registo de atividade. Não é obrigatório escolher entre o CyberPanel e tudo o resto.
Perguntas frequentes
Existe um módulo CyberPanel oficial para o WHMCS?
Medido a 21 de agosto de 2026, essa pesquisa devolvia um repositório do GitHub mantido por uma pessoa e um tópico de fórum. Isso descreve uma lacuna, não é uma crítica ao trabalho de ninguém.
Porque é que o módulo comunica sucesso para um site que nunca foi criado?
Porque createWebsite responde antes de conhecer o resultado. Um domínio que já existe e um pacote desconhecido voltam ambos como createWebSiteStatus: 1, e isso significa que o trabalho começou, não que tenha corrido bem. Só a forma do domínio e do endereço de e-mail é validada à partida.
Mudar de pacote no CyberPanel aplica alguma coisa?
Não. Medido no CyberPanel 3.0, changePackageAPI responde em cerca de 270 milissegundos e o painel mostra o nome novo, enquanto a quota de disco e os limites do vhost ficam iguais. Toda a implementação desse endpoint é uma alteração de campo, e nenhum módulo consegue repará-la.
Porque é que uma palavra-passe correta dá «API Access Disabled»?
Porque num CyberPanel acabado de instalar a API está desligada, incluindo para o administrador principal, e a flag é verificada antes da palavra-passe. Uma palavra-passe certa e uma errada devolvem a mesma resposta, por isso a primeira falha de qualquer módulo para este painel parece um problema de credenciais e não é.
Módulo ou camada de aprovisionamento?
Se o CyberPanel for o único painel em uso, o WHMCS já estiver instalado e o volume for pequeno, um módulo é menos maquinaria e nenhuma mensalidade. Uma camada por cima começa a compensar quando há mais do que um painel, quando as credenciais devem sair do servidor do WHMCS, ou quando algo que não é o WHMCS tem de colocar encomendas.