🔧

DebianにProxmox VEをインストールする

に公開

DebianにProxmox VEをインストールしたので手順を記しておきます。

Proxmox VEにはOSごとインストールするISOイメージが用意されていますが、このインストーラはFDE ( Full Disk Encryption )に対応していません。そこでDebian 12をFDEでインストールし、その上にProxmoxをインストールすることにしました。

手順はInstall Proxmox VE on Debian 12 Bookwormに従いますが、一か所わかりにくい罠がありますのでその点についても説明します。

SSD割り当てのパーティション・プラン

最初に、Proxmox VEをインストールするシステムのSSDにどのようなパーティションを作るか計画する必要があります。

Proxmox VEは複数のVMを実行しますが、それらの仮想ディスクに空き領域までストレージを愚直に割り当てると、あっという間にディスク資源が枯渇します。そこでLVM-thinを使ったthin provisioningによってストレージを効率的に利用できます。これらを有効に行うために、インストールの前にパーティションの計画を立てるのです。

実際の考え方と作業については別稿の『Proxmox VEのSSD割り当てプラン』を参照してください。

Debianのインストール

これはインストーラの指示通りに普通に進めてください。私はCUIインストーラを使ってFDEインストールを行いました。GUIは要らないのでデスクトップ環境もインストールしていません。代わりにOpenSSHをインストールしています。

また、別稿『Linuxの暗号化解除をコンソール以外で行うためにClevis-TangとDropbaerを使う』で説明している方法でClevisとDropbearをインストールし、物理コンソールに張り付かなくてもLUKS暗号化ボリュームの暗号を解除できるようにしています。

Proxmox VEのインストール

インストール手順は公式サイトのInstall Proxmox VE on Debian 12 Bookwormに従います。

IPアドレスの固定化

次の項で説明する理由により、ホストのIPアドレスは固定でなければなりません。別稿『Netplanを使ってDebian/UbuntuのIPアドレスを固定にする』の手順に沿ってIPアドレスを固定にしてください。

Install直後のDebian 12もProxmox VE 8もNetworkManagerを使っているため、NetplanではなくNetworkManagerでIPアドレスを固定にします。

ポートの設定は/etc/netowork/interfacesで行います。

変更方法については別稿の『NetworkManagerを使ってDebian/UbuntuのIPアドレスを固定にする』を参照してください。

/etc/hostsの編集

最初に/etc/hostsを編集して、ホスト名からIPアドレスを引けるようにします。実はこの作業こそ私が躓いた部分です。mDNSを使うのだから/etc/hostsをいじる必要などあるまい思っていたのです。しかし、実際にはここを書き換えないとProxmox VEの管理WEBページが表示されません

ホスト名がfooで、mDNSを使ったドメイン名がfoo.local、IPアドレスが192.168.0.3の時、/etc/hostsを次のように変更します。

127.0.0.1          localhost
192.168.0.3        foo.local foo

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

ちなみに/etc/hostsを編集しない場合、systemctl status pveproxy.serviceのステータスは以下のようになります。

$ sudo systemctl status pveproxy.service
● pveproxy.service - PVE API Proxy Server
     Loaded: loaded (/lib/systemd/system/pveproxy.service; enabled; preset: enabled)
     Active: active (running) since Sat 2025-01-25 11:30:30 JST; 1h 22min ago
    Process: 5717 ExecStartPre=/usr/bin/pvecm updatecerts --silent (code=exited, status=111)
    Process: 5718 ExecStart=/usr/bin/pveproxy start (code=exited, status=0/SUCCESS)
   Main PID: 5719 (pveproxy)
      Tasks: 4 (limit: 38164)
     Memory: 154.5M
        CPU: 2min 4.964s
     CGroup: /system.slice/pveproxy.service
             ├─5719 pveproxy
             ├─9045 "pveproxy worker"
             ├─9046 "pveproxy worker"
             └─9047 "pveproxy worker"

Jan 25 12:52:31 physics pveproxy[5719]: worker 9043 finished
Jan 25 12:52:31 physics pveproxy[5719]: worker 9045 started
Jan 25 12:52:31 physics pveproxy[9044]: worker exit
Jan 25 12:52:31 physics pveproxy[9045]: /etc/pve/local/pve-ssl.key: failed to load local private key (key_file or key) at /u>
Jan 25 12:52:31 physics pveproxy[5719]: worker 9044 finished
Jan 25 12:52:31 physics pveproxy[5719]: starting 2 worker(s)
Jan 25 12:52:31 physics pveproxy[5719]: worker 9046 started
Jan 25 12:52:31 physics pveproxy[5719]: worker 9047 started
Jan 25 12:52:31 physics pveproxy[9046]: /etc/pve/local/pve-ssl.key: failed to load local private key (key_file or key) at /u>
Jan 25 12:52:31 physics pveproxy[9047]: /etc/pve/local/pve-ssl.key: failed to load local private key (key_file or key) at /u>
lines 1-25/25 (END)

/etc/pve/local/pve-ssl.key: failed to load local private key (key_file or key)というエラーメッセージがわかりにくいです。このエラーが出たときには/etc/hostsを疑ってください。

Proxmox VEリポジトリの設定

最初にProxmox VEのリポジトリを取得します。

echo "deb [arch=amd64] http://download.proxmox.com/debian/pve bookworm pve-no-subscription" | sudo tee /etc/apt/sources.list.d/pve-install-repo.list
sudo wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg 

次にaptを使ってアップデートし、インストール済みバイナリをアップグレードします。

sudo apt update && sudo apt full-upgrade

