HouseServerProj 2 台目のミニ PC を購入し自宅サーバ環境をアップデートする

はじめに

(HouseServer-2) MiniPC に Proxmox をインストールする で BMAX B4 に Proxmox をインストールしました。 このノートではインストールした Proxmox の初期設定を行います。

Proxmox VE Helper-Scripts で初期設定する

url: https://community-scripts.github.io/ProxmoxVE/
title: "Proxmox VE Helper-Scripts"
description: "The official website for the Proxmox VE Helper-Scripts (Community) Repository. Featuring over 300+ scripts to help you manage your Proxmox VE environment."
host: community-scripts.github.io
favicon: https://community-scripts.github.io/ProxmoxVE/favicon.ico
image: https://community-scripts.github.io/ProxmoxVE/defaultimg.png

Proxmox VE Helper-Scripts という Proxmox に関して設定を自動化してくれるスクリプト集プロジェクトがあります。 今回は post-pve-install というスクリプトをつかって、Enterprise ではなく個人の VE であることをなどを自動設定します。

https://community-scripts.github.io/ProxmoxVE/scripts?id=post-pve-install https://github.com/community-scripts/ProxmoxVE/blob/main/tools/pve/post-pve-install.sh

bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/pve/post-pve-install.sh)"

上記を proxmox の shell で実行します。

Imgur

上記スクリプトを実行することで、 enterprise... というポップアップが出なくなりました。

MFA を有効にする

https://qiita.com/yankee/items/1d576f7a25d6f33c6cb5

MFA を有効にします。

Imgur

Imgur

TOTP を利用して root User の 2FA を設定します。 2FA を設定していて思ったのですが ArcBrowser と Proxmox の相性が悪くウィンドウが反応しないことがあります。 Chrome だと正常に動作しました。なぜでしょう…。

Proxmox Server に SSH で接続できるようにする

こちらを参考に SSH で Proxmox Server にアクセスできるようにします。 https://qiita.com/yankee/items/495e80193070f6e70b65

初期設定の Proxmox VE Server は下記のように root アカウントのパスワードさえわかっていれば手元の macbook から SSH 接続できてしまいます。 これを SSH 公開鍵のアクセスのみ許容するようにしましょう。

 ssh root@192.168.11.101
The authenticity of host '192.168.11.101 (192.168.11.101)' can't be established.
ED25519 key fingerprint is SHA256:4qzBxOj9vKkhN4+f6Rsjeozr5hbHw4fmFZPcq7XoLmc.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.11.101' (ED25519) to the list of known hosts.
root@192.168.11.101's password:
Permission denied, please try again.
root@192.168.11.101's password:
Linux pve 6.8.12-11-pve #1 SMP PREEMPT_DYNAMIC PMX 6.8.12-11 (2025-05-22T09:39Z) x86_64
 
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
 
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Jul  6 17:51:00 2025
root@pve:~#
 

まずは macbook において、ssh-keygen で公開鍵と秘密鍵を生成します。

 ssh-keygen -t rsa -b 4096 -f ~/.ssh/proxmox_ve_key

続いて公開鍵を proxmox VE へ ssh-copy-id で送り込みましょう。 ssh-copy-id で公開鍵をリモートサーバに送り、かつリモートサーバの .ssh/authorized_keys に公開鍵を登録してくれます。

 ssh-copy-id -f -i ~/.ssh/proxmox_ve_key.pub root@192.168.11.101
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/Users/ganyariya/.ssh/proxmox_ve_key.pub"
root@192.168.11.101's password:
 
Number of key(s) added:        1
 
Now try logging into the machine, with: "ssh -i 'root@192.168.11.101'"
and check to make sure that only the key(s) you wanted were added.

最後に ~/.ssh/config に SSH ホスト名の設定を記載しましょう。 これで楽に SSH 接続ができます。

Host proxmox
  HostName 192.168.11.101
  User root
  IdentityFile ~/.ssh/proxmox_ve_key

ssh proxmox で SSH 接続できるようになりました。

最後にパスワード認証を無効化しましょう。 /etc/ssh/sshd_config で PasswordAuthentication を no にします。

/etc/ssh/sshd_config
PasswordAuthentication no

あとは systemctl restart ssh で SSH デーモンがリスタートされパスワード認証が許可されなくなります。

❯ ssh root@192.168.11.101
root@192.168.11.101: Permission denied (publickey).

