新しいソフトやAIの実行環境を、ちょっと試してみたい。最近はそう思うことが増えました。ただ、そのたびにVMを作り、OSを入れ、必要なソフトを準備するのが面倒でした。
そこで、ProxmoxにCodex専用の実験場所を作り、VMの作成からセットアップまで任せてみました。稼働中の重要なVMもあるので、専用のリソースプールを用意し、VMのディスクを置く領域も一般用と分けました。
使ってみた感想は、めちゃくちゃ楽でした。最初の権限設定などは自分で行いましたが、準備が整ってからは、Ubuntuを作ってRTX 3080 TiでOllamaを動かすところまで、ほぼ丸投げで進められました。
この記事では、2026年9月29日の構築記録をもとに、どこまで権限を渡したか、途中で何が足りなかったか、実際に自分で操作した部分をまとめます。
AIの実験をするたびにVMを作るのが面倒だった
AI関係は、試したいツールやモデルが次々と出てきます。既存の環境に全部入れるより、用途ごとにVMを用意して試したいと思っていました。
手元のProxmoxにはRTX 3080 Tiもあります。実験ごとにVMを分け、使うVMへ3080 Tiを割り当てる運用を考えました。1枚のGPUを複数のVMで同時に共有する方式ではありませんが、毎回メインの環境を作り直さずに試せるのは魅力でした。ProxmoxのPCIパススルーの説明
環境を分ける仕組みはProxmoxにある。それなら、面倒なVM作成やセットアップをCodexに任せられないか、というのが出発点でした。
重要なVMに触らせないために専用プールを作った
すでに重要なVMが動いていたので、Proxmox全体の管理権限を渡すつもりはありませんでした。一方、実験用のVMなら、Codexに構築や設定を任せて試してみたい。
そこで作ったのが、codex-labという専用のリソースプールです。
リソースプールは、VMなどの管理対象をまとめ、まとめた対象に権限を付けるために使えます。今回はCodexが扱う実験用VMをここに集めました。Proxmox公式のユーザー管理とリソースプール

準備したものは、次の組み合わせです。
| 用途 | 今回用意したもの |
|---|---|
| 仮想化環境 | Proxmox VE 9.2.2(Ubuntu構築時のAPI確認値) |
| 実験用VMをまとめる | 専用プール codex-lab |
| Proxmoxへ接続する | 専用ユーザー codex@pve とAPIトークン |
| VMのディスクを置く | 800GiBの専用ストレージ pve2-codex-hdd |
| VMの通信に使う | 利用するネットワークブリッジ vmbr0 |
既存の重要なVMはこのプールに入れず、既存VMの個別パスやProxmox全体の/にも管理権限を付けませんでした。ProxmoxホストへのSSHやroot権限も渡していません。
ただし、プールは権限をまとめる仕組みです。CPUやメモリ、ネットワークまで独立するわけではないので、実験用VMは小さめに作る方針にしました。今回はネットワークを別のVLANへ分離した構成でもありません。
VMの保存領域もCodex用と一般用に分けた
プールだけでなく、VMのディスクを保存する場所も分けました。ChatGPTに「ローカルHDDとNASのどちらを使うか」「容量をどう分けるか」を相談し、Proxmox2の3TB HDD内に、Codex用と一般用の領域をそれぞれ800GiBずつ用意しています。
具体的には、同じHDDのLVM領域に、VMの仮想ディスクを置くための「thin pool」を2つ作りました。Proxmoxには、次の名前で登録しています。
| 用途 | ストレージ名 | 確保した容量 |
|---|---|---|
| Codexが作る実験用VM | pve2-codex-hdd | 800GiB |
| 一般用のVM | pve2-general-hdd | 800GiB |
残りは後から必要な方へ追加できるよう、未割り当てで残しました。Codex用ユーザーにはpve2-codex-hddへの権限を付け、一般用のpve2-general-hddには付けていません。実験用VMの保存先を決めておくと、Codexにも「ここを使って」と指示しやすくなります。
この準備も、自分だけで設計したわけではありません。ChatGPTが出した手順を自分で実行し、lvsやpvesm statusの結果を貼って確認しながら進めました。その後、構成をCodexへ引き継ぎ、API接続とVM作成を任せています。
保存領域は分けていますが、物理的には同じHDDです。ディスクの故障や読み書きの負荷は共有します。
実際に渡した権限と接続方法
現在付けている権限
2026年10月5日に管理画面で確認した、専用ユーザーの権限は次のとおりです。
| 対象のパス | 付けたロール | 今回の用途 |
|---|---|---|
/pool/codex-lab | PVEAdmin、PVEPoolUser | 実験用プール内の管理 |
/storage/pve2-codex-hdd | PVEDatastoreAdmin | Codex用ストレージの管理 |
/sdn/zones/localnetwork | PVESDNUser | 今回のVMが使うブリッジの利用 |
/storage/codex-iso | CodexISOUser | ISO置き場の利用(後述) |
/mapping/pci/codex-3080ti | PVEMappingUser | GPUマッピングの利用(後述) |

