Proxmox VEでホームラボを構築する:初心者向け実践ガイド

HomeLab tutorial - IT technology blog
HomeLab tutorial - IT technology blog

問題:本番環境では練習できない

初めてのジュニアシスアドやDevOpsの仕事に就いた。チームはKubernetes、Docker、Linuxネットワーキング、ファイアウォールルールを当然の知識として話している。でも、実際のサーバーに触ったことはない。練習したいけど、本番環境で実験するわけにはいかない——コマンドを一つ間違えれば、金曜日の午後2時にウェブサイトをダウンさせた張本人になってしまう。

よく言われる解決策は、AWSやGCPでクラウドVMを立ち上げることだ。それでも構わないが、費用は思った以上に早く膨らむ。うっかり起動したままのインスタンスが積み重なると、月に4,000〜8,000円の請求が届く——2回しか使っていないサンドボックスのために。しかも、本当の自信を育てるハードウェア・ネットワーク・ストレージの感覚は身につかない。

本当に必要なのはホームラボだ——壊しても、作り直しても、結果を恐れずに学べる、自分だけの物理インフラ。

根本原因:手軽で安価なインフラへのアクセスがない

壁は知識ではなく、アクセスの問題だ。複数のOSを同時に動かすには、かつてはエンタープライズハードウェアを買うか、毎月クラウド予算を消耗するしかなかった。ほとんどのチュートリアルは、地下室にサーバーラックがすでにあることを前提にしている。

多くの人が見落としていることがある。それほど多くのハードウェアは必要ないということだ。古いデスクトップ1台やeBayで購入した中古ワークステーション1台で、5〜10台の仮想マシンを同時に快適に動かせる。1万円以下の完全なラボ環境になる。

足りていないのは適切なハイパーバイザー——1台の物理マシンを複数の仮想マシンとして機能させるソフトウェアだ。

選択肢を比較する

ホームラボの仮想化にはいくつかのアプローチがある。正直な比較を紹介しよう:

VMware Workstation / VirtualBox(デスクトップハイパーバイザー)

これらは既存のOS(WindowsまたはLinux)の上で動作する。始めやすいが、デスクトップのリソースを消費し、メインOSなしではヘッドレス動作ができない。また、本番環境の実際の動作とも異なる。最初の実験には向いているが、本格的なラボ練習には不向きだ。

VMware ESXi(ベアメタル、エンタープライズ向け)

ESXiは多くの企業が採用している。ホストOSなしでハードウェアに直接インストールする。問題は、コストが高く、2023年のBroadcomによる買収以降VMwareのライセンスが複雑化し、コミュニティサポートも急速に縮小していることだ。ホームラボには不向きな選択肢だ。

Proxmox VE(ベアメタル、オープンソース)

Proxmox Virtual EnvironmentはDebian Linuxをベースに構築された、無料のオープンソースType-1ハイパーバイザーだ。KVM仮想マシン(フルVM)とLXCコンテナの両方をサポートし、クリーンなWeb UIを搭載、数万人のメンバーが参加する活発なコミュニティフォーラムも持つ。ストレージ、ネットワーク、バックアップ、クラスタリング——すべてブラウザから管理できる。

これが私の採用しているアプローチだ。私のラボは16GB RAMを搭載した10年物のDell OptiPlexで1年以上稼働し続けており、重い負荷テスト時でも安定している。同じ構成で、ファイアウォールルール、リバースプロキシ、マルチノードKubernetesクラスターなど、本番相当の構成も扱えている。

最善のアプローチ:ベアメタルにProxmox VEをインストールする

ハードウェア要件

始めるのに必要なものは少ない:

  • 仮想化サポート付きのx86-64 CPU(Intel VT-xまたはAMD-V)
  • 最低8GB RAM(16GB以上推奨)
  • 最低64GBのストレージ(SSD推奨)
  • 有線イーサネット接続

CPUが仮想化をサポートしているか確認しよう:

grep -E 'vmx|svm' /proc/cpuinfo | head -5

vmx(Intel)またはsvm(AMD)が出力に表示されれば、準備完了だ。

ステップ1:インストーラーをダウンロードして作成する

公式サイト(proxmox.com/downloads)から最新のProxmox VE ISOをダウンロードしよう。次にBalena Etcherを使ってUSBドライブに書き込むか、Linux上でddを使う:

# まずUSBデバイスを確認する
lsblk

# ISOを書き込む(/dev/sdXをUSBデバイスのパスに置き換える)
sudo dd if=proxmox-ve_8.x-1.iso of=/dev/sdX bs=4M status=progress && sync

警告:デバイスパスを必ず確認すること。ddは指定したデバイスの内容を確認なしに上書きする——確認プロンプトもなく、元に戻せない。

ステップ2:Proxmox VEをインストールする