apt upgradeではなくapt full-upgradeを使うのは、次の節で説明するカーネルの入れ替えがあるからだと思われます。

Proxmox用カーネルの取得と再起動

Proxmox VEは汎用カーネルではなく専用カーネルで動作します。その専用カーネルを取得してインストールします。

sudo apt install proxmox-default-kernel

インストールしたら再起動します。Proxmox VE専用カーネルが使用されます。

sudo reboot

Proxmox VEのインストール

Proxmox VEをインストールします。

sudo apt install proxmox-ve postfix open-iscsi chrony

chronyはNTPパッケージです。Debian 12はデフォルトでNTPクライアントにsystemd-timesyncdを使用します。しかしながら、systemd-timesyncdにはクライアント機能しかありません。VMにNTPサービスを提供するうえでsystemd-timesyncdでは力不足であるため、NTPサーバー機能を持つchronyをインストールします。aptでchronyパッケージをインストールするとsystemd-timesyncdは自動的にディセーブルされます。

postfixはメールを送り出すエージェントプログラムであり、Proxmox VEが通知メッセージの送信を行う際に利用します。postfixの設定には大きなくくりがいくつかあるのですが、とりあえず何を選ぶにしてもあとでsudo dpkg-reconfigure postfixで変更できますのであまり気にしないで良いでしょう。わからないならとりあえずsmarthostにしておいて後で変更します。

不要なDebianカーネルの削除

Proxmox VE専用のカーネルをインストールしたため、もはや標準カーネルは不要です。削除してしまいます。

sudo apt remove linux-image-amd64 'linux-image-6.1*'

GRUBをアップデートします。

sudo update-grub

os-proberの削除

これはオプションです。他のOSとのデュアルブートのためにOS検出用のos-proberがインストールされています。無用な事故を防ぐために削除してしまいます。

sudo apt remove os-prober

インストール終了とブリッジおよびストレージの設定

以上でインストールは終わりです。ただし、作業は終わりではありません。ブリッジとストレージ設定が残っています。

Proxmox VEのディストリビューション・インストーラを使うとデフォルトのネットワーク・ブリッジであるvbmr0を自動的に作ってくれます。しかし、Debian上にProxmox VEをインストールするとこれはしてくれません。そこで自分でブリッジを設定する必要があります。

rootによるログイン

サーバーの8006番ポートにアクセスするとProxmox VEの管理WEBページ表示され、ログインが促されます。とりあえずの設定作業には、サーバーのrootアカウントでログインできます。

vmbr0を作る

vmbr0デフォルトのLinux Bridgeで、あとでVMを作るときにはProxmox VEホストの物理ネットワーク・ポートではなくブリッジにネットワークを接続します。必ず使う機能ですので今作っておきます。

最初に、管理画面左のServer Viewから Datacenter->サーバー名->System->Networkと選び、物理ネットワーク・ポート(下図の例ではeno1)を編集するために開きます。

そしてIPv4/CIDRGateway(IPv4)のフィールドの値をカットして空欄にします。空欄にし終わったら保存してください。

次にCreateボタンを押してLinux Bridgeを作ります。そうしてIPv4/CIDRGateway(IPv4)の欄に先ほどカットした値をペーストします。また、Bridge portsには物理ネットワーク・ポートの名前を設定します(この例ではeno1)。

全て設定が終わったらApply Configurationをクリックしてください。NetworkManagerが再起動して設定が適用されます。

VM仮想ディスク置き場とISO置き場の設定

インストール直後は、"local"ストレージに全てのユーザーデータを置くことになっています。

そこでProxmox VEを変更してVM仮想ディスク置き場とISO置き場を別に作ります。

具体的な方法については別稿の『Proxmox VEのSSD割り当てプラン』を参照してください。

ネットワーク関連の設定

Proxmox VE本体ではありませんが、ネットワーク関連の設定までしておくと安心かつ便利です。

ファイアーウォール

Proxmox VEにはVM間の設定まで含めた詳細な設定が可能なファイアーウォールがあります。しかし、インストール時点ではそこまで踏み込むのは荷が重いです。

そこで、Proxmox VEホスト(node)にufwでざっくりとした設定を行いました。

sudo ufw allow SSH
sudo ufw allow VNC
sudo ufw allow SMTP
sudo ufw allow Bonjour
sudo ufw allow 8006/tcp comment 'Proxmox WEB UI HTTP/1.1 over TLS'
sudo ufw allow 3128/tcp comment 'SPICE proxy'
sudo ufw allow 111/udp comment 'rpcbind'
sudo ufw allow 5405:5412/udp comment 'corosync cluster traffic'
sudo ufw allow 60000:60050/udp comment 'Proxmox VE live migration'
sudo ufw allow 41641/udp comment 'Tailscale'
sudo ufw allow 123/udp comment 'NTP'

Proxmox VE Administration GuideのPorts used by Proxmox VEを参考にしています。

メール転送

デフォルトのDebianはコンピュータ内のアカウント同士のメールやりとりにしか対応していません。

これではなにかと不便なので、各種メールをGmailを使って外に送ることができるようにします。

具体的な方法については別稿の『PostfixのリレーホストにGmailを使う』を参照してください。

履歴

  • 2025/Feb/16 : 静的IPアドレスの与え方を変更し、vmbr0の設定を追加しました。
  • 2025/Feb/22 : "VM仮想ディスク置き場とISO置き場の設定"、"SSD割り当てのパーティション・プラン"、"メール転送"を追加しました。
  • 2025/Mar/04 : 静的IPアドレスの与え方を外部ページに追い出しました。

Discussion