mDNS を有効にする

root@pve:~# uname -n
pve

pve.local:8006 で Proxmox にアクセスできるようにしたいです。 そのため、 mDNS を有効化します。

systemd-networkd や systemd-resolved で mDNS を有効化できるようですが、今回は zeroconfig の avahi-daemon を利用しました。

https://www.nofuture.tv/using-mdns-with-systemd-resolved https://qiita.com/Galvalume29/items/80a9ba42012a80e86bca

apt install avahi-daemon
systemctl start avahi-daemon
systemctl enable avahi-daemon

上記のように avahi-daemon をインストールして、その後サービスを有効化します。 すると pve.local でローカル LAN で名前解決できるようになります。

Disk の仕組みを理解する & 必要であれば Disk 割り当てを調整する

Proxmox でどのようにディスクが扱われているかわかりませんでした。 そのためこちらを確認し、かつ必要であればディスクのパーティションなどを調整します。

Proxmox がインストールされているミニ PC には 512GB の SSD がアタッチされています。 この SSD について Proxmox 上で確認すると以下のようになっています。

  • Node pve
    • proxmox OS 自体が使用しているディスク容量: 11.25GB of 93.93GiB
    • Storage
      • local (pve)
        • 100GB
      • local-lvm (pve)
        • 374.54 GB

512GB のストレージが 2 つの LV に分割されているようです。 local (pve) は Proxmox OS 自体が利用するストレージ領域のようです。

Imgur Imgur

Imgur

Imgur

コマンドからディスクの仕組みを確認する

https://blog.future.ad.jp/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A60%E3%81%8B%E3%82%89%E5%AD%A6%E3%82%93%E3%81%A7%E3%81%BF%E3%81%9F%E3%83%91%E3%83%BC%E3%83%86%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%B3%E7%B7%A8 https://qiita.com/UKIUKI_ENGINEER/items/c7eece56b916d2a4afe9 https://zenn.dev/medopstech/articles/4841814d3791f6

Linux における Disk 操作について から参照できるようにリンクしておきます。)

Proxmox GUI 上から確認できたため、続いて実際に Proxmox OS の shell 上で確認します。 Claude に聞きながらまとめているため間違っている可能性があることにご注意ください。

lsblk (list block devices) でブロックデバイスの一覧を出力できます。 /dev/sda という物理的なブロックデバイスがあり、 SSD に相当します。 この /dev/sda が複数の物理的なパーティションに分割されており、それが /dev/sd{1,2,3} です。 どうやら /dev/sda{1,2} が UEFI 用のパーティションのようです。 そして、 /dev/sda{3}LVM 向けに展開されているパーティションのようです。

/dev/sda3 以下はすべて LogicalVolume 論理ボリュームに分割されています。 pve-swap が一時的なスワップ領域、 pve-root が Proxmox OS 自体に割り当てられているようです。

root@pve:~# lsblk -Api
NAME                                     MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
/dev/sda                                   8:0    0 476.9G  0 disk
|-/dev/sda1                                8:1    0  1007K  0 part
|-/dev/sda2                                8:2    0     1G  0 part /boot/efi
`-/dev/sda3                                8:3    0 475.9G  0 part
  |-/dev/mapper/pve-swap                 252:0    0     8G  0 lvm  [SWAP]
  |-/dev/mapper/pve-root                 252:1    0    96G  0 lvm  /
  |-/dev/mapper/pve-data_tmeta           252:2    0   3.6G  0 lvm
  | `-/dev/mapper/pve-data-tpool         252:4    0 348.8G  0 lvm
  |   |-/dev/mapper/pve-data             252:5    0 348.8G  1 lvm
  |   `-/dev/mapper/pve-vm--100--disk--0 252:6    0    32G  0 lvm
  `-/dev/mapper/pve-data_tdata           252:3    0 348.8G  0 lvm
    `-/dev/mapper/pve-data-tpool         252:4    0 348.8G  0 lvm
      |-/dev/mapper/pve-data             252:5    0 348.8G  1 lvm
      `-/dev/mapper/pve-vm--100--disk--0 252:6    0    32G  0 lvm
 

続いて /dev/sda3 の構成をさらに確認します。

物理ボリュームとしては /dev/sda3 が存在します。また、この /dev/sda3 は VG Name pve とあることから pve という論理ボリュームグループに割り当てられているようです。

