아키텍처
관리자 위치: 참조 페이지입니다. 여기에 설명된 서비스는
sudo nexcmp status로 확인할 수 있으며, 연결은 Infrastructure 및 System › Settings에서 구성합니다.
구조도
텍스트로 보는 동일한 다이어그램
- 고객이나 관리자가
https://cloud.example.com(포털),https://cloud.example.com/admin(관리자 콘솔)을 열거나 REST API를 호출합니다. DNS는 이름을 서버 또는 프록시 역할을 하는 Cloudflare로 지정합니다. - 패널 서버의 nginx는 포트 80(리디렉션 및 인증서 갱신)과 443(TLS)에서 수신 대기하고 모든 요청을
127.0.0.1:3000의 panel로 전달합니다. 설치 마법사 완료 후 패널은 루프백 인터페이스에서만 수신 대기합니다. - panel(
nexcmp.service)은 고객 포털, 관리자 콘솔, REST API, 설치 마법사 및 노드에 필요한 다운로드(에이전트 바이너리, 설치 스크립트,cmp커맨드라인 도구)를 제공합니다. 또한 하루에 한 번 라이선스를 확인합니다. - worker(
nexcmp-vmd.service)는 로컬 전용인127.0.0.1:8112에서 수신 대기합니다. 프로비저닝 작업, CloudStack 및 Proxmox VE와의 동기화, 빌링 틱, 대역폭 수집, 브라우저 콘솔 연결 등 시간이 걸리거나 일정에 따라 실행되어야 하는 모든 작업을 수행합니다. - 이 두 프로세스에서 NexCMP는 외부로 호출을 보냅니다: CloudStack(관리 API), Proxmox VE(포트 8006의 API, 인증서 고정), Dell iDRAC(관리 네트워크의 HTTPS 기반 Redfish), Ceph RGW(HTTPS 기반 S3 및 Admin Ops), 결제 게이트웨이(웹훅 URL도 호출하는 Stripe, PayPal, USDT 및 계좌 이체 제공업체), SMTP 서버, OpenAI 호환 API를 제공하는 AI 공급자, 그리고 선택적으로 Telegram.
- VPN 노드는
cmp-agent을(를) 실행합니다. 각 노드는 일회용 토큰으로 한 번 등록한 후 HTTPS를 통해 5초마다 패널에 하트비를 보내고 응답으로 구성을 받습니다. IPv6 프록시 노드는 패널이 SSH를 통해 한 번 설치한 후 패널에서 구성을 가져옵니다. - 상태는 SQLite 데이터베이스와
/var/lib/nexcmp의 일부 파일에 저장됩니다. CloudStack, Proxmox, S3, iDRAC 및 AI 공급자의 자격 증명은 동일한 영역에 있는 마스터 키 파일로 암호화(AES-256-GCM)되어 저장됩니다.
서비스 및 프로세스
| 프로세스 | 실행 권한 | 수신 대기 | 역할 |
|---|---|---|---|
nginx | root (workers www-data) | 80, 443 | TLS, 리디렉션, 패널 프록시 |
nexcmp | nexcmp | 3000 (최초 설치 시 모든 인터페이스, 이후 127.0.0.1) | 포털, 관리자 콘솔, API, 마법사, 다운로드 |
nexcmp-vmd | nexcmp | 127.0.0.1:8112 | 작업, 동기화, 빌링, 대역폭, 콘솔 |
nexcmp-update | root | none | 관리자 콘솔 요청에 따른 업데이트 적용 (패스 유닛이 요청 대기) |
cmp-agent (VPN 노드) | root | VPN 리스너 포트 | 패널에 보고, 공인 IPv4에서 프록시 리스너 실행 |
패널과 워커는 Linux capability 없이 일반 사용자로 실행되며, /var/lib/nexcmp 및 /var/log/nexcmp을 제외하고는 읽기 전용 파일 시스템을 사용합니다. root, Docker, 별도의 데이터베이스, Redis가 필요하지 않습니다.
파일 및 위치
| 경로 | 내용 |
|---|---|
/opt/nexcmp | 프로그램: 릴리스, bin/, 템플릿 빌더 등의 공유 파일. root 소유, 서비스에서는 읽기 전용. |
/etc/nexcmp | 설치 프로그램 설정(install.conf), 포트 및 바인드(nexcmp.env). |
/var/lib/nexcmp | SQLite 데이터베이스, 업로드된 브랜딩, 에이전트 다운로드 폴더, 라이선스 상태, 마스터 키 파일. 반드시 백업하세요. |
/var/log/nexcmp | 로그. |
백업 및 복원을 참고하세요. 마스터 키 파일은 데이터베이스와 함께 백업해야 하며, 그렇지 않으면 복원된 데이터베이스가 저장된 자격 증명을 해독할 수 없습니다.
통신 주체
| 방향 | 경로 | 포트 | 참고 |
|---|---|---|---|
| 고객에서 패널로 | 인터넷, DNS, 선택적 Cloudflare, nginx | 443 | DNS 및 Cloudflare를 참고하세요. |
| 패널에서 라이선스 서버로 | nexcmp.com | 443 | 활성화, 일일 점검 및 업데이트. |
| 패널에서 CloudStack으로 | API | 443 또는 8080 | VM 콘솔, 대역폭 및 Kubernetes 기능은 동일한 엔드포인트를 사용합니다. |
| 패널에서 Proxmox VE로 | API 및 WebSocket 콘솔 | 8006 | SHA-256으로 고정된 인증서. |
| 패널에서 iDRAC으로 | Redfish | 443, VNC 5901 | 관리 네트워크 전용. |
| iDRAC에서 ISO 서버로 | HTTP | 사용자 지정 포트 | iDRAC가 ISO를 가져옵니다. |
| 패널에서 Ceph RGW로 | Admin Ops | 443 | |
| 패널에서 SMTP로 | SMTP | 587 또는 465 | |
| 패널에서 AI 제공업체로 | HTTPS | 443 | AI 모듈이 켜져 있을 때만 해당됩니다. |
| 결제 게이트웨이에서 패널로 | 웹훅 | 443 | Stripe 및 PayPal 콜백. |
| 노드에서 패널로 | cmp-agent | 443 | 등록, 하트비트, 업그레이드. |
| 패널에서 IPv6 프록시 노드로 | SSH | 입력한 포트 | 최초 1회 설치 전용. |
중요한 이유
- 접속할 수 있는 패널은 공격당할 수 있는 패널입니다. 설정 마법사가 완료되면 포트 3000을 닫아두세요. TLS가 활성화되면 설치 프로그램이 자동으로 처리합니다.
- 무엇이든 생성하고 과금하려면 워커가 실행 중이어야 합니다.
sudo nexcmp status은 두 서비스와 헬스 체크를 모두 보여줍니다. - 아웃바운드 방화벽을 계획하세요. 패널 서버의 아웃바운드 트래픽이 필터링되는 경우, 위 표의 목적지를 허용해야 합니다.
- 관리 트래픽은 공용 경로를 우회합니다. CloudStack, Proxmox VE, iDRAC 및 Ceph에 대한 연결은 nginx나 Cloudflare를 거치지 않고 패널 서버에서 해당 시스템으로 직접 연결됩니다.