ミニPCを初期化して雑に使える自宅サーバーにする
やること
- 何かしら情報が入ってるミニPCを初期化する
- Proxmox VEのイメージをインストールして仮想マシンやコンテナを管理できるようにする
- セットアップしておくと便利なサーバーのセットアップ
- HomeBridge
- OpenVPN
環境
サーバー(ミニPC)
MINISFORUM NAB6
CPU : Intel Core i7-12650H
RAM : 32GB
Storage : 512GB
Proxmox Virtual Enviroment
オープンソースのサーバー管理プラットフォームで、KVMハイパーバイザとLinux Containers(LXC)の管理などが行える。また、WebのGUIを提供しておりウェブサイト上で仮想マシンやコンテナの作成・’削除・設定変更ができるため直感的に操作が行える。
↓ 初期化前のProxmoxVEのウェブコンソールの様子
仮想マシンとコンテナの違い
仮想マシンとコンテナでできることが似てそうだったので違いを調べてみることにした。
仮想マシン
仮想マシン (VM) とは、独立したシステムとして機能するコンピューティング環境です。プールされたハードウェアリソースを使用して作成され、固有の CPU、メモリー、ネットワーク・インタフェース、ストレージを持ちます。
ハイパーバイザーと呼ばれるソフトウェアが、必要なコンピューティング・リソースを分離し、VM の作成と管理を可能にします。
https://www.redhat.com/ja/topics/virtualization/what-is-a-virtual-machine
コンテナ技術
OS上に仮想的に複数のコンテナ(分離・独立した領域)の箱を設け、そのなかで、アプリケーションを実行・動作させる仕組みです。
https://jpn.nec.com/cloud/service/container/about.html
OSレベルで仮想化するか、もっと低レイヤなハードウェアレベルで仮想化をするかどうかの違いが一番大きそうで、構造の違いを図にしてみた。
仮想マシンのハイパーバイザはホストOS上に立てるもの(VirtualBoxとか)もあるみたいだけど、Proxmoxは直接ハードウェアにインストールするのでベアメタルハイパーバイザとして分類できるみたい。
仮想マシンではゲストOSがカーネルを持っているのに対し、コンテナ技術ではコンテナ管理アプリケーションをホストしているOSのカーネルを流用しているのが構造としては最も違う点になりそう。
▼ 主な違いについてGPTにまとめてもらった表
項目 | コンテナ | 仮想マシン |
---|---|---|
仮想化レベル | OSレベルの仮想化(ユーザー空間の分離) | ハードウェアレベルの仮想化 |
カーネル | ホストOSのカーネルを共有 | ゲストOSごとに独自のカーネルを持つ |
OSの独立性 | 同じカーネルファミリーのOSのみ利用可能(例: Linux) | 異なるOSを実行可能(例: LinuxとWindowsを同時に) |
起動時間 | 非常に高速(数秒以内で起動) | 比較的遅い(数十秒から数分) |
リソース消費 | 軽量(CPU、メモリ、ストレージの消費が少ない) | 重量(各仮想マシンに独自のOSを持つためリソース消費が大きい) |
セキュリティ隔離 | 名前空間とcgroupsによる隔離(カーネルを共有) | ハードウェアレベルでの完全隔離 |
パフォーマンス | ホストOSのカーネルを直接利用するためほぼネイティブ | ゲストOSのカーネルを経由するため、若干のオーバーヘッドがある |
ストレージ | 軽量なレイヤードファイルシステム(例: OverlayFS) | 仮想ディスクイメージ(例: VMDK、QCOW2) |
用途 | マイクロサービス、軽量なアプリケーション、CI/CD環境 | マルチOS環境、レガシーアプリケーションの移行、強いセキュリティ隔離 |
管理 | DockerやKubernetesなどのコンテナオーケストレーションツールで管理 | ハイパーバイザー(例: VMware、Proxmox VE)で管理 |
可搬性 | 高い(ホストOSのカーネルが同じであれば動作可能) | 比較的低い(仮想ディスクイメージごとに環境を構築する必要がある) |
アップデート | ベースイメージのアップデートで迅速に対応可能 | ゲストOSのアップデートが必要(手間がかかる) |
スケーラビリティ | 高い(コンテナの複製やデプロイが迅速) | 低い(仮想マシンのコピーやデプロイには時間がかかる) |
ネットワーク | 仮想ネットワークの構築が容易(コンテナ同士の通信が簡単) | 仮想スイッチ、ネットワークアダプタの設定が必要 |
参考にさせていただいた記事など
ProxmoxVEのインストールメディアを作る
Proxmoxの公式サイトからISOイメージをダウンロードしてきて適当なUSBメモリに書き込みます
1. ISOイメージのダウンロード
2024/10/05 時点
- https://www.proxmox.com/en/downloads にいく
- Proxmox VE 8.2 ISO Installer の項目を探し、横のDownloadボタンからダウンロードする
2. Rufasのインストール
ISOイメージファイルを書き込むためにつかうRufusを入れる
- https://rufus.ie/ja/ にいく
- 適当なリリースをダウンロードする (今回は
rufas-4.5.exe
を使うことに)
- インストーラタイプだったらexeを実行してインストール (ポータブルタイプならそのまま実行できそう)
3. メディアの作成
- Rufasを起動する
- デバイスを選択する
- ウィンドウ右側の選択からISOファイルを選択
- ウィンドウ下側のスタートボタンから書き込む
Proxmox VEのセットアップを進める
作成したインストールメディアをミニPCに接続し起動する。
(環境によっては起動ディスクの優先度をBIOSで設定する必要がありそう)
📝 注意
(ここからの画面のスクショはミニPCの画面になります)
メディアから起動するとこんな感じの画面がでる
画面の案内に従ってセットアップを進めてく
Install Proxmox VE (Graphical)
を選択
規約を読んで、右下の I agree
を押下
インストール先を選択する
選択されたディスクはこのあとフォーマットされてproxmox VEがインストールされる
地域とキーボードレイアウトを選択する
ネットワークインターフェースの選択とミニPCのホストネームを設定する
使用したミニPCのネットワークインターフェースはLANポート2つとWiFiがありますが、接続できる機器を勝手に選んでくれるみたいです
設定を確認してインストールする
(Automatically reboot after successful installation) のチェックを外しておく
インストールが終わるとウェブコンソールにアクセスするためのURLが出てくるのでメモしておく
Rebootを押すとコンソールに戻り再起動が行われる
途中で rebooting - please remove the ISO boot media と案内があるのでこのタイミングでインストールメディアを外しておく
(外さずに自動で再起動して、もう一度インストール画面が起動しまうことがありやり直しかと勘違いしてました)
メディアを取り外し、このようなログインのコンソールが出てきたらproxmox veのセットアップは完了
一つ前のステップでメモしたURLにアクセスする
https://<ミニPCのIPアドレス>:8006 (デフォルトのポート)
ユーザー名 root
と最初に設定したパスワードでログインするとこんな感じの画面にアクセスできる
コンテナを作ってみる
Proxmoxでコンテナを作ってみようと思います
書くこと
- コンテナテンプレートをダウンロードする
- コンテナを作成する
- コンテナのシェルを開く
コンテナテンプレートをダウンロードする
今回は Alpine Linux のコンテナを作ってみることにする
Proxmoxではテンプレートからコンテナを作成するみたいなので、テンプレートを用意していく
コンソール横の local (pve)
を選択
画面上部のボタン群から テンプレート
を選択し利用可能なテンプレート一覧を開く
とりあえず最新の alpine Linux (3.20) のテンプレートを探して、選択し左下のダウンロードボタンを押下してダウンロードする。
(↑ alpineのテンプレが増えた)
コンテナを作成する
Proxmox VEのコンソール左上、「CTを作成」を選択
必要な情報を入力していく
テンプレートを選んで次へ
試しに触るだけなので、rootfsの容量は8GBを割り当て
CPU, メモリ, ネットワーク, DNSと設定していく
作成すると、画像のように pve(ノード名) の配下にコンテナが作られる
コンテナにアクセスする
コンテナを起動する (作成したコンテナを右クリック → 開始)
コンテナを選択し、画面中央のメニューから「コンソール」を選ぶとコンテナのコンソールを開くことができる
初期設定ではユーザ名 root と最初に設定したpass でログインができる
HomeBridge のコンテナを立ててみる
HomeKitでサポートされていないデバイスを、Siriなどから動かせるようにするためのサーバーソリューションだが、今回は、proxmoxのHomeBridgeプラグインを用いて proxmoxから各種コンテナや仮想マシンの稼働状況の確認や起動制御を行えるようにしてみる。
↓ のようにAppleのホームアプリやGoogle Homeなどからコンテナたちの状況を確認できるようになる
ベースとなるコンテナの作成
Ubuntuベースのテンプレートを使用します ubuntu 22.04
コンテナの作成は省略
コンテナのセットアップ
HomeBridgeをセットアップする
公式のセットアップWikiに従って進めていく
コマンドを打ち込んでいく前に、proxmoxのイメージには curl
と gpg
が含まれていなかったのでインストールしておいた
Wikiの通りに進めていくと、HomeBridgeが起動する。
案内の通り、URLにアクセスすると以下のような画面が出る
アカウントを作成して
画面の指示に従ってセットアップを進めると以下のようなダッシュボードが表示される
HomeBridgeにProxmoxのプラグインを入れる
画面上部、Pluginsを選んで、Proxmoxのプラグインを探す
右側のオレンジのダウンロードボタンから最新のプラグインをダウンロードする
プラグインの設定画面に飛ぶので必要な項目を入れていく
- ホストアドレスはポート番号不要
- 先にProxmox側でアクセス制限をしたhomebridge用のアカウントを作った方がセキュアかも
設定項目を入力し保存すると、HomeBridgeが再起動される
その後、アクセサリタブを見てみると...
Proxmoxのコンテナが反映されてるー