root@pve:~# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda3
  VG Name               pve
  PV Size               <475.94 GiB / not usable <1.32 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              121840
  Free PE               4097
  Allocated PE          117743
  PV UUID               2XmxL5-aOmv-zv4t-ZzYH-IviQ-suvZ-p6LCJi
 

論理ボリュームグループ pve は全体サイズが 475.94GiB であることがわかります。

root@pve:~# vgdisplay  pve
  --- Volume group ---
  VG Name               pve
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  13
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                4
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <475.94 GiB
  PE Size               4.00 MiB
  Total PE              121840
  Alloc PE / Size       117743 / 459.93 GiB
  Free  PE / Size       4097 / 16.00 GiB
  VG UUID               Cu286Y-3p3h-b8K0-CtsF-UTLR-5eJc-37Q6O4
 

pve 論理ボリュームグループ内にある LV を確認します。 data が自由につかえる論理ボリュームであり、特定の LV Path に割り当てられていないようです。 対して root が Proxmox OS が利用するボリュームであり /dev/pve/root に割り当てられています。

root@pve:~#  lvdisplay pve
  --- Logical volume ---
  LV Name                data
  VG Name                pve
  LV UUID                F4mnWH-oPL4-2LHf-s6yd-FafZ-5B2I-sqjvZe
  LV Write Access        read/write (activated read only)
  LV Creation host, time proxmox, 2025-07-05 15:25:37 +0900
  LV Pool metadata       data_tmeta
  LV Pool data           data_tdata
  LV Status              available
  # open                 0
  LV Size                <348.82 GiB
  Allocated pool data    2.15%
  Allocated metadata     0.55%
  Current LE             89297
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:5
 
  --- Logical volume ---
  LV Path                /dev/pve/swap
  LV Name                swap
  VG Name                pve
  LV UUID                iIVX5S-VJGn-2atE-KZDX-qqXJ-9tGJ-w5snvD
  LV Write Access        read/write
  LV Creation host, time proxmox, 2025-07-05 15:25:29 +0900
  LV Status              available
  # open                 2
  LV Size                8.00 GiB
  Current LE             2048
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0
 
  --- Logical volume ---
  LV Path                /dev/pve/root
  LV Name                root
  VG Name                pve
  LV UUID                QfgF3p-kwBt-UWGb-Ndii-Wtnv-aZIy-fGKOCJ
  LV Write Access        read/write
  LV Creation host, time proxmox, 2025-07-05 15:25:29 +0900
  LV Status              available
  # open                 1
  LV Size                96.00 GiB
  Current LE             24576
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:1
 
  --- Logical volume ---
  LV Path                /dev/pve/vm-100-disk-0
  LV Name                vm-100-disk-0
  VG Name                pve
  LV UUID                CEfOy9-SCUO-UguE-qBAG-s5Wh-X6Eb-GkYE6b
  LV Write Access        read/write
  LV Creation host, time pve, 2025-07-05 16:07:15 +0900
  LV Pool name           data
  LV Status              available
  # open                 0
  LV Size                32.00 GiB
  Mapped size            23.42%
  Current LE             8192
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:6
 
root@pve:~# lvs  -o +devices
  LV            VG  Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert Devices
  data          pve twi-aotz-- <348.82g             2.15   0.55                             data_tdata(0)
  root          pve -wi-ao----   96.00g                                                     /dev/sda3(2048)
  swap          pve -wi-ao----    8.00g                                                     /dev/sda3(0)
  vm-100-disk-0 pve Vwi-a-tz--   32.00g data        23.42

/dev/pve/root がどのように Proxmox OS で利用されているのか気になったためさらに調べます。 Proxmox のファイルシステムにおいては /dev/mapper/pve-root という fs があり、 / ルートに配置されています。 そして、 これは内部的には /dev/pve/root の論理ボリューム root LV を指しています。

root@pve:/# df -Th
Filesystem           Type      Size  Used Avail Use% Mounted on
udev                 devtmpfs  7.7G     0  7.7G   0% /dev
tmpfs                tmpfs     1.6G  1.6M  1.6G   1% /run
/dev/mapper/pve-root ext4       94G   12G   78G  13% /
tmpfs                tmpfs     7.7G   34M  7.7G   1% /dev/shm
tmpfs                tmpfs     5.0M     0  5.0M   0% /run/lock
efivarfs             efivarfs  192K   85K  103K  46% /sys/firmware/efi/efivars
/dev/sda2            vfat     1022M   12M 1011M   2% /boot/efi
/dev/fuse            fuse      128M   20K  128M   1% /etc/pve
tmpfs                tmpfs     1.6G     0  1.6G   0% /run/user/0
root@pve:~# ls -la /dev/pve/root
lrwxrwxrwx 1 root root 7 Jul  6 17:49 /dev/pve/root -> ../dm-1
root@pve:~# ls -la /dev/mapper/pve-root
lrwxrwxrwx 1 root root 7 Jul  6 17:49 /dev/mapper/pve-root -> ../dm-1
 

df では「udev (マウント時の識別名; ディスクやパーティション)が /dev にマウントされ、 0% の使用量」という情報を確認できます。

ここで気になるのが /dev/mapper/pve-root/ にマウントされている、ということです。 再帰的に設定されてしまっていないか?というように感じてしまいます。 これをさらに詳しく見てみます。

/dev/mapper/pve-root はシンボリックリンクになっており、実態としては /dev/dm-1 にあります。 /dev/dm-1block special でありブロックデバイスです。 この /dev/dm-1/ にマウントされています。

よって、 /dev/dm-1 というブロックデバイスにファイルシステムが作成されており、それが / に配置されることで Proxmox の OS のファイルシステムが実現されています。 /dev/dm-1 ブロックデバイス自体に ext4 のファイルシステムが存在し、それを動的に / にマウントしていることに注意です。

root@pve:/dev/mapper# ls -la /dev/mapper/ | grep pve-root
lrwxrwxrwx  1 root root       7 Jul  6 17:49 pve-root -> ../dm-1
root@pve:/dev/mapper# file /dev/dm-1
/dev/dm-1: block special (252/1)
 

ここでさらに BIOS UEFI でどのように /dev/dm-1 を読み込んでいるのか、という疑問が湧きます。 というのも /dev/dm-1 を理解するには / ルートディレクトリを理解する必要がありますが、 / にアクセスするには /dev/dm-1 が必要になる、という鶏卵問題になるためです。 これについては initramfs という一時的なファイルシステムが最初に BIOS で / ルートディレクトリとして用意され、そこで /dev/dm-1 にアクセスするようです。 ブートの仕組みについてもっと詳しくならないとだめですね…。

https://qiita.com/dan-go/items/4b532133495325ca7388

root (proxmox) 用のディスク割り当てを 100 GB から 50 GB に縮小させようと思ったが無理だった

勉強がてら proxmox 用のディスク割り当てを 100 → 50GB に減らそうとおもいます。 /dev/sda3pve 論理ボリュームグループとして扱われ、そのなかに root のような論理ボリュームが作成されています。

root@pve:/dev/pve# lsblk
NAME                         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda                            8:0    0 476.9G  0 disk
|-sda1                         8:1    0  1007K  0 part
|-sda2                         8:2    0     1G  0 part /boot/efi
`-sda3                         8:3    0 475.9G  0 part
  |-pve-swap                 252:0    0     8G  0 lvm  [SWAP]
  |-pve-root                 252:1    0    96G  0 lvm  /
  |-pve-data_tmeta           252:2    0   3.6G  0 lvm
  | `-pve-data-tpool         252:4    0 348.8G  0 lvm
  |   |-pve-data             252:5    0 348.8G  1 lvm
  |   `-pve-vm--100--disk--0 252:6    0    32G  0 lvm
  `-pve-data_tdata           252:3    0 348.8G  0 lvm
    `-pve-data-tpool         252:4    0 348.8G  0 lvm
      |-pve-data             252:5    0 348.8G  1 lvm
      `-pve-vm--100--disk--0 252:6    0    32G  0 lvm

そのため、 root 論理ボリュームを縮小させればよいはずです。

https://qiita.com/TsutomuNakamura/items/93c6333c8dd32aeb197a

と思いましたが、システム起動中は LV の拡張はできても LV の縮小はできません。 Proxmox の root 論理ボリュームを縮小させるためにはどうやら LiveCD などで別の OS を起動させているうちにやらないといけなそうで面倒です。

今回は

  • 512GB の SSD はちゃんとすべて利用されている
    • Proxmox 用に 100GB
    • それ以外の VM / LXC 用に 512 - 100GB
  • LV, VG など、 LVM の仕組みがわかった ため、ボリュームの調整はなしにしようとおもいます。

