CS-PANEL · Documentação
Ver Demo Voltar para o site

Documentação do CS-PANEL

Guia completo de todas as páginas, módulos e elementos do painel gerado pelo install.sh. Este documento descreve exatamente o que cada tela faz, quais campos/colunas ela expõe e quais comandos reais do sistema operacional são executados por trás de cada ação — sem simulações.

Compromisso de transparência: todo módulo listado abaixo lê e grava dados reais no MySQL (cspanel_db) e, quando aplicável, executa comandos reais no host (virsh, virt-install, qemu-img, iptables, ufw, certbot, pdnsutil, haproxy, lspci). Onde uma funcionalidade ainda é parcial, isso está marcado explicitamente com o selo Parcial.

Arquitetura

Instalador
install.sh (bash, gera tudo via heredocs)
Backend
PHP procedural + PDO/MySQL
Banco
MySQL/MariaDB · cspanel_db
Hipervisor
KVM via libvirt (virsh / virt-install)
Servidor web
Apache · /var/www/cspanel
Painel Admin
Porta 4085 · /admin
Painel Cliente
Porta 4083 · /enduser
API
/api/v1 via API Key

O roteamento de ambos os painéis é feito por ?module=NOME, que carrega modules/NOME/index.php. Cada módulo é um arquivo PHP independente, gerado por uma função create_<nome>_module() dentro do install.sh. O visual (glassmorphism escuro, cyan #00E5FF / roxo #7C3AED) é compartilhado via includes/header.php e includes/footer.php.

Segurança

Modelo de privilégio mínimo (least-privilege)

O PHP roda como o usuário normal do servidor web (www-data/apache), nunca como root. O instalador cria /etc/sudoers.d/cspanel (validado com visudo -cf antes de ativar, com rollback automático em caso de erro de sintaxe) liberando NOPASSWD apenas para os binários que o painel realmente precisa:

virshvirt-installqemu-imgvirt-customize iptablesufwcertbotpdnsutil wget (escopado) systemctl reload/restart haproxy|pdns

Toda chamada privilegiada em PHP passa pelo prefixo CS_SUDO (sudo -n), e todo dado vindo do usuário é tratado com escapeshellarg() e validação de formato/whitelist antes de chegar em qualquer shell_exec. Uploads de mídia aceitam apenas .iso/.img com nomes sanitizados; downloads por URL só aceitam esquemas http/https apontando direto para um arquivo .iso/.img (mitigação básica de SSRF).

Instalação

Execute como root em um servidor Linux limpo (Ubuntu/Debian/AlmaLinux/Rocky):

wget -N http://files.cspanel.com/install.sh
chmod 0755 install.sh
./install.sh email=seu@email.com kernel=kvm

O parâmetro kernel=kvm seleciona o hipervisor principal (o instalador também instala pacotes de OpenVZ/LXC/Xen quando solicitado, mas a criação/gestão de VPS pelo painel hoje é 100% real apenas para KVM). Ao final, o admin fica em https://SEU_IP:4085 e o painel do cliente em https://SEU_IP:4083.

VPS

Dashboard

admin/modules/dashboard/index.php
Real

Tela inicial do admin. Sincroniza o status de todas as VPS com virsh domstate antes de renderizar (via cs_sync_vps_status()).

Elementos da página
ElementoOrigem/Descrição
Cards de estatísticaVPS Ativas, Usuários, Servidores e Uptime — contagens reais via SELECT COUNT(*)
Tabela "Máquinas Virtuais"8 VPS mais recentes: Nome, IP, CPU, RAM, Status (badge colorido)
Painel "Uso de Recursos"Barras de progresso de CPU/RAM/Disco reais do host, via cs_host_stats()
Painel "Últimas Atividades"Últimos 5 registros da tabela logs
Botão "Nova VPS"Leva para o módulo VPS
virsh domstate top free df uptime lscpu nproc

VPS (listagem)

admin/modules/vps/index.php
Real

Lista todas as VPS reais criadas no libvirt, com ações de ciclo de vida.

Colunas da tabela
ColunaDescrição
ID / DomínioIdentificador interno e nome real do domínio libvirt
Sistema / CPU / RAM / DiscoEspecificações alocadas na criação
IPEndereço atribuído via IP Pool
Console (VNC)IP_DO_HOST:PORTA_VNC para acesso ao console gráfico
StatusOnline / Criando / Parada / Suspensa / Erro (badge)
Ações (botões)
BotãoComando real executado
Iniciarvirsh start <domínio>
Parar (graceful)virsh shutdown <domínio>
Forçar paradavirsh destroy <domínio> (confirmação obrigatória)
Deletarvirsh destroy + virsh undefine --remove-all-storage --nvram, libera IP no pool e remove regras de firewall da VPS

Nova VPS (wizard de criação)

admin/modules/vps/create.php
Real

Formulário de criação real de VPS, sem simulação de progresso — a chamada só retorna após o virt-install real ser disparado.

Campos do formulário
CampoDescrição
ISO (cards clicáveis)Lista as ISOs com status ready vindas do módulo Media
Nome da VPSTexto livre; vira o "domínio" libvirt após sanitização
vCPUs1 / 2 / 4 / 8 cores
RAM1, 2, 4, 8 ou 16 GB
Disco20, 40, 80, 160 ou 320 GB
IP (IP Pool)Seleciona um IP livre real do pool ou "sem IP fixo"
qemu-img create -f qcow2 <disco> <tamanho>G
virt-install --name ... --memory ... --vcpus ... --disk ... --cdrom <iso> --network bridge=cspanelbr0 --graphics vnc --noautoconsole

Cria também uma entrada em tasks (tipo create_vps) com a saída completa do comando, visível no módulo Tarefas.

IP Pool

admin/modules/ip_pool/index.php
Real

Gestão do pool de IPs (IPv4/IPv6) usado na criação de VPS.

Formulário "Adicionar IP"
Endereço IPValidado com FILTER_VALIDATE_IP
Gateway / MáscaraOpcional / padrão 255.255.255.0
TipoIPv4 ou IPv6
Tabela
ColunaDescrição
StatusLivre / Atribuído / Reservado
VPSDomínio da VPS que está usando o IP (se houver)
RemoverSó habilitado para IPs livres (evita quebrar uma VPS em uso)

Media (ISO) — prioridade #1

admin/modules/media/index.php
Real

Gerenciador de imagens ISO/IMG reais em disco (CS_ISO_DIR), usadas por VPS e pelo painel do cliente.

Elementos da página
ElementoDescrição
Barra de espaço em discoUso real de disk_total_space()/disk_free_space() na pasta de ISOs
Formulário "Enviar ISO"Upload real via move_uploaded_file(), restrito a .iso/.img, nome sanitizado
Formulário "Baixar por URL"Valida esquema http/https e extensão, dispara wget real em background (processo com PID rastreado) e atualiza o status ao concluir
Tabela de ISOsNome, arquivo, tipo (Linux/Windows/Outro), tamanho real em MB, status (Pronta/Baixando/Erro)
ExcluirApaga o arquivo do disco e a linha do banco; bloqueado se a ISO estiver em uso por alguma VPS
wget -q -O arquivo url & virsh pool-refresh iso

Recipes

admin/modules/recipes/index.php
Real

Scripts reutilizáveis executados diretamente no disco de uma VPS desligada, via virt-customize.

Campos
Nome / SistemaIdentificação e SO alvo (Linux/Windows)
ScriptBash executado offline dentro do disco qcow2
Executar em uma VPSSeleciona recipe + VPS; exige que a VPS esteja com estado shut off
virt-customize -a <disco.qcow2> --run <script>

Servidor

Servidores

admin/modules/servers/index.php
Real (CRUD)

Cadastro dos nós/servidores físicos gerenciados pelo painel (nome, hostname, IP, hipervisor).

ColunaDescrição
HypervisorKVM / OpenVZ / LXC / Xen (badge)
VPSContagem de VPS associadas
StatusOnline/Offline (badge)

Storage

admin/modules/storage/index.php
Real

Storage pools reais (local/NFS/iSCSI), com uso de disco calculado a partir do caminho real informado.

Elementos
Cards de poolNome, caminho, barra de uso real (GB usados / GB totais), alerta se o caminho não existir mais
Formulário "Adicionar"Nome, caminho no servidor (validado com is_dir()), tipo
Pools reais do libvirtSaída bruta de virsh pool-list --all

Importar VPS

admin/modules/import/index.php
Real

Detecta VMs libvirt que existem no host mas ainda não estão no banco do painel (criadas manualmente via virsh, por exemplo) e permite "adotá-las".

virsh list --all --name · virsh dominfo · virsh domstate

Ao importar, lê vCPUs/memória reais da VM via dominfo e grava no banco com o estado atual (rodando/parada).

GPU Passthrough

admin/modules/passthrough/index.php
Real

Detecta GPUs/dispositivos PCI reais do host e permite anexá-los a uma VPS via VFIO.

lspci -nn | grep -Ei 'vga|3d|display' · virsh attach-device --config --persistent

Requer IOMMU habilitado na BIOS/kernel do host e reinício da VM após a atribuição.

Rede

Firewall (Host)

admin/modules/firewall/index.php
Real

Controle do firewall do próprio servidor via UFW.

ufw allow ufw deny ufw --force enable ufw disable ufw status numbered

Firewall VPS

admin/modules/vps_firewall/index.php
Real

Regras de firewall isoladas por VPS, aplicadas em uma cadeia iptables dedicada (cspanel-vps-<id>) que é totalmente reconstruída a cada alteração — garantindo que exclusões realmente removam a regra do host.

CampoOpções
ProtocoloTCP / UDP / ICMP / Todos
PortaNúmero ou intervalo
AçãoAceitar / Bloquear / Rejeitar
DireçãoEntrada / Saída
iptables -N/-F/-I/-A por cadeia da VPS

Load Balancer

admin/modules/load_balancer/index.php
Real

Gera o arquivo /etc/haproxy/haproxy.cfg completo a partir das regras cadastradas e recarrega o serviço.

CampoDescrição
Porta frontendPorta pública que recebe o tráfego
ProtocoloTCP ou HTTP
BackendsLista ip:porta,ip:porta
AlgoritmoRound Robin / Least Conn / Source
cp haproxy.cfg /etc/haproxy/haproxy.cfg && systemctl reload haproxy

Power DNS

admin/modules/powerdns/index.php
Real

Gestão de zonas e registros DNS via PowerDNS.

pdnsutil create-zone pdnsutil add-record pdnsutil delete-zone pdnsutil list-all-zones systemctl reload pdns

Registros suportados: A, AAAA, CNAME, MX, TXT, NS.

SSL Settings

admin/modules/ssl_settings/index.php
Real

Emissão de certificados Let's Encrypt reais.

certbot certonly --standalone --non-interactive --agree-tos -m EMAIL -d DOMINIO · certbot delete --cert-name

Requer porta 80 livre e DNS do domínio já apontando para o servidor (modo standalone).

Financeiro

Planos

admin/modules/plans/index.php
Real (CRUD)

Cadastro de planos de venda (CPU, RAM, disco, banda, preço) usados como referência comercial.

Faturamento

admin/modules/billing/index.php
Real (CRUD)

Geração e controle de faturas por usuário/VPS.

ColunaDescrição
StatusPendente / Paga / Vencida / Cancelada
AçõesMarcar como paga, remover

Sistema

Usuários

admin/modules/users/index.php
Real (CRUD)

Cadastro de clientes do painel (usuário, e-mail, senha com password_hash(), limite de VPS).

API Credentials

admin/modules/api_credentials/index.php
Real

Exibe e permite regenerar a API Key/Password (geradas com random_bytes()) usadas pelos endpoints em /api/v1.

Configuration

admin/modules/configuration/index.php
Real

Edição direta da tabela settings — cada linha vira um campo de formulário automaticamente.

Tasks

admin/modules/tasks/index.php
Real

Fila/histórico real de operações assíncronas (criação de VPS, download de ISO, recipes), com saída bruta dos comandos executados, visível em um painel expansível por linha.

Backup

admin/modules/backup/index.php
Real

Backup e restauração de discos de VPS.

qemu-img convert -O qcow2 origem destino · restauração via cp (exige VPS desligada)

Logs

admin/modules/logs/index.php
Real

Auditoria completa: data, ação, detalhes e IP de origem das últimas 300 ações registradas por cs_log() em todos os módulos.

Cloud Resources

admin/modules/cloud_resources/index.php
Real

Visão de capacidade: vCPUs/RAM/disco alocados (somados das VPS ativas) versus capacidade real do host.

virsh nodeinfo

Painel do Cliente (Enduser)

Dashboard (Enduser)

enduser/modules/dashboard/index.php
Real

Visão do cliente: total de VPS próprias, quantas estão em execução, limite do plano contratado e lista das 5 VPS mais recentes com status real (sincronizado via virsh domstate).

Minhas VPS (Enduser)

enduser/modules/vps/index.php · create.php · os_list.php · deploy.php
Real

Wizard de 3 passos (Categoria → Sistema → Configuração) para o cliente criar sua própria VPS, respeitando o limite de VPS do seu plano. A lista de sistemas operacionais vem das ISOs reais cadastradas em Media (compartilhado com o admin) e o deploy executa o mesmo fluxo real de qemu-img + virt-install usado no painel administrativo — nada é simulado nem usa IP aleatório.

Ações
AçãoComando real
Iniciarvirsh start <domínio>
Pararvirsh shutdown <domínio>
Criar VPSqemu-img create + virt-install ... --noautoconsole, com IP real do IP Pool e porta VNC real
CS-PANEL · Documentação gerada a partir do código-fonte real de install.sh