Raspberry Pi 4 で Proxmox 8 を動かした手順

年度末に時間できたのでラズパイでProxmox動かしました。
手順を記録として残しておきます。
間違いや説明不足があったら、ご指摘いただけると助かります。

## 用意した機材
- Raspberry Pi 4 4GBか8GBモデル（以下Pi4）
- USB接続のSSD
- キーボード
- モニタ
- 別のPC　…　OSを書き込んだり、困ったときに調べる用

## 事前準備
1. Raspberry pi Imagerを使い、`Raspberry pi OS 64bit Lite`を書き込む
書き込み時にカスタマイズできるホスト名、ユーザー、ロケールなどは、後からでも設定できます。自分は後からやりました。
2. Pi4にキーボード、モニタ、SSDを接続
【注意】SSDは**USB2.0**端子に接続。USB3.0でブートできないSSDがあるため。後から対処
3. 電源投入して、初期設定
    - キーボード配列の設定　…　デフォルトがUKなのでUSかJPへ
    - ユーザー名とパスワードの設定
0. rootユーザーのパスワード設定
    - `sudo su -`
    - `passwd`でパスワードを設定。新パスワード、新パスワードの確認と2回入力する
※ここでrootユーザーのパスワードを設定するのは、Proxmox導入後のブラウザ接続時にrootユーザーでしかログインできないため

<details><summary>(必要なら)コンソールのフォントを大型化</summary>

