おうちサーバー構築報告：コンテナ on Proxmox VE with ZFS

## 能書き

[おうちサーバー構築報告：予告](https://qiita.com/katz_engineer/items/471408eda1d09507c451)からのおうちサーバー構築です。[前回](https://qiita.com/katz_engineer/items/ee594cab0300398131f7)はメインマシンに Proxmox VE をインストールしたので、今回はLXCコンテナを構築します。

### 目標

- Proxmox VE にLXCコンテナを作成して、ゲストマシンを立ち上げる
    - OSはUbuntu24.04

### 参考文献

- [Proxmox VE上にコンテナをデプロイする - Qiita](https://qiita.com/ohtsuka-shota/items/a46b79af31a44a236704)
- [11. Proxmox Container Toolkit - Proxmox VE Administration Guide](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#chapter_pct)

## CTテンプレート

最初に[コンテナイメージ](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#pct_container_images)が必要です。

データセンター>primary（ホストマシン名）>local (primary) / CTテンプレート を選択します。そして`テンプレート`ボタンをクリック。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/107218/bf11a2c9-0db7-cc0a-5db1-0b6e16250bee.png)

上記のようにテンプレートダイアログが表示されるので、ここからテンプレートを選びます。今回は`ubuntu-24.04-standard`を選択。
そして`ダウンロード`ボタンをクリック。ダウンロードが完了するまで暫く待ちます。

「TASK OK」と表示されたら完了の模様。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/107218/fee6a5dd-d198-c8ee-9408-b323d328b6d5.png)

ダイアログ右上のクローズボタンをクリックして閉じます。そうするとCTテンプレートの一覧に、ダウンロードしたテンプレートが表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/107218/e3a91e6b-9d36-acb3-9d1d-eafa602322bc.png)

## プール作成

コンテナデプロイにはPoolが必要なので、作成します。データセンター/Poolsの`作成`ボタンをクリックします。今回は「all」という名前にしました。全ゲストをここに入れる予定です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/107218/522139b5-8c7b-d59e-0839-8331520ffae9.png)

## コンテナデプロイ

画面右上の`CTを作成`ボタンをクリックします。そうすると「作成: LXCコンテナ」ダイアログが表示されるので、必要な項目を埋めます。

- ノード: primary （ホストマシン名）
- CT ID: 100 （デフォルト値; このProxmox VEインストールでコンテナを識別するために使用される一意の番号）
- ホスト名: lxc1 （コンテナのマシン名）
- 非特権コンテナ: チェックを入れる
- ネスト: チェックを入れる
- リソースプール: all （先程作ったプール）
- パスワード: （コンテナのルートパスワード）
- パスワードの確認: （パスワードと同じ文字列をもう一度入力）
- SSH公開鍵: （SSH経由でルートアカウントに接続するための公開鍵、空欄のままでも良い）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/107218/2b34d8a1-4456-1928-8438-03257bb723a0.png)

`次へ`ボタンでテンプレートの選択画面になります。

- ストレージ: local
- テンプレート: ubuntu-24.04-standard_24.04-2_amd64.tar.zst （先程ダウンロードしたCTテンプレート）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/107218/f58f9c44-8078-7584-404e-d9a18ed2bec4.png)

`次へ`ボタンでディスクの設定画面になります。

- ストレージ: local-zfs（デフォルト値）
- ディスクサイズ(GiB): 256
- ACLs: 既定（デフォルト値）
- マウントオプション: noatime
- 複製をスキップ: チェックを外す（デフォルト値）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/107218/375ecdb7-90cf-9174-8487-8d68016cf2c2.png)

`次へ`ボタンでCPU設定画面になります。

- コア: 4
- CPUの上限: 無制限（デフォルト値）
- CPUユニット: 100（デフォルト値）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/107218/6c615372-7482-2459-aafa-638e42645e1e.png)

`次へ`ボタンでメモリ設定画面になります。

- メモリ (MiB): 4096
- スワップ (MiB): 4096

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/107218/9dbc4335-a326-8471-5313-1e68286066bd.png)

`次へ`ボタンでネットワーク設定画面になります。

- 名前: eth0 （デフォルト値）
- MACアドレス: auto （デフォルト値）
- ブリッジ: vmbr0 （デフォルト値）
- VLANタグ: no VLAN （デフォルト値）
- ファイアウォール: チェックを入れる （デフォルト値）
- IPv4: 静的 （デフォルト値）
- IPv4/CIDR: 172.16.1.100/16 （[我が家のIPアドレス体系](https://qiita.com/katz_engineer/items/eab3436c79bea6dc1c5e#%E6%88%91%E3%81%8C%E5%AE%B6%E3%81%AEip%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E4%BD%93%E7%B3%BB%E5%86%8D%E6%8E%B2)に基づいて適当に決定）
- ゲートウェイ(IPv4): 172.16.2.1 （我が家のゲートウェイ）
- IPv6: 静的　(デフォルト値)
- IPv6/CIDR: なし （デフォルト値）
- ゲートウェイ(IPv6): （空欄） （デフォルト値）
- 切断: チェックを外す （デフォルト値）
- MTU: ブリッジと同じ （デフォルト値）
- Rateの制限値(MB/s): unlimited （デフォルト値）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/107218/3d9ae47c-3ab8-d194-be70-b4859eb46513.png)