気になった用語を調べる

ボリュームの調整はしないものの、ディスクまわりで調べていてわからないことが多かったため調べます。

local と local-lvm の違い

https://acoustype.com/2025/03/09/proxmox-ve-%E3%81%AE%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E6%A7%8B%E9%80%A0%E3%81%A8%E3%82%B9%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B8%E7%AE%A1%E7%90%86%E3%81%AE%E4%BB%95%E7%B5%84%E3%81%BF/ https://suzu-ha.com/entry/2024/02/10/000000

https://pve.proxmox.com/wiki/Storage:_Directory https://pve.proxmox.com/wiki/Storage

Proxmox UI 上にある locallocal-lvm の違いです。 local は Proxmox 自体が利用するストレージであり、 /var/lib/vz にマウントされているようです。 Type: Directory と表示されます。 また、 実態としては /dev/mapper/pve-root のブロックデバイス内のファイルシステムとして存在します。 Proxmox 自体のログファイルや、 VM/LXC 用の ISO Image 置き場として使えるようです。

local-lvm/dev/mapper/pve-data であり、 LVM の Thin Pool です。 Type: LVM-Thin と表示されます。 VM や LXC が利用するディスク・ストレージ、仮想マシンのバックアップディスクイメージなどが格納されます。 local のように直接 GUI から各内容をファイルシステム上で確認することはできません。

Imgur

https://zenn.dev/seiichihorie/articles/20250218-proxmox-disk-plan

Thin Provisioning

https://pve.proxmox.com/wiki/Storage https://www.fujitsu.com/jp/products/computing/storage/lib-f/tech/beginner/thinpro/ https://www.netapp.com/ja/blog/thin-provisioning/

ThinProvisioning は仮想的なストレージを物理ストレージを超えて認識させる技術です。 たとえば、物理ストレージとして 20GB しか残っていませんが、 VM からは 50GB 使える、と見せかけることができます。

多くの VM において、ストレージは 1, 2 割しか使えておらずそれ以外は剰余です。 そのため、実際に使った分だけ物理ストレージを確保することによって、同じ Disk を複数の VM にアタッチしかつそれぞれの VM からはフルフルの 200GB のようにみせかける、それによって総合 Disk 数を減らせる、というメリットがうまれます。 気をつけるべき点として物理ストレージの量は当然変わっていないため、VM からみたとき急に IO エラーになることがあります。VM 側では上限に達していませんが物理ストレージ側で上限に達する可能性があるためです。しきい値を事前に決めて上限に到達しそうになったら通知する、などを行う必要があります。

Proxmox をネストできるようにする

https://zenn.dev/seiichihorie/articles/20250219-proxmox-nested-virtualization https://izuminmin.com/network/proxmox-nest/

proxmox のクラスタ構成を試せるようにネストできるようにします。 上記の記事を参考にします。

Imgur https://gihyo.jp/dev/serial/01/vm_work/0005

Intel VT-x を有効にすることで、仮想 VM を作成できるようです。

ネスト仮想 VM も最初から作れる設定になっていました。

root@pve:~# cat /sys/module/kvm_intel/parameters/nested
Y

ここまでで事前設定は終了です。

Proxmox VM をつくるために ISO イメージをダウンロードします。 Imgur

Proxmox VM を立てます。

Imgur

CPU の設定で必ず host にしましょう。 host でないと動作しないようです。 画像を取り忘れました。

下記のようにインストール画面が出れば、あとは Proxmox のインストールを仮想 VM 上で再度行えばいいです。

Imgur Imgur

virtual-pve1.local & 192.168.11.201 を利用することにします。

無事 virutal-pve1 を開くことができました。 Imgur

まとめ

Proxmox の初期設定として以下を行いました。

  • Helper-Scripts で典型的な初期設定を終わらせる
    • シェルスクリプトのコレクション
  • ssh-copy-id を利用して SSH 接続できるようにする
  • 2 段階認証を設定する
  • Proxmox をネストできるようにする

また、新しい学びとして以下がありました。

  • Disk の知識もろもろ
    • LVM
    • LV, VG, PV
    • ブロックデバイス

次のノートでは Proxmox をマルチクラスタさせる、を行ってみます。 また、同じノートかは怪しいですが terraform で provisioning する、も行います。