参考：[Ubuntu Serverのコンソールフォントを変更する方法](https://news.mynavi.jp/techplus/article/20180508-ubuntu_fontchange/)
- `sudo dpkg reconfigure console-setup`
- "Encoding to use on the console"は`UTF-8`のままEnter
- "Please choose the character set..."もデフォルトのままEnter
- "Font for the console:"は`Terminus`をカーソルで選んでEnter
- "Font size:"は一番下`16x32 (framebuffer only)`をカーソルで選んでEnter
</details>

<details><summary>(必要なら)sshを有効化</summary>

- `sudo raspi-config`
- "3 Interface Options" → "I1 SSH" → "Would you like the SSH server to be enabled?" →`<YES>`を選択
- `sudo reboot`でラズパイを再起動
- ログインしてから`ip a`でIPアドレスを確認
- 以降、コピペなどの作業はSSHで行ったほうが簡単
</details>

<details><summary>(必要なら)SSDに関する設定変更</summary>

- `lsusb`で接続をチェック
今回の結果は以下
```
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 0a81:0205 Chesen Electronics Corp. PS/2 Keyboard+Mouse Adapter
Bus 001 Device 003: ID 152d:0578 JMicron Technology Corp. / JMicron USA Technology Corp. JMS578 SATA 6Gb/s
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
```
- JMicronのUSB-SATA変換チップはPi4のUSB3.0だとうまくブートできなかったので以下の作業
    - `sudo vi /boot/firmware/cmdline.txt`
    - 行末に` usb-storage.quirks=152d:0578:u`を追記（`152d:0578`はlsusbで確認した値）
    - `shutdown -h now`でシャットダウン、電源を抜いて電源OFF、SSDをUSB3.0に差し替えてブートするかチェック
参考：[Raspberry Pi 4でUSB3.0接続のSSDがとても遅い
](https://signal-flag-z.blogspot.com/2020/03/raspberry-pi-4usb30ssd.html)
</details>

## Proxmox インストール作業
1. Proxmoxのインストール
参考： [Proxmox 8 auf dem Raspberry Pi 4 installieren](https://www.bachmann-lan.de/proxmox-8-auf-dem-raspberry-pi-4-installieren/)
参考： [Proxmox-Arm64/wiki](https://github.com/jiangcuo/Proxmox-Arm64/wiki/Install-Proxmox-VE-on-Debian-bullseye)
    - `/etc/hosts`に割り当てたいIPアドレスとホスト名を記入。
今回は`192.168.1.233 pimox8-8`とした
    - `/etc/hostname`にホスト名を記入
    - `reboot`で再起動。設定変更を反映。hostsを書き換えただけでは実際のIPは変わらないので注意
    - コピペが多いのでSSHで接続
    - `sudo su -`入力。以降をrootユーザーとして処理
        - `apt install -y wget curl htop lsof ethtool ifupdown2`でツールを追加。実際にはifupdown2とlsofが追加され、ほかは導入済みとなるはず。
        - `curl https://global.mirrors.apqa.cn/proxmox/debian/pveport.gpg -o /etc/apt/trusted.gpg.d/pveport.gpg`で追加するレポジトリのキーを取得。このあたりはProxmox-Arm64/wikiの記述そのまま
        - `echo "deb [arch=arm64] https://global.mirrors.apqa.cn/proxmox/debian/pve bookworm port">/etc/apt/sources.list.d/pveport.list`で参照するレポジトリを追加。wikiから2点変更
            - `[arch=arm64]`を追記
            - `bullseye`を`bookworm`に置き換え
        - `apt update`
        - `apt full-upgrade`でifupdown2が更新
        - `apt install proxmox-ve postfix open-iscsi`を実行。2024年3月末時点で480個のパッケージを取得、2050MBぐらいDL
            - 開始前にエラーメッセージが大量に出た場合はpveport.listの記載ミスを確認。bullseyeのままだと依存性が解決できないため、エラーが大量に出てくる
        - postfixの設定画面で"General mail configuration type:"を聞かれるので`Local only`を選択。メールネーム名の設定もそのままOKして進める
        - 最後の方で以下のような確認が出てくる
        ```
        Configuration file '/etc/apt/sources.list.d/pveport.list'
        ==> File on system created by you or by a script.
        ==> File also in package provided by package maintainer.
         What would you like to do about it ?  Your options are:
         Y or I  : install the package maintainer's version
         N or O  : keep your currently-installed version
          D     : show the differences between the versions
          Z     : start a shell to examine the situation
        The default action is to keep your current version.
        *** pveport.list (Y/I/N/O/D/Z) [default=N] ? 
        ```
        - `D`で差分を取ると`[arch=arm64]`を削除しようとしている。`N`で進めてOK
        ```
        *** pveport.list (Y/I/N/O/D/Z) [default=N] ? D
        --- /etc/apt/sources.list.d/pveport.list        2024-03-31 00:50:06.891388000 +0000
        +++ /etc/apt/sources.list.d/pveport.list.dpkg-new       2024-03-22 10:54:28.000000000 +0000
        @@ -1 +1 @@
        -deb [arch=arm64] https://global.mirrors.apqa.cn/proxmox/debian/pve bookworm port
        +deb https://mirrors.apqa.cn/proxmox/debian/pve bookworm port
        ```
        - `reboot`で再起動

## 再起動後の追加設定
実はこの段階だとIPアドレスが書き換わっていない。
ブリッジの設定追加が必要
- コンソールへログイン
- `ip a`でIPアドレスを確認。今回は`192.168.1.15`の前提で説明
- 別PCのブラウザで`https://192.168.1.15:8006/`
- 左ペインServerViewからホスト名（今回はpimox8-8）![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/288193/8c2eba71-e53a-8aa6-4d63-def8787fa5f3.png)
- 中央からNetwork、CreateボタンからプルダウンLinux Bridge![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/288193/0bd709bb-ebbc-f1ec-91b0-cd6debe14a72.png)
- ダイアログが出てくるので入力。完了したらOK
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/288193/f0b96f56-fb22-3656-fc7e-8b8b3e0f63d9.png)
    - IPv4/CIDR: IPアドレスとサブネットマスク。割り当てたいIPである`192.168.1.233`とサブネットマスク`/24`を入力
    - Gateway(IPv4)：デフォルトゲートウェイ。今回は`192.168.1.1`
    - Bridge ports: どのポートへブリッジするかの選択。`eth0`を入力
- 変更の保留が表![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/288193/3c6a0183-7ec4-ea74-4ee7-ffef3d7db574.png)
- Apply Configurationクリック。確認ダイアログはYes
- 設定反映後、SSHやブラウザで接続できなくなる。IPアドレスが変更されたため正常動作
- 念のためPi4のコンソールで再起動
- 再起動後にブラウザからログインできればOK

## 追加設定2：スワップの拡大
デフォルトだとスワップが100MBしか設定されていない。メモリが足りなくなったときの保険としてスワップファイルを拡大する
- 別PCからProxmoxへログイン
- Server View→ホスト名→Shell![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/288193/e36f6090-5cb4-9a7c-eadf-b2e8c646304a.png)
- `vi /etc/dphys-swapfile`
- CONF_SWAPSIZEを8192（＝8GB）に書き換えて保存![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/288193/e175b192-588f-5928-0db6-2dd94d87aceb.png)
- `systemctl restart dphys-swapfile`で設定を反映
- 設定後の画面。8GBを設定したはずが2GBになってる。理由はまだ調べてない![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/288193/639d5054-644e-a964-6eb9-0f12fb8eb91b.png)