`次へ`ボタンでDNS設定画面になります。

- DNS ドメイン: ホスト設定を使用する （デフォルト値）
- DNS サーバ: ホスト設定を使用する （デフォルト値）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/107218/980e0c09-4fb0-047c-0c35-e7bdb399036d.png)

`次へ`ボタンで確認画面になります。

- 作成後に起動: チェックを入れる

`完了`ボタンでコンテナが作成されます。画面に`TASK OK`が表示されたら完了です、画面右上のクローズボタンをクリックして閉じます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/107218/7f1342f8-3110-27ce-7c5e-f9a5fc0e9096.png)

データセンター>primary>100 (lxc1) が表示されている事が確認できます。これを選択すると、起動している事を確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/107218/f6a03e61-f761-2dac-5e6a-7f98ff04d488.png)

## 動作確認

データセンター>primary>100 (lxc1)/コンソール を選択。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/107218/b159b936-016d-8562-5b22-6d44ff29f179.png)

下記でログインします。

- ユーザ名: root
- パスワード: （上記で設定したパスワード）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/107218/a7a86ac5-8c92-f742-1c5f-2e6a8f8e7846.png)

ネットワークがインターネットに繋がっているか確認する為、`ping -c4 www.google.com`を実行してみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/107218/877f574b-56a5-eb27-4c2b-a3a545eb7c01.png)

無事に繋がっているようですね。

## ssh接続

普段使いのクライアントマシンからssh接続を試みます。

```console
ssh root@172.16.1.100
```

しかし`root`ユーザでは接続できません。

```console:クライアントマシン
>ssh root@172.16.1.100
The authenticity of host '172.16.1.100 (172.16.1.100)' can't be established.
ED25519 key fingerprint is SHA256:0EhzlkfX4pDeLVFCcT8quGF+xi9V+CaAC0EGBU4kC0Y.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '172.16.1.100' (ED25519) to the list of known hosts.
root@172.16.1.100's password:
Permission denied, please try again.
```

そこで、Proxmox VE のコンソール画面でユーザ`taro`を新規に追加し、パスワードを設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/107218/b1c8f444-ce48-0652-a713-f2a25c5ca4a7.png)

この`taro`でssh接続を試みます。

```console:クライアントマシン
>ssh taro@172.16.1.100
taro@172.16.1.100's password:
Welcome to Ubuntu 24.04 LTS (GNU/Linux 6.8.12-4-pve x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

$ sudo su -
[sudo] password for taro:
root@lxc1:~#
```

今度は接続できました！

## SSH公開鍵を設定した場合

最初の画面でSSH公開鍵を設定したい場合は、例えば下記のようになります。

公開鍵自体は[以前](https://qiita.com/katz_engineer/items/97db541d0bee758a2ebe#%E7%A7%98%E5%AF%86%E9%8D%B5%E3%81%A8%E5%85%AC%E9%96%8B%E9%8D%B5%E3%82%92%E7%94%9F%E6%88%90)作成しました。`ssh-keygen`コマンドを使います。ごく基本的な使い方なので、ここでは繰り返しません。

Windowsの場合は下記コマンドで公開鍵を表示できます。

```console:クライアントマシン(Windows)
type %USERPROFILE%\.ssh\id_ed25519.pub
```

例えば下記のように表示されます。

```console:クライアントマシン(Windows)
>type %USERPROFILE%\.ssh\id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFPaXfYD8n805SmhR4BEs4Ho1AMVFTj66R0lH6k4HuCN taro@client
```

表示された行（`ssh-ed25519`から行末まで）を、コピペします。後は先程と同様にマシン作成。今回はマシン名を`lxc2`に、IPv4アドレスを`172.16.1.101`にして新規作成しました。

そして普段使いのクライアントマシン(Windows)からssh接続。

```console:クライアントマシン(Windows)
>ssh root@172.16.1.101
The authenticity of host '172.16.1.101 (172.16.1.101)' can't be established.
ED25519 key fingerprint is SHA256:J0l5/UYKTzop+ZWz/WglbrSmCmdaFWVveOkpHgB0gyw.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '172.16.1.101' (ED25519) to the list of known hosts.
Welcome to Ubuntu 24.04 LTS (GNU/Linux 6.8.12-4-pve x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
```

`root`接続されて、パスワードも要求されませんでした。

## 削除

終わったら削除しましょう。

まず仮想マシンを止めます。

```console
shutdown -h now
```

データセンター>primary>100 (lxc1) の画面右上のMoreの中に「削除」があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/107218/7258f2b2-7b1a-52ce-bca2-b576ef4f85b3.png)

「削除」を選択すると確認ダイアログが表示されます。

- 確認のためIDを入力してください(100): 100 （画面に表示されているID）
- ジョブ設定から削除: チェックを外す（デフォルト値）
- ゲストによって所有されている未使用のディスクを破棄: チェックを外す（デフォルト値）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/107218/1fd2ff4d-e79b-14b8-3ccf-eb84298a4f26.png)

何やらシステムログが表示されて、削除されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/107218/8882a94d-aaf8-bd13-b9f5-389768c5e79a.png)

## 仕舞い

今後は[予告](https://qiita.com/katz_engineer/items/471408eda1d09507c451)に基づいて色々設定します。