USBから起動し、グラフィカルインストーラーの指示に従う。インストール時の重要な選択項目:

  • 対象ディスク:Proxmox OS自体のインストール先SSDまたはHDDを選択する
  • 国・タイムゾーン:正しく設定すること——NTP同期に影響する
  • パスワードとメール:Web UIのrootログインに使用する
  • ネットワーク設定:静的IPを設定する。192.168.1.100のようなアドレスが使いやすい。ルーターのDHCP範囲外のIPを選んで競合を避けること

インストールは約5分で完了する。終わったらUSBを抜いてシステムを再起動させよう。

ステップ3:Webインターフェースにアクセスする

ネットワーク上の任意のブラウザから次のURLにアクセスしよう:

https://192.168.1.100:8006

証明書の警告が表示されるが、これは想定内——自己署名証明書だ。承認してユーザー名rootとインストール時に設定したパスワードでログインしよう。

ステップ4:サブスクリプション通知を削除する

Proxmoxは無料で使えるが、ログインのたびにサブスクリプションを促すダイアログが表示される。それを消すには、Proxmoxシェル(Web UIのNode → Shellから開く)で以下を実行しよう:

sed -i.backup "s/data.status !== 'Active'/false/g" \
  /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js

# 変更を反映させるためWebサービスを再起動する
systemctl restart pveproxy

機能には一切影響しない——ポップアップを削除するだけだ。

ステップ5:サブスクリプションなしでProxmoxをアップデートする

デフォルトでは、Proxmoxは有料サブスクリプションが必要なエンタープライズリポジトリを参照している。無料のコミュニティリポジトリに切り替えよう:

# エンタープライズリポジトリを無効化する
echo "# 無効化済み" > /etc/apt/sources.list.d/pve-enterprise.list

# 無料のコミュニティリポジトリを追加する
echo "deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription" \
  > /etc/apt/sources.list.d/pve-community.list

# アップデートとアップグレードを実行する
apt update && apt full-upgrade -y

ステップ6:ISOをアップロードして最初のVMを作成する

ローカルマシンにUbuntu Server ISOをダウンロードし、Proxmoxにアップロードしよう:

  1. 左パネルでストレージ(通常はlocal)を選択する
  2. ISO Images → Uploadをクリックする
  3. ダウンロードしたISOを選択する

次にVMを作成しよう:

  1. 右上のCreate VMをクリックする
  2. VM IDと名前を設定する(例:101 ubuntu-test
  3. アップロードしたISOをブートメディアとして選択する
  4. ディスクサイズを設定する(テスト用なら20GBで十分)
  5. CPUコア数(2)とRAM(2048 MB)を割り当てる
  6. 確認してVMを起動する

左パネルでVMをクリックし、Consoleタブを開けば、物理スクリーンと同じように操作できる。

ステップ7:軽量サービス向けにLXCコンテナを試す

LXCコンテナはフルVMよりはるかに軽量だ。ホストカーネルを共有し、5秒以内に起動し、RAMの使用量もわずかで済む。Nginx、Pi-hole、小規模データベースなどのサービスに最適——それぞれに専用VMを用意する必要がない。

# Proxmoxシェルからコンテナテンプレートを取得する
pveam update
pveam available | grep ubuntu

# Ubuntu 22.04 LXCテンプレートをダウンロードする
pveam download local ubuntu-22.04-standard_22.04-1_amd64.tar.zst

次にWeb UIのCreate CTからそのテンプレートを選んでコンテナを作成する。同じワークロードを動かすフルVMが1〜2GBのRAMを必要とするのに対し、512MB未満のRAMでフル機能のUbuntu環境が使えるようになる。

ラボで構築するもの

Proxmoxが動き始めたら、実際の就職面接や日常のシスアド業務に直結するプロジェクトを紹介しよう:

  • Nginxリバースプロキシ VM ——ルーティング、SSL終端、バーチャルホストを練習する
  • Dockerホスト VM ——コンテナのデプロイ、Composeファイルの作成、ネットワーキングを練習する
  • Ansibleコントロールノード ——他のVMへの構成管理を自動化する
  • pfSense/OPNsense VM ——ファイアウォールルール、VLAN、ネットワークセグメンテーションを学ぶ
  • Kubernetesクラスター ——kubeadmまたはk3sを使って3台のVMでK8sクラスターを構築する

スナップショットが安全網になる。リスクのある操作の前に必ず取得しよう。何か壊れても、約10秒でクリーンな状態に戻れる。

まとめ

Proxmox上のホームラボは、中古PCと半日のセットアップという費用で、本番グレードのインフラを実際に触れる体験を提供してくれる。ミスしても構わない環境では学びが速く、このセットアップはまさにそのために設計されている。

古いマシン1台から始めよう。Proxmoxをインストールし、2〜3台のVMを立ち上げる。それだけが入り口——そしてチュートリアルを眺めるだけの受け身の学習から、実際に何かを作る段階へ移行するには十分だ。

Share: