---
title: Proxmox VE
description: Proxmox VEクラスターをVMソースとして追加: 最小権限のAPIトークン、ストレージ、cloud-imageテンプレート、IPプール、TLSピニング、プランごとのソース。
url: https://nexcmp.com/ja/docs/infrastructure/proxmox/
applies_to: NexCMP 1.6.1
updated: 2026-11-02
---

# Proxmox VE

> **管理画面での場所:** Infrastructure › Cloud provider › Providers (`/infra/providers`)、および概要、クラスター、VM、サーバー、認証情報のタブがあるプロバイダーページ (`/infra/providers/<id>`)。プランは Services › Virtual Machines › Plans & pricing (`/vm/catalog`) で設定します。

## 動作内容 {#what-it-does}

NexCMPでは、CloudStackの代わりまたはそれと並行して、1つ以上のProxmox VEクラスター上で実行される仮想マシンを販売できます。OSテンプレートをフルクローンでクローン作成し、サイズ、定義したプールからのIPアドレス、rootパスワード、SSHキーなどのcloud-initを通じて構成することでVMが作成されます。お客様は、ポータル内で電源制御、コンソール、スナップショット、再インストール、パスワードリセット、メトリクスを利用できます。クラスター、ノード、ソースの名前がお客様に表示されることはありません。

すでにProxmox VEを運用している場合や、価格の異なる2つ目のVMプールを提供する場合に使用します。

## 要件 {#requirements}

| 項目 | 要件 |
|---|---|
| Proxmox VE | PVE 9.x。統合は9.2で検証済みです。`import`ストレージコンテンツと`import-from`ディスクオプション（PVE 8.2以降）が必要です。 |
| パネルからのネットワーク | クラスターAPIへのHTTPS (`https://<host or IP>:8006`)。パス、ユーザー名、クエリはありません。パネルとワーカーの両方が接続し、ブラウザーコンソールはパネル経由でプロキシされます。 |
| アカウント | **APIトークン**を持つ専用のPVEユーザーと、以下の特権を持つカスタムロール。`root@pam`は絶対に使用しないでください。 |
| ストレージ | クローンに対応したVMディスク用ストレージ（例: `local-lvm`）。組み込みテンプレートビルダーの場合は、`local`という名前のストレージ（コンテンツタイプ`import`および`snippets`）。 |
| ネットワーク | カスタマーIPが存在するネットワークに到達するLinuxブリッジ（例: `vmbr0`）。VLANタグを入力する場合は、VLAN対応ブリッジを使用してください。 |
| IP | そのブリッジにルーティングされたIPv4ブロック（/16〜/30）とゲートウェイ。NexCMPが自身でアドレスを割り当てます。ProxmoxにはIP管理機能がありません。 |
| Templates | デプロイするすべてのノード上で、OSごとに1つのcloud-initテンプレートVM（QEMUゲストエージェント付き）。 |
| ゾーン | クラスターをアタッチする既存のゾーン。[Zones](https://nexcmp.com/ja/docs/infrastructure/zones/)を参照してください。 |
| 依存関係 | なし。 |

## インフラストラクチャの準備 {#prepare-the-infrastructure}

任意のクラスターノード上で、rootとしてコマンドを実行します。

### 1. 最小権限のロール、ユーザー、APIトークンを作成する {#_1-create-a-least-privilege-role-user-and-api-token}

1. ロールを作成します。特権リストはNexCMPが使用する正確なものであり、ユーザー、ストレージ定義、データセンターを編集するものは含まれていません。

   ```bash
   pveum role add NexCMP -privs "VM.Allocate VM.Clone VM.Config.CDROM VM.Config.CPU VM.Config.Cloudinit VM.Config.Disk VM.Config.HWType VM.Config.Memory VM.Config.Network VM.Config.Options VM.PowerMgmt VM.Audit VM.Console VM.Snapshot VM.Snapshot.Rollback VM.Backup VM.GuestAgent.Audit VM.GuestAgent.Unrestricted Datastore.Audit Datastore.AllocateSpace Datastore.AllocateTemplate Sys.Audit Sys.AccessNetwork SDN.Use SDN.Audit Pool.Audit Mapping.Audit Mapping.Use"
   ```

   クラウドイメージのダウンロードには`Sys.AccessNetwork`が必要です。PVE 9には`VM.Monitor`特権がないため、追加しないでください。

2. ユーザーとトークンを作成します。`--privsep 1`は、トークンの権利がユーザー自身の権限とトークン自体の権限の**積集合**になることを意味します。

   ```bash
   pveum user add nexcmp@pve --comment "NexCMP"
   pveum user token add nexcmp@pve api --privsep 1
   ```

   このコマンドはトークン **secret once** (UUID) を1回だけ表示します。今すぐコピーしてください。トークンIDは `nexcmp@pve!api` です。

3. ユーザーとトークンの**両方**にロールを付与します。これは見落とされがちな手順です。特権分離により、ユーザーに権限がない場合、トークンのみが `Datastore.Audit` などの403エラーを受け取ります。

   ```bash
   pveum acl modify / --roles NexCMP --users nexcmp@pve
   pveum acl modify / --roles NexCMP --tokens 'nexcmp@pve!api'
   ```

4. パネルサーバーからテストします：

   ```bash
   curl -sk -H 'Authorization: PVEAPIToken=nexcmp@pve!api=<secret>' https://192.0.2.10:8006/api2/json/version
   ```

   `version` が含まれるJSONドキュメントは、トークンが機能していることを示します。（`-k` はこのクイックチェック用のみです。NexCMP自体が証明書をピン留めします。詳細は下記をご覧ください。）

### 2. ブリッジとストレージの確認 {#_2-check-the-bridge-and-the-storage}

```bash
pvesm status          # storages, type, content and free space
ip -br link show type bridge
```

- お客様のVMには、NexCMPで入力したブリッジ上に `virtio` 個のネットワークインターフェイスが割り当てられます。VLANを設定する場合は、ブリッジがVLANに対応（VLAN-aware）している必要があります。
- お客様のVMを**ノードの管理用アドレスとは別の**ブリッジまたはVLANに配置してください。同じネットワークを共有している場合、Proxmoxファイアウォールの自動管理IPセットにより、そのネットワーク内のすべてのVMに対してノードのポート22、8006、3128、5900-5999、60000-60050が開放されます。分離できない場合は、管理用ACCEPTルールの上の行に、そのVMサブネットから上記ポートへの明示的なDROPルールを追加してください。

### 3. ストレージに関する注意事項（LVM-thin） {#_3-storage-notes-lvm-thin}

- シン・プールの**ゼロ埋め（zeroing）はデフォルトのまま**にしてください。無効化（`lvchange -Zn`）すると、新しく割り当てられたチャンクに古いデータが残ったままになり、クローンされたVMのパーティションテーブルやファイルシステムが破損する可能性があります。
- 「write cache: disabled」と表示されるディスクは、数 MB/s 程度でしかクローンできません。`hdparm -W /dev/sdX` で確認し、ディスクに停電保護機能がある場合は書き込みキャッシュを有効にしてください。

### 4. `import` コンテンツの有効化（組み込みテンプレートビルダー用） {#_4-enable-the-import-content-only-for-the-built-in-template-builder}

組み込みビルダーは、クラウドイメージを `local` という名前のストレージにダウンロードし、そこからテンプレートを作成します。そのストレージのコンテンツリストに `import`（および `snippets`）を追加してください。既存のタイプはそのまま維持してください。`--content` はリスト全体を置き換えます：

```bash
pvesm status --storage local     # note the current content
pvesm set local --content iso,vztmpl,backup,import,snippets
```

### 5. クラウドイメージからのOSテンプレートの構築 {#_5-build-an-os-template-from-a-cloud-image}

テンプレートとは、NexCMPがクローンを作成するcloud-init対応VMのことです。各テンプレートは、VM IDとともに **OS key**（`ubuntu-24.04` など）という短いキーで登録されます。クローンは選択されたノード上で実行されるため、**VMを受け取るすべてのノード上に**OSごとに1つのテンプレートを構築してください。

**オプションA（推奨）：ご自身で構築する。** 標準のUbuntuおよびDebianのクラウドイメージにはゲストエージェントが含まれておらず、rootログインが許可されていません。また、NexCMPはcloud-initを通じてrootパスワードを設定します。最初にイメージを準備してください：

```bash
apt install -y libguestfs-tools
wget -O noble.qcow2 https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img
virt-customize -a noble.qcow2 --install qemu-guest-agent \
  --write /etc/cloud/cloud.cfg.d/99-nexcmp.cfg:$'ssh_pwauth: true\ndisable_root: false\n' \
  --write /etc/ssh/sshd_config.d/00-nexcmp.conf:$'PermitRootLogin yes\nPasswordAuthentication yes\n'
```

次にテンプレートVMを作成します（ID 9000は一例です。テンプレートIDは `vmid from` の値、デフォルトは1000未満にしてください）：

```bash
qm create 9000 --name tpl-ubuntu-24-04 --memory 2048 --cores 2 --cpu host --ostype l26 \
  --scsihw virtio-scsi-single --net0 virtio,bridge=vmbr0 --agent 1 --serial0 socket --vga serial0
qm set 9000 --scsi0 local-lvm:0,import-from=$PWD/noble.qcow2,discard=on,iothread=1
qm set 9000 --ide2 local-lvm:cloudinit --boot order=scsi0
qm template 9000
```

**オプションB: 内蔵ビルダー。** クラスタタブにある **Create OS template from cloud image** カード（下記参照）は、qcow2イメージをダウンロードし、テンプレートを構築して登録します。これはcloud-initとゲストエージェントフラグ付きでVMを作成しますが、イメージ内部のコンテンツを変更することはしません。ルートログインがすでに許可されゲストエージェントが実行されているイメージを使用するか、cloud-initのvendor-dataスニペットも提供する場合にのみ使用してください。


ゲストエージェントは、**Reset password** およびVMのIPアドレスを表示するために必要です。

### 6. 証明書のフィンガープリントの確認（オプション） {#_6-know-the-certificate-fingerprint-optional}

NexCMPはTLS証明書のSHA-256フィンガープリントをピン留めすることでクラスターを信頼するため、自己署名証明書でも問題ありません。NexCMPがピン留めする値を確認するには：

```bash
openssl x509 -in /etc/pve/local/pve-ssl.pem -noout -fingerprint -sha256
```

## NexCMP での接続 {#connect-in-nexcmp}

1. **Infrastructure › Cloud provider › Providers** を開き、**Add cloud provider** をクリックします。**Proxmox VE** を選択して以下を入力します：

   | 項目 | 入力例 |
   |---|---|
   | Name | `Proxmox cluster 1` |
   | Endpoint | `https://192.0.2.10:8006` |
   | Token id | `nexcmp@pve!api` |
   | Token secret | `XXXX`（手順1で出力されたUUID） |
   | Slug | `pve-1`（a-z、0-9、ハイフン、2〜32文字） |
   | Default node | `pve1`（空欄：最も空きRAMが多いオンラインノード） |
   | ストレージ | `local-lvm` |
   | Bridge | `vmbr0` |

      ![Proxmox VEが選択され、エンドポイント、トークン、ストレージの例が入力されたクラウドプロバイダー追加ダイアログ](https://nexcmp.com/ja/docs/images/infrastructure/proxmox-01-add-provider.webp)

2. **Save & open provider**をクリックし、求められたら理由を入力します。トークンは暗号化されて保存されます。
3. **Overview**タブで**Test connection**をクリックします。最初の接続テスト成功時に**クラスタのTLSフィンガープリントがピン留め**され、以降異なる証明書は拒否されます。


4. **Clusters**タブを開きます。**Node · storage · bridge**カードにはAPIから認識される内容がリストされ、**Cluster configuration**カードには設定が保持されます：

   | 項目 | 意味 |
   |---|---|
   | Default node | 新規VMに使用されるノード。空欄の場合は最も空きRAMが多いオンラインノードを意味します。 |
   | Storage, Bridge, VLAN | ディスクストレージ、NICブリッジ、および任意のVLANタグ（0はなしを意味します）。 |
   | CPU type | デフォルトで`host`。ノードのCPU世代が異なる場合は`x86-64-v2-AES`を使用します。 |
   | vmid from | 顧客VMに割り当てられる最初のVM ID（デフォルトは1000）。 |
   | Storage ISO, Storage backup | 使用する場合以外は空欄のままにします。空欄の場合、ISOおよびバックアップ機能は提供されません。 |
   | Template OS | 1行に1つ、`os-key=vmid`（例：`ubuntu-24.04=9000`）。 |
   | Pinned TLS fingerprint (SHA-256) | 最初のテストによって入力されます。クラスタ証明書を置き換えた後、クリアして再度テストしてください。 |

      ![サンプルノード、ストレージ、ブリッジ、OSテンプレートリストが表示されたClustersタブのCluster configurationカード](https://nexcmp.com/ja/docs/images/infrastructure/proxmox-03-cluster-config.webp)

5. オプション：上記のオプションBを使用した場合、**Create OS template from cloud image**（OSキー`ubuntu-24.04`、vmid `9000`、ノード`pve1`、qcow2イメージのURL）を入力し、**Create template**をクリックします。数分間バックグラウンドで実行され、結果は監査ログに記録されます。

      ![UbuntuイメージのサンプルURLが表示されたCreate OS template from cloud imageカード](https://nexcmp.com/ja/docs/images/infrastructure/proxmox-04-template-from-image.webp)

6. **Add pool**を**Cluster IP pool**内でクリックし、VMがアドレスを取得するプールを作成します:

   | 項目 | 入力例 |
   |---|---|
   | Name | `customers-1` |
   | CIDR | `198.51.100.0/24` |
   | Gateway | `198.51.100.1`（VMには絶対に割り当てられません） |
   | DNS | `1.1.1.1,8.8.8.8`（1〜4個のIPv4アドレス） |
   | Bridge, VLAN | `vmbr0`, `0` |
   | Already used IPs | 1行に1つ、`ip note`（例：`198.51.100.10 monitoring`） |

   NexCMPは、ネットワークアドレス、ブロードキャストアドレス、ゲートウェイ、または予約済みアドレスを割り当てることはありません。同じクラスタのプール同士が重複することはできません。プールは、そのアドレスが一つも使用されていない場合にのみ削除できます。

      ![/24の例とゲートウェイが入力されたIPプール追加ダイアログ](https://nexcmp.com/ja/docs/images/infrastructure/proxmox-05-ip-pool.webp)

7. **Attach cluster to zone**で、ゾーンと（オプションで）ノード名を選択し、**Attach to zone**をクリックします。クラスタはすでにVMを販売しているゾーンに参加するため、1つのゾーンにCloudStackとProxmoxを混在させることができます。新しいソースは**デフォルトでは販売されず**、既存プランの動作には影響しません。

      ![既存のゾーンが選択されたクラスタのゾーンへのアタッチカード](https://nexcmp.com/ja/docs/images/infrastructure/proxmox-06-attach-zone.webp)

8. **Services › Virtual Machines › Plans & pricing**を開き、**Add plan**をクリックします。**Infrastructure source**でProxmoxクラスタを選択し、CPU、RAM、ディスク、価格を設定します。ProxmoxプランにCloudStackオファリングは必要ありません。両方のソースから同じ構成を販売するには、プランで**Clone**を使用し、別のソースを選択します。プランのディスクはテンプレートのディスク以上の大きさでなければなりません。Proxmoxではディスクを縮小できないためです。


### 既存VMのインポート {#import-a-vm-that-already-exists}

**Servers**タブを開いて、クラスター上のVMを一覧表示します。**Import**は、既存のVMを料金発生なしでお客様アカウントに割り当てます。時間料金、停止中の時間、トラフィックのいずれも請求されません。お客様は起動、停止、再起動、コンソールのオープンを行えますが、削除はできません。削除できるのは管理者のみです。NexCMPはインポート中、クラスターからの読み取りのみを行います。

- クラスターは、そのVMの**ノード名**が設定されたゾーンに紐づけられている必要があります（ノードを空のままにすると、リージョンが設定されていないというエラーがレポートされます）。
- VMを**保護**状態にする（停止、再起動、再インストール、スナップショット復元、破棄、プラン変更が拒否されます）には、コマンドラインから`--protect`を使用してインポートします。

  ```bash
  sudo -u nexcmp /opt/nexcmp/bin/nexcmp px-import --provider pve-1 --server-ref pve1/101 --account-id 12 --hostname web-1 --protect
  ```



### Proxmoxでサポートされる機能とサポートされない機能 {#what-is-and-is-not-supported-on-proxmox}

| 機能 | Proxmox VE |
|---|---|
| 作成、電源オン/オフ/再起動、削除 | はい |
| CPUとRAMの変更、ディスクの拡張 | はい。ただし、VMを一度停止してから変更し、再起動します（ライブリサイズ不可） |
| Snapshots | はい（VMあたり最大5個）: 作成、一覧表示、復元、削除 |
| 再インストール | はい。テンプレートからVMが再構築され、ID、IP、設定が維持されたまま、新しいパスワードが設定されます |
| パスワードのリセット | はい。ゲストエージェント経由 |
| コンソール | はい。パネル経由でプロキシされるブラウザコンソール |
| メトリック | はい: CPU、メモリ、ネットワーク、ディスク |
| ISOマウント、バックアップ、ファイアウォール、IPv6、ポートフォワーディング、IP変更、追加ボリューム、Auto Scaling、DDoS Shield、VPC、帯域幅測定 | 利用できません。お客様のVMページには、ソース側で実行できない機能は表示されません。 |

## 確認 {#verify}

1. **Test connection**がOKを表示し、プロバイダーのステータスがアクティブになります。
2. **Clusters**にノードがオンラインとして表示され、ストレージとブリッジが確認できます。
3. **Cluster IP pool**に、空き、使用中、保留中の数が表示されます。
4. クラスターのアタッチ後、ゾーンのテンプレート（**Services › Virtual Machines › Template**）の下にOSキーが表示されます。
5. クラスターを使用するプランからテスト用VMを注文します。プールからアドレス、rootパスワード、動作するコンソールが割り当てられ、プール上の使用済みアドレスが1つ増加することを確認します。

## 制限と注意点 {#limits-and-notes}

::: tip ソース混在ゾーン
NexCMP 1.4.0 以降、CloudStack と Proxmox VE がゾーンを共有している場合でも、公開 Cloud Server 価格リストが機能するようになりました。各プランは独自の**Infrastructure source**を使用します。クラスターを接続した後、公開価格リストを確認し、ソースごとにテスト注文を行ってください。
:::

- 複数のProxmoxクラスターを追加できます。それぞれが1つのプロバイダーとなります。
- 1つのゾーンはデフォルトのソースを1つ提供します。独自の**Infrastructure source**を持つプランは、そのクラスターがアクティブであり、かつプランのゾーン内にある場合に限り、正確にそのクラスターにデプロイされます。
- CloudStackと同じゾーンの背後にあるクラスターは、CloudStack上のレガシープランを維持します。ローンチ前にエンドツーエンドで注文をテストしてください。
- APIトークンは閲覧できず、置き換えることのみ可能です。**Credentials**タブで置き換えてください：まずProxmoxで新しいトークンを作成し、それを入力して**Test connection**を実行してから、古いトークンを無効化します。
- テスト、同期、およびクラスター情報の各アクションは、管理者1人あたり1分間に6回までに制限されています。
- NexCMPはお客様への請求を行いますが、クラスターのハードウェアおよびライセンス費用はお客様の負担となります。


## トラブルシューティング {#troubleshooting}

| 症状 | 原因 | 対処法 |
|---|---|---|
| テスト: 「Key rejected (wrong access key / secret, or revoked)」またはHTTP 401/403 | トークンIDまたはシークレットが間違っているか、ACLがトークンにのみ付与されている | 2つの`pveum acl modify`コマンド（ユーザー**および**トークン）を再実行し、トークンIDが`user@realm!tokenid`であることを確認します。 |
| テスト：「プロバイダーに接続できませんでした」または「タイムアウトしました」 | ファイアウォール、または誤ったホストやポート | パネルサーバーから`https://host:8006`を確認します。 |
| テスト：「無効なエンドポイント、または許可リストに含まれていません」 | エンドポイントにパス、ユーザー、クエリが含まれているか、HTTPSではありません | 正確に`https://host:8006`を使用してください。 |
| 「クラスターのTLS証明書がピン留めされたフィンガープリントと一致しません」 | クラスター証明書が置き換えられました | Clustersタブの**Pinned TLS fingerprint**をクリアして保存し、**Test connection**を再度実行します。 |
| スラッグが拒否されました | a-z、0-9、ハイフン以外であるか、2〜32文字ではありません | `pve-1`のようなものを使用してください。 |
| 「トークンIDの形式: user@realm!tokenid と secret が必要です」 | トークンIDまたはシークレットがありません | 両方を入力します。シークレットは、トークン作成時に表示されたUUIDです。 |
| 「無効なテンプレート行: …」 | **Template OS**内の行が`key=vmid`ではありません | キーには英字、数字、`.`、`_`、`-`を使用し、vmidは100以上にします。 |
| 「OSキー: a-z 0-9 . _ - および vmid ≥ 100」 | **Create template**内の無効なキーまたはID | OSキーを修正し、使用されていないvmidを使用してください。 |
| テンプレート作成時の「vmid … はすでに存在します」 | vmidがすでに使用されています | 別のIDを選択してください。 |
| 「URLが内部アドレスを指しています」 | イメージURLが内部IPです | 公開URLを使用してください。名前はProxmoxによって解決されます。 |
| ダウンロード時にテンプレートタスクが失敗します | ストレージ `local` に `import` コンテンツがありません | `pvesm set local --content …,import,snippets`を実行してから再試行してください。ファイル名は `.qcow2`、`.raw`、`.vmdk`、`.ova`、または `.ovf` で終わる必要があります。 |
| 「クラスターにオンラインのノードがありません」または「ノード … はオンラインではありません」 | デフォルトノードが停止しているか、スペルが間違っています | **Default node**を修正するか、空のままにします。 |
| 「イメージがクラスターに属していません」 | プランのOSが **Template OS** にありません | リストにキーを追加して保存します。 |
| デプロイが待機状態になった後、クローン作成で失敗します | テンプレートVMが選択したノード上にありません | そのノード上でテンプレートを作成するか、**Default node**をテンプレートがあるノードに設定します。 |
| 顧客がrootとしてログインできません | イメージがrootログインをブロックしています | オプションAのようにテンプレートを再ビルドします。 |
| パスワードリセットが何も行われません | ゲスト内にゲストエージェントがありません | テンプレートに `qemu-guest-agent` をインストールして有効化します。 |
| 「名前、CIDR、およびゲートウェイは必須です」 | プールフィールドがありません | 3つすべて入力してください。 |
| プール作成時: 「プールと重複しています…」「ゲートウェイは範囲内（ネットワーク/ブロードキャストアドレス以外）である必要があります」または「cidr: ネットワークアドレスは…でなければなりません」 | プールが重複している、ゲートウェイが間違っている、またはCIDRがネットワーク境界上にありません | 空きレンジ、その中のゲートウェイ、およびネットワークアドレスとして記述されたCIDR（例： `198.51.100.0/24`）を使用します。 |
| インポート: 「リージョンが設定されていません」 | VMのノード名なしでクラスターがアタッチされています | ノード名を指定してクラスターをゾーンにアタッチします。 |