プールにVMの権限を付けるだけでなく、ディスクの保存先やネットワークの利用権限も必要でした。上のパスや名前は今回の環境のものです。
初期構築の相談記録では、プールはPVEVMAdmin、ストレージはPVEDatastoreUserでした。10月5日時点では、上の表の、より広いロールになっています。今回の「権限を限定」は、権限を付ける対象を専用プール・ストレージ・ネットワーク・GPUマッピングに絞った、という意味です。ネットワークの利用権限はlocalnetwork単位で付けており、vmbr0だけに限定したACLではありません。
専用ユーザーのAPIトークンで操作した
Windows上のCodexから、専用ユーザーのAPIトークンを使ってProxmoxへ接続しました。CodexがPowerShellのAPI接続スクリプトと、Ubuntu構築に使うPythonの補助スクリプトを作成し、操作を進めています。
このときは、APIトークンの「Privilege Separation(権限分離)」をOFFにし、専用ユーザーと同じ権限を使う設定にしました。ユーザー自体を実験用途に限定し、権限設定をそちらにまとめた形です。
権限分離をONにする構成では、ユーザーとトークンの両方に権限を設定します。トークンで使えるのは両者に共通する権限です。APIトークンの権限についての公式説明
認証情報はVaultwardenで管理しました。Codex用のアカウントを用意し、必要な認証情報を入れたコレクションにアクセスできるようにして、Bitwarden CLIから読み出しています。
ここでも一度つまずきました。コレクションの閲覧権限が「パスワードを非表示」になっていたため、APIシークレットを取得できなかったのです。パスワードを表示できる閲覧権限へ直すと、Proxmoxへの認証が通りました。
まずOSなしの小さなVMで作成テストをした
最初からAI環境一式を頼む前に、空のVMを1台作り、専用プールとストレージを使えるか確認しました。
| 項目 | 作成テストの内容 |
|---|---|
| VM名 | codex-permission-test |
| プール | codex-lab |
| CPU | 1コア |
| メモリ | 1GiB |
| ディスク | 専用ストレージに8GiB |
| ISOと起動 | ISOなし、起動しない |
API経由でVMを作成でき、プールへの所属とディスクの保存先も確認できました。最初の段階ではOSを入れず、停止したまま残しています。
Codexへの指示では、使ってよいプール・ストレージ・ネットワークを指定し、権限エラーが出たらその場で止めて報告するようにしました。依頼内容を短くまとめると、次のような形です。
codex-lab内にテスト用VMを1台作ってください。
ディスクは指定した専用ストレージを使い、1コア・1GiB・8GiBにします。
ISOは付けず、起動もしないでください。
既存VM、Proxmoxホスト、権限設定は変更しないでください。
権限エラーが出たら、実行しようとした操作とエラーを報告してください。
作成後は、プール・保存先・VM設定を確認してください。
Ubuntu構築で足りなかったISOとGPUの権限
空VMの作成テストが済み、次はGPUを使うUbuntu用VMを作ることにしました。そこで追加の準備が必要になったのが、ISO置き場とGPUの使用権限です。
VM用のディスク置き場にはISOを保存できなかった
最初に用意したpve2-codex-hddは、VMのディスク用のLVM-thinストレージでした。ここにはインストール用のISOを置けず、既存のISO置き場にもCodexのアクセス権限がありませんでした。
そこで、ISO専用のディレクトリ型ストレージcodex-isoを自分で追加しました。そのストレージだけを対象に、次の権限をまとめたCodexISOUserというロールを付けています。
Datastore.Audit
Datastore.AllocateSpace
Datastore.AllocateTemplate
VMディスクの利用権限とは別に、ISOを扱う権限も準備したわけです。このISO置き場は既存ファイルシステム内のディレクトリなので、専用の容量上限を設けたものではありません。
UbuntuのISOは、最終的には別のProxmoxノードにあったものを自分でコピーしました。Codex側で進めていた公式サイトからのダウンロードが遅く、手元にあるISOを使った方が早そうだったためです。
GPUは人がマッピングを作りCodexには使用権限を渡した
RTX 3080 Tiについても、最初のトークンではGPUマッピングを作成・使用できませんでした。
ここは、自分でProxmoxの「データセンター → リソースマッピング → PCI」を開き、3080 Ti用のcodex-3080tiというマッピングを作りました。GPU本体と付属の音声機能をまとめています。

