Multiverse Secure Lab(MSL) Setup for Proxmox by Zelogx™
Zelogx™ Multiverse Secure Lab Setup(MSL Setup)は、Proxmox 上に「L2 レベルで分離されたセキュアな開発ラボ」を構築するための、ソース公開型オートメーションフレームワークです。 Proxmox SDN、ファイアウォール(セキュリティグループ)、Pritunl VPN を組み合わせて、プロジェクトごとに分離された環境を自動構築します。
このリポジトリは、その Personal / Community Edition を提供します。
Hola! Enjoying your self-hosted stack? Why not offer a secure slice of it to your team? Refer to REAMME_en.md for English documents.
English version is here (README.md)
Official Web Site is here
概要
プロジェクトごとに完全に分離された L2 レベルの開発環境を構築し、VPN 経由で安全にアクセスできるようにします。 低コストの分散開発、オフショア案件、またはチーム向けプライベートラボのためのプラットフォームです。
1. 今回作ったものの超概要
開発環境をプロジェクトごとに完全隔離。VPN経由でチームに公開。 ローコスト分散開発、オフショア開発環境構築。
動機
課題: Proxmoxにおける「フラットネットワーク」の罠
VPN経由でチームメンバーにProxmoxの開発環境を共有しようとしたとき、よくある問題に直面しました。
- 可視性とプライバシーの衝突: 一般的なVPN構成だと見えすぎます。各メンバーには自分の案件VMだけを見せ、個人ラボや他社案件、ホスト基盤は見せたくありませんでした。
- 運用負荷: 複数ユーザー×複数案件のVPNプロファイルを手作業で発行・撤回・整理するのはスケールしません。手間が大きく、ミスも起きやすいです。
- 隔離ギャップ: Proxmoxは強力ですが、テナント間で本当のL2隔離を保ちつつVPNアクセスを簡単にするには、SDNとファイアウォールを手作りする必要があり、再現性のある運用が難しいです。
解決策: 「マルチバース」を作る
私が欲しかったのは次のようなツールでした。
- 案件ごとに安全に隔離された「バブル」(テナント)を作る
- そのバブルに専用VPNゲートウェイを接続する
- VPNプロファイル管理の面倒ごとを肩代わりする
見つかりませんでした。
そこで Zelogx MSL Setup を作りました。
Zelogxは1台のProxmox VEホストをマルチテナントのラボ提供基盤に変えます。対象は、インフラ全体を晒さずに特定リソースへ安全にアクセスさせたいエンジニアです。
アーキテクチャ
(詳細はリポジトリ内の高解像度ネットワーク図を参照してください)
+----------------+ +------------------+
| VPN Client | ----> | Cloudflare / |
| (Team Member) | | Internet |
+----------------+ +------------------+
| |
| VPN Tunnel (UDP/TCP) | Port Forwarding
v v
+=========================================================================+
| Proxmox VE Host (Physical Server) |
| |
| +----------------------------------------+ |
| | Pritunl VM (VPN Gateway) | |
| | [OpenVPN Servers] [WireGuard Servers]| |
| | | | | |
| +---------+------------------+-----------+ |
| | VPN Traffic (Decrypted) |
| v |
| +----------------------------------------+ |
| | SDN Zone: vpndmz (192.168.80.0/24) | |
| +----------------------------------------+ |
| | |
| | (Routing & Firewalling) |
| +=========v==============================+ |
| | Nftables / Proxmox SDN Engine | <-- "Multiverse" |
| | (L2/L3 Isolation Enforcement) | Enforcer |
| +=========+====================+=========+ |
| | | |
| +---------v-------+ +-------v-------+ +-------v-------+ |
| | Zone: devpj01 | | Zone: devpj02 | | Zone: devpjNN | |
| | [Isolated Lab] | | [Isolated Lab]| ... | [Isolated Lab]| |
| | 172.16.16.0/24 | | 172.16.17.0/24| | 172.16.xx.0/24| |
| +-----------------+ +---------------+ +---------------+ |
| | VM1 | VM2 | | VM1 | VM2 | | VMs... | |
| +-----+-----+ +-----+-----+ +--------+ |
| (🔒) (🔒) (🔒) |
+=========================================================================+
LEGEND: ---> Traffic Flow, [🔒] Isolated Project Environment
エンジニアリング原則
1. 実行時オーバーヘッドより事前構成
Zelogx MSL Setupは事前構成ツールとして設計しています。
- 常駐デーモンなし: SDNオブジェクト、隔離ルール、VPNゲートウェイは最初にまとめて構成します。
- 固定的なセキュリティ姿勢: セットアップ完了後は構成がProxmoxに“焼き込まれ”ます。実行時にクラッシュしたり、ドリフトしたり、新たな攻撃面になり得る「Zelogxサービス」は存在しません。
2. Proxmox標準機能のみで構成
「退屈な技術の力」を重視しています。
- 標準機能のみ: 使用するのはProxmox VEの標準コンポーネント(
pvesh、Proxmox SDN〔Simple/VLAN zones〕、組み込みnftables連携)です。 - アップデートに強い: 独自カーネルモジュールや外部ドライバは不要。Proxmoxの通常アップデートにそのまま追従できます。
3. Pritunl自動化(VPNプロビジョニング)
VPN側は公式Pritunl HTTP APIで完全自動化しています。
VPNセットアップ時にMSL Setupが行うこと:
- cloud-initでPritunl VMを起動
- Pritunlサービスが起動するまで待機
- VM内で設定されたPritunl API(key/secret)を使って次を実行
- 1つ以上のOrganizationを作成
- 必要なServer(OpenVPN / WireGuard)を作成
- OrganizationをServerに関連付け
- 構成したServerを起動
Web UIの自動操作は行いません。すべてドキュメント化されたREST APIでプロビジョニングします。
Proxmoxホスト側から見ると、Pritunl VMはブラックボックスのVPNゲートウェイとして扱われます。
- ルーティングと隔離はProxmox SDNとnftablesが担当
- PritunlのAPIはVM内部でトンネル終端とアクセス制御を定義するためだけに使用
セキュリティと設計上の選択(FAQ)
Q: VMホッピングは防げますか?
A: はい。ラボ(テナント)境界で隔離が強制されます。
- ラボ内: 同一ラボ内のVM同士は相互通信を許可します。アプリ/クラスター/サービスの現実的な検証に必要な自由度を確保します。
- ラボ間: Nftables + Proxmox SDN(“マルチバース・エンフォーサー”)が案件ゾーン間の通信を遮断します。
- ラボからホスト/管理系: VPNクライアントプールと上流ゲートウェイ以外へのフォワードはデフォルトで遮断。ホスト管理ネットワークや他ラボは不可視のままです。
Q: APIトークンと権限管理はどうしていますか?
A: Zelogx MSL SetupはProxmox APIのトークン認証を使いません。ノード上でローカル実行し、root権限のProxmox CLI(pveshなど)を使用します。
- なぜroot? SDNオブジェクト、ブリッジ、nftablesの設定はProxmox上のシステムレベル操作であり、特権が必須です。
- 設計上の選択: 追加のAPI面やトークンライフサイクルを持ち込まず、既存のProxmox権限モデルに依存します。変更内容は標準のProxmox SDN/Firew
1.1. この手順でできるもの(現場目線で)
Proxmox VEサーバ一台で
- プロジェクトごとにL2レベルで完全分離されたネットワークに開発用VM構築、プロジェクト別VPN付き開発環境が手に入ります。
- 既設(企業/家庭)LANは汚さないゼロトラスト構成。既存LANにはVPNトンネル、DNS問い合わせ以外のパケットは通りません。
- 分離されたPJごとの開発環境をVPNで安全にリモートチームメンバへ公開
- VPNクライアントユーザの所属、ユーザ管理、VPN接続クライアント証明書生成の自動化。GUI管理。配布も簡単。
- 各PJ毎のVPNサーバ(起動停止)もGUIから可能。VPNプロトコルはOpenVPNまたはWireguardを使用。
- VLAN対応機器は不要
- 【Corporate Edition 限定】 セルフケアポータル。これによりVPNクライアントも含むプロジェクトメンバが、自分たちのプロジェクトネットワーク内で自由にVMの作成・削除・起動・停止・スナップショット作成・バックアップ作成などを実施できるようになります。管理者の手を借りずに実現可能。
うんちく良いから早く構築方法教えてという方はこちら
1.2. この手順でできること(管理者・経営者目線で)
- 開発パートナー/オフショア/フリーランスにも必要な環境だけ見せて接続させる事でセキュリティ向上、他PJの情報漏洩問題を仕組みで回避
- 中小企業・ソフトハウス・スタートアップが自前のプライベート開発クラウドを持てる
- パブリッククラウドを開発者に自由に使用させるより安全で、速くて安い。(仕組みでしばりを入れられる)
- サーバ1台(NUCクラスのMini PC)+OSSだけでパブリッククラウドで数十万/月クラスの仮想環境を入手可能。クラウド費用ほぼゼロ、必要なのは開発用サーバ+電気代千円程度/月(Mini PCの場合)
- サーバさえあれば、ほぼ無償でセキュア分散開発環境、砂場(サンドボックス)環境、デモ環境、さらにはステージング環境が手に入る。
- この手の事を製品で行おうとすると以下のような機器の導入費、保守コスト(数百万、数千万~)が発生しこれらコストの削減が可能。多少語弊があるかもしれませんが参考までに。
参考:
| ベンダー/製品 | 領域・強み | 本セットアップとの比較 |
|---|---|---|
| Palo Alto Networks 「Prisma Access」など | SASE/ZTNA (Zero-Trust Network Access)をクラウド規模で提供。エンタープラISE向けに広範囲機能。 (cloudnuro.ai) | 巨大な構成・コスト高。自社ハイパーコンバージド/オンプレ重視環境には”オーバースペック” |
| Zscaler 「Zero Trust Exchange」 | 世界中にエッジを持ち、リモートユーザ/クラウドアクセスに強い。 (cloudnuro.ai) | オンプレ専用/仮想マルチテナントネットワークにはカスタマイズが必要。Proxmox+自前環境との親和性低め |
| Check Point Software Technologies+Perimeter 81 | ゼロトラストWAN/VPN置換ソリューションを買収展開。 (Wikipedia) | 大企業向け価格帯、設定・運用が複雑。小規模/中規模で”手軽に導入できる仮想マルチテナントVPN+開発環境隔離”構成では割高/難易度高い |
| StrongDM | インフラアクセス管理(SSH/RDP/データベース)に特化。 (Wikipedia) | ネットワーク全体隔離・仮想スイッチ階層・VPN+マルチテナント構成までは含まれない。君の構成がこの補完領域を突ける |
| JumpCloud | クラウドディレクトリ/リモートアクセス管理など幅広く。 (Wikipedia) | ネットワーク隔離・仮想ブリッジ・オンプレ仮想ハイパーバイザ深掘り構成までは標準ではカバーしていない |
1.3. 利用ソフトウェアのライセンス
Pritunl
- Pritunlは無料でご利用いただけます。追加機能をご利用いただくには月額サブスクリプションをオプションでご購入いただけます。エンタープライズライセンスはクラスター内のすべてのサーバーでご利用いただけます。サーバーごとに個別のライセンスは必要ありません。 参考URL:https://pritunl.com/
Proxmox VE
- PVE のソフトウェア本体はオープンソースで、GNU Affero General Public License v3 (AGPL v3) のもとでライセンスされています。Proxmox「ライセンス料」を課していない(=ソフト自体を使うための費用は発生しない)という立場が公式に示されています。Proxmox Forum
- ただし、「サブスクリプション(サポート契約)」は有償です。
1.4. 想定するターゲット
- うちはもう自由にAWSにインスタンス造らせて、高速分散開発環境構築してやらせてますから。という管理者層、経営層のかた。コストやセキュリティは?と聞かれると担当者にヘルプの視線をおくる管理・経営層の中小ソフトハウス。
- うちは自宅に開発・ラボ環境あるんで、そこでガンガンVM建てて開発してます。他のチームメンバ?それぞれ工夫してやってるんじゃないですか?
- 最近はWSLでWindows PCにLinux VM建ててやってますよ。PC落としたときのセキュリティ?Bitlockerで安全対策してます。的な。。。それぞれ異なる環境で開発。結合試験は時間かかる(笑)
- ラージエンプラでも、そうですね。サーバはサーバルームにあり、厳重に入退室管理。基本開発環境には個人情報入ってないです。個人とはNDAも結んでそこで縛り入れてます。勿論、VDIからしかログインできません。でもVMのrootパスワードは全部一緒。おかれてるセグメントも全部一緒だからログインしようと思えば?出来ちゃいますね笑。的な
- 同様にラージエンプラ。必要なプロジェクトは個別にVPN建ててますね。VMにログインできれば他のVMにも入れちゃう?確認してないですが、そんな事ないと思いますよ。これまでそういう事故は発生してません。セキュリティ教育も年2回実施してますし。
1.5. 必要性
ターゲットのところで記載してますが、さらに踏み込んで現場が気付いていないかもしれない課題の発掘。
1.5.1. パブリッククラウドの課題、ホームラボ環境の課題
開発環境をパブリッククラウドで行っている場合の典型的”あるある問題”
- まだVMに直接パブリックIPを振って直接SSHしてる
- パブリックIP持っちゃったために、まだペネトレーションテストもしてないWEBアプリケーションサーバが実は丸見え。
- 開発環境が他のプロジェクトメンバーに丸見え
- 影響範囲考えずに爆インスタンス生成
- データ転送で帯域死(死語?)
- 承認→見積→承認→構築…開発スピードとは?
- “検証用”と称して半年放置インスタンス
- 貧弱CPUインスタンスでビルド中に寝落ち
セキュリティリテラシーの低いアプリ開発者や”インフラわかってるつもりの人”が自由にクラウド触り続けてて大丈夫でしょうか? 彼らは悪気はない。求められる責任を果たすための”仕組み”が無いだけ。 その結果、コスト膨張、攻撃面増大、権限スパゲッティ、“一周回ってオンプレの方が安全だった”現象
また、ホームラボ環境を持っていて、その一部をチームメンバへ公開したいが、 家庭用LANと共存しており、家庭内LANのデータブリーチ、他社開発プロジェクトのVM丸見え問題が発生するため公開しない人。 簡単に晒せない。という悩みをお持ちの方も多いかと思います。
1.6. コスパ
例えば、AWS EC2 c5d.large (2vCPU) を例に比較をしてみよう。 今回の企画で使ったマシン:Intel NUC pro Core i7 1360P 12コア16スレッド、最大5.0GHz
| 項目 | AWS EC2 (c5d.large) | NUC上の2vCPU VM |
|---|---|---|
| 割り当て vCPU | 2 vCPU | 2 vCPU |
| 物理CPU | Xeon Platinum 8124M | Core i7-1360P |
| 物理CPU性能 | 18C/36T / max 3.5GHz | 12C/16T / max 5.0GHz |
| RAM | 4GB | 任意 |
| コスト | $89/月 (~13,000円) | 電気代 200円程度/月 (2vCPU相当) |
| ストレージ | EBS (別課金) | NVMeローカル (高速/低遅延) |
| ネットワーク課金 | 100GB超で課金 | 無し(ローカル) |
| 性能指標(2vCPU換算) | 基準 | ベンチ比 ~3.3〜3.5倍 |
参考 ベアメタルでのベンチマークスコア
| Bench | Score(8124M) | Score@1360P |
|---|---|---|
| PassMark single thread | 2.040 | 3.573 |
| PassMark CPU Mark | 22.287 | 20.824 |
| Geekbench 4 single core | 3.954 | 6.517 |
| Geekbench 4 multi core | 35.420 | 35.803 |
PassMark/Geekbench の シングルスレッド性能(1.65~1.7倍) × 2 vCPU の単純計算に基づく。
実際の本来マルチスレッド係数等、CPUキャッシュ性能等、メモリ帯域等により変動するが、 CPU性能として約3.3〜3.4倍の差が見られる。 なお、I/O性能はローカルNVMe PCIe4 x 4なので、こちらも爆上がり。
※ただしハイパーバイザーのオーバーヘッドは考慮してない。
1.7. リスク検討
パブリッククラウドを自前proxmoxサーバにした場合のリスクを想定してみました。
1.7.1. 想定リスク
- 物理サーバ故障:このリスクは残ります。が、自分でご使用のメーカー製ノートパソコン、数か月で壊れますか?
- 停電(ビルなどはビルメンテなどで、ホームラボならルンバがケーブルひっかけた!電子レンジとケトル同時使用でブレーカ落ちた!等の不慮の事故!)
- 空調。サーバの温度管理。
- BCP
- WiFiからの侵入
- 物理セキュリティ。つまりサーバルームへの入退室管理。
1.7.2. リスクヘッジ
- まず故障に関してはもう一台proxmoxを建てて、そこにProxmox Backup Server(PBS)を構築。いつでも故障から復帰。圧縮、重複排除バックアップなのでディスク使用率も低い。
- 停電に関して、注意すれば日本では事前の停電計画などにより、手動電源OFFで十分。瞬電や上記のような事故にまで備えたければ、UPSの導入。
- 空調、Intel NUCは35度まで24時間365日連続稼働が保証されてます。真夏、室温が40度超えるなどする場合は、夏の間だけでもエアコン付けましょう。また、定期的にAir dusterで埃の掃除してください。
- BCP、業務の継続運転は重要です。が、ここまでくるとクラウドとハイブリッド運用が必要です。S3へバックアップする機能もあるので、その辺は有償でコンサルします。
- WiFiからの侵入/物理セキュリティ。WPA3への切り替え検討。そもそも入退室が自由な会社は、そんな大事な環境作ってはいけません。
2. 構築手順 (Quickstart)
さて、ここからは具体的な構築手順です。 全部オープンなOSS構成で再現可能な手順を載せます。
2.1. 必要なもの
簡単に言うとProxmox VEが入った物理PC一台。 開発用VMを何台も実行することになるのであれば、メモリとディスク容量には余裕がある方が良いです。
構築に必要なHWとSWは全部これだけ
HW
- インターネットに接続しているルーター
- サーバ
- NUCなどのmini PCでも十分。
- パブリッククラウドのvCPUよりシングルコア性能が良いもの選ぶなら、12世代以降のCore i5位でも超余裕。あまり世代が低いと最大メモリ搭載量が減る。
- LLMなどを載せたい場合は、メモリを贅沢に載せられる、GPUを搭載可能なデスクトップも良いかもしれません。(ここではGPUパススルーの方法などは説明しません。)
SW
- Proxmox VE
- Pritunl
必要なパッケージ (セットアップスクリプトで自動インストール):
git- MSL Setupリポジトリ取得用ipcalc- ネットワークアドレス計算ユーティリティjq- JSON処理ツールzip- アーカイブ解凍ユーティリティqemu-guest-agent- Cloud-init完了検出wgetまたはcurl- Cloud-initイメージダウンロードsha256sum- イメージ整合性検証
Other
- サーバ用の固定IPアドレス
- Priutnl用の固定IPアドレス
2.2. ネットワークの検討
以下のネットワークアドレスの入力が必要となります。適切な設定を行う必要があります。
Proxmox VEが接続しているサブネットワーク以外にセグメントがないという場合には、a,b以外は重複がない限り以下の例のままでもよいかと思います。a,bは現在利用中のネットワークを指定すれば問題ありません。
(a) MainLan(vmbr0既設): (例:192.168.77.0/24 GW: .254)
- 会社・自宅ラボのメインのLANのネットワークアドレス。
- スマートスピーカーやTV, ゲーム機, 従業員, 家族のPC, スマホ, LAB用のVM(webサーバ, Cloudflare, nextcloud,samba, 個人用OpenVPN/Wireguard, Unbound DNSなど)などが接続されていると思いますが、各PJに分離されたVMからは、PVE Firewall, vnetにより完全に分離されるので、安全。
- 後続の「Pritunlのmainlan側のIP」がこのIPレンジ内でなくてはならない。
- インターネットルータの多くはLAN側IPにしかポート転送できないので、インターネットルータの直下のLANに接続してあることが望ましい。
(b) Proxmox PVEのmainlanのIP: (例:192.168.77.2)
- インターネットルータへのstatic route追加時、宛先IPとなる。(自動取得、表示用)
(c) vpndmzvn(新設): (例:192.168.80.0/24 GW: 192.168.80.1)
- VPNクライアントが各開発PJ用サブネットへアクセスするための経路
- 最低/30のネットワークアドレスが必要。
(d) クライアントへの配布IP: (例:192.168.81.0/24)
- wgとovpnで分けられる。例:
192.168.81.2-126/25,192.168.81.129-254/25 - これを更に「作成する開発用分離セグメントの作成数」で分割し/28とする。
- 各PJ用にVPNできるクライアント数は最大13人となる。オフショア分散開発などはもっと多目に確保するとよい。
(e) 作成する開発用分離セグメントの作成数(PJ数): (例:8)
- 最低2で2のn乗2,4,8,16などになっている必要がある。
- PJ数が8個の場合:PJ-IDは01-08で作成されます。セグメントもvnetpj01~vnetpj08で作成されます。
(f) 各PJ(vnetpjxx)に割り当てるネットワークアドレス(新設): (例:172.16.16.0/20)
- Project用セグメント。このIPレンジを「作成する開発用分離セグメントの作成数」で分割する。
- 例:vnetpjxxに割り当てるネットワークアドレスが
172.16.16.0/20、作成する開発用分離セグメントの作成数:8の場合、以下のように分割される - vnetpjxx内のVM群(
172.16.16.0/24)は、上記セグメント内で通信は自由。 - このVMへのFW設定はSecurity Group(SG)で制御される。
- Pritunlのorgに対応
(g) Pritunlのmainlan側のIP: (例:192.168.77.9)
- インターネットルータへのポートフォワード追加時の転送先IPとなる。
(h) Pritunlのvpndmzvn側のIP: (例:192.168.80.2)
- Pritunlのクライアントが各PJ用サブネットに出ていくときのサブネットです。最低/30あれば間に合いますがここでは大きく/24で取ってます。
(i) UDP ports
- 作成する開発用分離セグメントの作成数(PJ数) x 2 (OpenVPN+Wireguard分):(
合計16ポート 11856-11863, 15952-15959)
注意: ルーターによっては、ポートフォワードできる数に制限がある。Buffaloルータでは最大32個でした。なので、5を決める際にはルータの最大ポートフォーワード数も念頭に置いて決定すること。 また、IPoEでNDプロキシ/MAP-E/DS-Liteなどを使用している場合は使用できるポートに制限があるので、あらかじめ確認する必要がある。
2.3. Proxmox VE 9.0 インストール
本ドキュメントはPVE 9.0.11で動作の確認を取っております。 PVEには固定IPを振ってください。
2.4. Quickstart
rootでPVEへSSHログイン。
apt update -y
apt install -y git ipcalc jq zip
# Downloadしたzipファイルをscpなどで置いてください。
# Corporate editionの場合
unzip msl-setup-pro-1.x.x_corporate.zip # change x to correct version number
cd proxmox-msl-setup-1.x.x_corporate
# Personal editionの場合
git clone https://github.com/zelogx/msl-setup.git
cd msl-setup
# Phase 1: ネットワークセットアップ (設定確認 + SDN構築)
./01_networkSetup.sh jp # 言語: en|jp (省略時 en)
# これにより以下を順次実行:
# 1. 0101_checkConfigNetwork.sh - 対話的に .env を生成
# 2. 0102_setupNetwork.sh - SDN設定適用 (Zone/VNet/Subnet/IPSet/Firewall)
# Phase 1 完了後、ルーター設定を実施してください(ポートフォワード、静的ルート)
# Phase 1 終了時に表示される指示に従ってください
# Phase 2: VPN セットアップ (Pritunl VM 展開 + 設定)
./02_vpnSetup.sh jp # 言語: en|jp (デフォルトen)
# これにより以下を順次実行:
# 1. 0201_createPritunlVM.sh - Pritunl VM展開 (Ubuntu 24.04 LTS + cloud-init)
# - 既存VMインベントリ収集(監査証跡)
# - VMID自動割当(100から開始)
# - SSH鍵自動生成(存在しない場合)
# - Ubuntu 24.04 cloud-initイメージダウンロード(再利用可能キャッシュ)
# - 2-NIC VMを作成(vmbr0/MainLAN, vpndmzvn)
# - cloud-init経由で固定IP・ルート設定
# - ネットワーク設定をリモート検証
# 2. 0202_configurePritunl.sh - Pritunl サーバー、組織、ユーザー設定
# Phase 3 (Pro Corporate エディション専用): RBAC Self-Care ポータルセットアップ
./0203_setupSelfCarePortal.sh jp # 言語: en|jp (省略時 en)
# これにより以下を実行:
# 1. 現在の RBAC 状態をバックアップ(Pool、Group、User、ACL、Firewallルール)
# 2. 既存リソースとの ACL 競合を確認
# 3. ストレージデバイスの選択を促す(Project Pool に割り当てる)
# 4. NUM_PJ 個の Pool、管理グループ、ユーザーアカウントを作成
# 5. 各 Project の管理ユーザー用にランダムなパスワードを生成
# 6. Pool と SDN Zone の権限を Project グループに割り当て
# 7. VPN ユーザーが Proxmox GUI(ポート 8006)へアクセスするための Firewall ルールを追加
# 8. Project の認証情報(ユーザー名、パスワード)をテーブル形式で表示
# --restore オプション対応: すべての Project RBAC リソースを削除し、バックアップ状態に復元可能
#
# このフェーズを実行することで、VPN ユーザーを含むプロジェクトメンバが、自分たちの
# プロジェクトネットワーク内で自由に VM の作成・削除・起動・停止・スナップショット作成・
# バックアップ作成などを実施できるセルフサービス環境が整備されます。管理者の手を借りずに
# プロジェクト固有の開発リソースを管理できるようになります。
#
# **Pro Corporate エディション専用**: この機能は Pro Corporate エディションに含まれています。
# Community Edition のユーザーは、このフェーズはオプションであり、ユーザー/Pool の手動セットアップが必要です。
# (任意) MSLセットアップを完全にアンインストール
./99_uninstall.sh jp # 言語: en|jp (省略時 en)
# これにより以下を実行:
# 1. RBAC 設定を削除 (0203_setupSelfCarePortal.sh --restpreを呼び出し。Corporate editionのみ)
# 2. Pritunl VMを破棄 (0201_createPritunlVM.sh --destroy を呼び出し)
# 3. ネットワーク設定をバックアップ状態に復元 (0102_setupNetwork.sh --restore を呼び出し)
# 重要: アンインストール実行前に、vnetpjXXを使用している全VM/CTを削除するか、
# それらのNICを別のブリッジ(例: vmbr0)に付け替えてください
# デフォルトはNo - 実行には明示的な確認(y/yes)が必要です
引数ポリシー:
- スクリプトが受け付けるのは言語コード(en|jp)と —restore/—destroy のみ (対応スクリプトのみ)
- 不正な引数は英語usageを表示しエラー終了
- usageメッセージは英語のみ (仕様要求)
- ライブラリ (env_generator.sh, svg_generator.sh) は直接実行不可。直接叩くとusageを表示し終了
4. 既知の問題 (Known Issues)
- ネットワーク図のテーマ連動について
SVGベースのネットワーク図の配色は、ProxmoxのGUIテーマ(Light/Dark)には連動しません。
代わりに、OS/ブラウザ側のprefers-color-scheme設定に従って描画されます。
そのため、OSやブラウザがライトテーマの場合は、Proxmox GUIをダークテーマにしていても図はライトテーマ相当の配色で表示される場合があります(その逆も同様です)。
5. あとがき
適切に設計されたパブリッククラウドは強いし、 冗長電源、空調、マルチAZ、SLA、責任分界、フィジカルセキュリティ…など叶わない点はあります。 ある意味自由を奪ってセキュリティとコストの自由度を担保してみた結果、こうなったという一例です。
なお、この記事は家庭LABおじさんも出来るレベルで記載してますが、中小ソフトハウス、少人数SaaS開発、SIer、SES会社向けです。