Arquitetura
Onde no admin: esta é uma página de referência. Os serviços descritos aqui estão visíveis com
sudo nexcmp status; as conexões são configuradas em Infrastructure e System › Settings.
A visão geral
O mesmo diagrama em palavras
- Um cliente ou administrador abre o
https://cloud.example.com(o portal), ohttps://cloud.example.com/admin(o console de administração) ou chama a REST API. O DNS aponta o nome para o seu servidor ou para o Cloudflare, que faz proxy para ele. - O nginx no servidor do painel escuta nas portas 80 (redirecionamento e renovação de certificado) e 443 (TLS) e encaminha cada requisição para o panel em
127.0.0.1:3000. Após o assistente de instalação, o painel escuta apenas na interface de loopback. - O panel (
nexcmp.service) serve o portal do cliente, o console de administração, a REST API, o assistente de instalação e os downloads necessários para os nós (o binário do agente, o script de instalação, a ferramenta de linha de comandocmp). Ele também verifica sua licença uma vez por dia. - O worker (
nexcmp-vmd.service) escuta em127.0.0.1:8112, que é apenas local. Ele executa tudo o que leva tempo ou precisa acontecer de forma agendada: tarefas de provisionamento, sincronização com CloudStack e Proxmox VE, ciclos de faturamento, coleta de largura de banda e conexões do console do navegador. - A partir desses dois processos, o NexCMP faz chamadas externas para: CloudStack (API de gerenciamento), Proxmox VE (API na porta 8006, certificado fixado/pinned), Dell iDRAC (Redfish sobre HTTPS na rede de gerenciamento), Ceph RGW (S3 e Admin Ops sobre HTTPS), gateways de pagamento (Stripe, PayPal, USDT e provedores de transferência bancária, que também chamam suas URLs de webhook), seu servidor SMTP, um provedor de IA com uma API compatível com OpenAI e, opcionalmente, Telegram.
- Nós de VPN executam
cmp-agent. Cada nó se registra uma vez com um token de uso único, envia um batimento cardíaco a cada 5 segundos via HTTPS para o painel e recebe sua configuração na resposta. Nós de proxy IPv6 são instalados uma vez pelo painel via SSH e, em seguida, obtêm sua configuração do painel. - O estado reside em bancos de dados SQLite e em alguns arquivos em
/var/lib/nexcmp. As credenciais para CloudStack, Proxmox, S3, iDRAC e o provedor de IA são armazenadas criptografadas (AES-256-GCM) com arquivos de chave mestra na mesma área.
Serviços e processos
| Processo | Executado como | Escuta em | Função |
|---|---|---|---|
nginx | root (workers www-data) | 80, 443 | TLS, redirecionamento, proxy para o painel |
nexcmp | nexcmp | 3000 (todas as interfaces durante a primeira instalação, depois 127.0.0.1) | Portal, console de administração, API, assistente, downloads |
nexcmp-vmd | nexcmp | 127.0.0.1:8112 | Tarefas, sincronização, faturamento, largura de banda, console |
nexcmp-update | root | nenhum | Aplica atualizações solicitadas pelo console de administração (uma unidade de caminho aguarda pela solicitação) |
cmp-agent (em nós VPN) | root | as portas do listener VPN | Reporta-se ao painel, executa listeners de proxy em IPv4 públicos |
O painel e o worker executam como um usuário comum, sem quaisquer recursos do Linux, com um sistema de arquivos somente leitura, exceto /var/lib/nexcmp e /var/log/nexcmp. Não precisam de root, Docker, banco de dados separado ou Redis.
Arquivos e onde eles ficam
| Caminho | Conteúdo |
|---|---|
/opt/nexcmp | O programa: versões, bin/, arquivos compartilhados como o construtor de modelos. De propriedade do root, somente leitura para o serviço. |
/etc/nexcmp | Configurações do instalador (install.conf), porta e vínculo (nexcmp.env). |
/var/lib/nexcmp | Bancos de dados SQLite, identidade visual enviada, pasta de download do agente, estado da licença, arquivos de chave mestra. Faça backup disso. |
/var/log/nexcmp | Logs. |
Consulte Backup and restore. Os arquivos de chave mestra devem ter o backup feito junto com os bancos de dados, caso contrário, um banco de dados restaurado não poderá descriptografar suas credenciais armazenadas.
Quem se conecta a quem
| Direção | Caminho | Porta | Notas |
|---|---|---|---|
| Cliente para o painel | Internet, DNS, Cloudflare opcional, nginx | 443 | Consulte DNS and Cloudflare. |
| Painel para o servidor de licenças | nexcmp.com | 443 | Ativação, verificação diária e atualizações. |
| Painel para o CloudStack | API | 443 ou 8080 | O console da VM, largura de banda e recursos de Kubernetes usam o mesmo endpoint. |
| Painel para o Proxmox VE | API e console WebSocket | 8006 | Certificado fixado (pinned) por SHA-256. |
| Painel para o iDRAC | Redfish | 443, VNC 5901 | Apenas rede de gerenciamento. |
| iDRAC para o servidor ISO | HTTP | sua porta | O iDRAC puxa a ISO. |
| Painel para o Ceph RGW | Admin Ops | 443 | |
| Painel para o SMTP | SMTP | 587 ou 465 | |
| Painel para o provedor de IA | HTTPS | 443 | Apenas quando o módulo de IA estiver ativado. |
| Gateway de pagamento para o painel | Webhook | 443 | Stripe e PayPal fazem chamadas de retorno (callback). |
| Nó para o painel | cmp-agent | 443 | Registro, heartbeat, atualização. |
| Painel para o nó de proxy IPv6 | SSH | a porta que você digita | Instalação única. |
Por que isso importa
- Um painel que pode ser acessado é um painel que pode ser atacado. Mantenha a porta 3000 fechada após concluir o assistente de configuração. O instalador já faz isso quando o TLS está ativo.
- O worker deve estar em execução para que qualquer recurso seja criado ou cobrado.
sudo nexcmp statusexibe ambos os serviços e a verificação de integridade. - Planeje os firewalls de saída. Se o tráfego de saída do servidor do painel for filtrado, libere os destinos na tabela acima.
- O tráfego de gerenciamento fica fora da rota pública. As conexões com CloudStack, Proxmox VE, iDRAC e Ceph vão direto do servidor do painel para esses sistemas, nunca através do nginx ou Cloudflare.