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 で実行します。
上記スクリプトを実行することで、 enterprise...
というポップアップが出なくなりました。
MFA を有効にする
https://qiita.com/yankee/items/1d576f7a25d6f33c6cb5
MFA を有効にします。
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 にします。
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
- local (pve)
512GB のストレージが 2 つの LV に分割されているようです。 local (pve) は Proxmox OS 自体が利用するストレージ領域のようです。
コマンドからディスクの仕組みを確認する
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-1
は block 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/sda3
が pve
論理ボリュームグループとして扱われ、そのなかに 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 上にある local
と local-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 から各内容をファイルシステム上で確認することはできません。
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 のクラスタ構成を試せるようにネストできるようにします。 上記の記事を参考にします。
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 イメージをダウンロードします。
Proxmox VM を立てます。
CPU の設定で必ず host
にしましょう。 host
でないと動作しないようです。
画像を取り忘れました。
下記のようにインストール画面が出れば、あとは Proxmox のインストールを仮想 VM 上で再度行えばいいです。
virtual-pve1.local
& 192.168.11.201 を利用することにします。
無事 virutal-pve1 を開くことができました。
まとめ
Proxmox の初期設定として以下を行いました。
- Helper-Scripts で典型的な初期設定を終わらせる
- シェルスクリプトのコレクション
ssh-copy-id
を利用して SSH 接続できるようにする- 2 段階認証を設定する
- Proxmox をネストできるようにする
また、新しい学びとして以下がありました。
- Disk の知識もろもろ
- LVM
- LV, VG, PV
- ブロックデバイス
次のノートでは Proxmox をマルチクラスタさせる、を行ってみます。 また、同じノートかは怪しいですが terraform で provisioning する、も行います。