そのうえで、/mapping/pci/codex-3080tiにPVEMappingUserを付け、Codexがこのマッピングを使えるようにしました。マッピングを作成・変更する権限は渡していません。
GPUを渡す前の確認も人の作業がありました。Proxmoxホストで確認コマンドを実行して結果を渡し、モニターは3080 Ti側からマザーボード側の出力へ切り替えています。
ISO置き場とGPUの使用権限がそろったところで、CodexがUbuntu用VMを作り、GPUマッピングを割り当てました。その後、自分がISOをコピーし、CodexがUbuntuのインストールへ進みました。GPUパススルーの細かな設定と、後日出たIOMMUエラーの対処は、次のOllamaの記事にまとめています。

自分で操作したところとCodexに任せたところ
振り返ると、手作業が多かったのは、最初に実験場所を整える部分でした。
| 作業 | 担当 |
|---|---|
| 専用プール・ユーザー・権限の準備、HDD内のCodex用/一般用領域の作成 | 自分(ChatGPTに相談しながら実施) |
| Vaultwardenへの認証情報の保管とアクセス設定 | 自分 |
| 接続用スクリプトの作成、API接続と空VMの作成テスト | Codex |
| ISO置き場の追加、GPUの確認・映像出力の切り替え、マッピングと使用権限の設定 | 自分 |
| Ubuntu用VMの作成とGPUマッピングの割り当て | Codex |
| 別ノードにあったUbuntu ISOのコピー | 自分 |
| 自動インストール用メディアの作成、UbuntuのインストールとSSH鍵の設定 | Codex |
| NVIDIAドライバ・Ollama・モデルの導入と動作確認 | Codex |
最初は「手でやったのはGPUパススルーくらい」という印象でしたが、振り返ると、権限設定やISOの準備も自分で行っていました。それだけ、準備後のUbuntu内のセットアップは任せきりだったという感覚です。
できあがったVMは、Ubuntu 24.04.4、4 vCPU、メモリ8GiB、ディスク40GiBの構成です。RTX 3080 Tiを認識し、OllamaでQwen3 8Bが応答するところまで確認しています。
Proxmoxへの操作はAPI経由、できあがったUbuntu内の作業はSSH経由で進めました。Ubuntu内では管理作業を許可していますが、ProxmoxホストのSSH権限を渡したわけではありません。
まとめ:最初の準備が済むと実験がかなり楽になった
専用プールと保存領域を分け、権限を用意するところは手間がかかりました。そこもChatGPTに相談しながら進めています。途中でISO置き場やGPUの権限が足りないことも分かり、Codexの案内を見ながら自分で追加設定しました。
でも、環境が整ってからは本当に便利でした。3080 TiでOllamaを動かす実験も、VMの作成からOS・ソフトの導入まで、ほぼ丸投げで進められました。
重要なVMは自分で管理し、実験用のVMはCodexに任せる。自分には、この分け方が合っていました。試したいものが出てきたときに、毎回VMを手で作るところから始めなくてよくなったのが、一番大きかったです。

