アーキテクチャ
管理者画面の場所: これはリファレンスページです。ここで説明するサービスは
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コマンドラインツール)を提供します。また、1日1回ライセンスの確認を行います。 - worker(
nexcmp-vmd.service)はローカル専用の127.0.0.1:8112でリクエストを待ち受けます。時間のかかる処理やスケジュールされた処理(プロビジョニングジョブ、CloudStackおよびProxmox VEとの同期、課金処理、帯域幅の収集、ブラウザコンソール接続など)を実行します。 - これら2つのプロセスから、NexCMPは外部への呼び出しを行います: CloudStack(管理API)、Proxmox VE(ポート8006のAPI、証明書ピン留め)、Dell iDRAC(管理ネットワーク上のHTTPS経由のRedfish)、Ceph RGW(HTTPS経由のS3およびAdmin Ops)、決済ゲートウェイ(Webhook URLも呼び出すStripe、PayPal、USDTおよび銀行振込プロバイダー)、お客様のSMTPサーバー、OpenAI互換APIを持つAIプロバイダー、およびオプションの Telegram。
- VPNノードは
cmp-agentを実行します。各ノードはワンタイムトークンで一度登録を行った後、5秒ごとにHTTPS経由でパネルにハートビートを送信し、その応答として設定を受け取ります。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 | なし | 管理コンソールから要求されたアップデートを適用(パスユニットが要求を待機) |
cmp-agent(VPNノード上) | root | VPNリスナーポート | パネルへの報告、パブリックIPv4上でのプロキシリスナーの実行 |
パネルとワーカーは、root権限もDockerも、独立したデータベースもRedisも持たず、/var/lib/nexcmp と /var/log/nexcmp を除いて読み取り専用のファイルシステム上で、Linuxの機能を使用しない通常のユーザーとして実行されます。
ファイルとその場所
| パス | コンテンツ |
|---|---|
/opt/nexcmp | プログラム:リリース、bin/、テンプレートビルダーなどの共有ファイル。rootが所有し、サービスからは読み取り専用。 |
/etc/nexcmp | インストーラー設定(install.conf)、ポートとバインド(nexcmp.env)。 |
/var/lib/nexcmp | SQLiteデータベース、アップロードされたブランディング、エージェントダウンロードフォルダ、ライセンス状態、マスターキーファイル。これらをバックアップしてください。 |
/var/log/nexcmp | ログ。 |
Backup and restore を参照してください。マスターキーファイルはデータベースと一緒にバックアップする必要があります。そうしないと、復元されたデータベースで保存された認証情報を復号できません。
通信の方向
| 方向 | パス | ポート | 備考 |
|---|---|---|---|
| 顧客からパネルへ | インターネット、DNS、オプションのCloudflare、nginx | 443 | DNS and 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モジュールが有効な場合のみ。 |
| 決済ゲートウェイからパネルへ | Webhook | 443 | Stripe および PayPal からのコールバック。 |
| ノードからパネルへ | cmp-agent | 443 | 登録、ハートビート、アップグレード。 |
| パネルからIPv6プロキシノードへ | SSH | 入力したポート | 初回インストール時のみ。 |
重要性
- アクセス可能なパネルは、攻撃可能なパネルです。 セットアップウィザードの完了後は、ポート 3000 を閉じた状態に維持してください。TLS が有効な場合、インストーラーはこれを自動的に行います。
- ワーカーが実行中である必要があります(作成や課金を行うため)。
sudo nexcmp statusに両方のサービスとヘルスチェックが表示されます。 - アウトバウンドファイアウォールを計画してください。 パネルサーバーのアウトバウンドトラフィックがフィルタリングされている場合は、上記の表にある宛先を許可してください。
- 管理トラフィックはパブリック経由を通らないようにします。 CloudStack、Proxmox VE、iDRAC、Ceph への接続は、パネルサーバーから直接それらのシステムへ向かいます。nginxやCloudflareを経由することは決してありません。