HouseServerProj 2 台目のミニ PC を購入し自宅サーバ環境をアップデートする
はじめに
Proxmox について
- 導入
- クラスタ化
- cloud-init
- Windows VM などを学びました。
それでは実際に Proxmox のうえに ubuntu-server を立てて、自宅サーバ環境をアップデートしていく、ということをやっていきます。
ただし、適当にやってしまって構成が微妙になってしまうとそこからの手戻りが大変です。 そのため世の中のベストプラクティスを学び、そこから自分ができそうな構成をちゃんと考えたうえで決めます。
Homelab について
https://qiita.com/damepanda_supra/items/a3606cbe28c41508ec80
homelab という概念が海外であるようです。
サーバやネットワーク環境を自宅で好きなように作り技術を学ぶ。
それを実現するのが homelab
だそうです。
ganyariya も homelab
を育てていきたいなと考えています。
ただし、今回の homelab ですべては達成できません。
達成することと今回はしないことを明確にしておきます。
- 達成すること
- k8s マルチクラスタ
- IaC 化
- o11y, cloud-native の学習
- 達成しないこと
- ネットワーク機器をつかったネットワークの勉強
- ストレージ関連
- NAS
- SSD/HDD 増設
- 自作 PC
これら達成しないことについては別の機会に取り入れていきます。 ネットワークなどは引っ越してからですねぇ…。 ストレージは早めにやってもいいかも。
Homelab の参考記事を集める
Homelab を実現するうえで他の方々がどのような構成にしているかを調べます。
Homelab について解説されている記事です。 どうして Homelab を運用するのか、というモチベーションを解説されています。
url: https://qiita.com/damepanda_supra/items/a3606cbe28c41508ec80
title: "ITエンジニアがホームラボを持つ理由 - Qiita"
description: "はじめに(ホームラボとは) ホームラボ(Homelab)とは、ITエンジニアが市販されているサーバやネットワーク機器を自宅に購入して、検証環境を自宅に保有すること(楽しむこと)事をさします。海外ではHomeLab、日本では”逸般の誤家庭”とX(Twitter)などで書かれ..."
host: qiita.com
favicon: https://cdn.qiita.com/assets/favicons/public/production-c620d3e403342b1022967ba5e3db1aaa.ico
image: https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-afbab5eb44e0b055cce1258705637a91.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLXByb2ZpbGUtaW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnMzLWFwLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb20lMkZxaWl0YS1pbWFnZS1zdG9yZSUyRjAlMkY3NzUzNTglMkY3NGVmYmMxNjVjYzcxMGU3MDM3ZjRiODJkMWVmYjljMTFlMmMyODkwJTJGeF9sYXJnZS5wbmclM0YxNjM3MjU0MzUwP2l4bGliPXJiLTQuMC4wJmFyPTElM0ExJmZpdD1jcm9wJm1hc2s9ZWxsaXBzZSZiZz1GRkZGRkYmZm09cG5nMzImcz1hNGZhNWU4ZDRiZWJjZWQwZDUyMGVkMmU3YTgwZjgwZA%26blend-x%3D120%26blend-y%3D467%26blend-w%3D82%26blend-h%3D82%26blend-mode%3Dnormal%26s%3D1b80aec8c093dd67b35ad799df606a9c?ixlib=rb-4.0.0&w=1200&fm=jpg&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk2MCZoPTMyNCZ0eHQ9SVQlRTMlODIlQTglRTMlODMlQjMlRTMlODIlQjglRTMlODMlOEIlRTMlODIlQTIlRTMlODElOEMlRTMlODMlOUIlRTMlODMlQkMlRTMlODMlQTAlRTMlODMlQTklRTMlODMlOUMlRTMlODIlOTIlRTYlOEMlODElRTMlODElQTQlRTclOTAlODYlRTclOTQlQjEmdHh0LWFsaWduPWxlZnQlMkN0b3AmdHh0LWNvbG9yPSUyMzFFMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZ0eHQtcGFkPTAmcz05Y2M2YTBkYThiOGIxYTY3MzY5NzdiMjJjNjA5MDQ3MA&mark-x=120&mark-y=112&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTgzOCZoPTU4JnR4dD0lNDBkYW1lcGFuZGFfc3VwcmEmdHh0LWNvbG9yPSUyMzFFMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtcGFkPTAmcz1mNDM3NzA2NTAxMzZhNGMzNDAyNWUzZTdhM2Q0YmE5NA&blend-x=242&blend-y=480&blend-w=838&blend-h=46&blend-fit=crop&blend-crop=left%2Cbottom&blend-mode=normal&s=2b4d7a81d29579a90adc1af629c96720
kubernetes と proxmox の組み合わせについて解説されています。
url: https://techblog.ap-com.co.jp/entry/2025/06/19/090000
title: "CKAの勉強がてらProxmox上にkubeadmでkubernetes環境を構築してみる - APC 技術ブログ"
description: "はじめに 今回の構成 参考にするサイト 1. kubeadmのインストール 1-1. インストール要件確認 1-2. コンテナランタイムのインストール 1-3. kubeadm、kubelet、kubectlのインストール 1-4. kubeletによって使用されるcgroupドライバーの設定(Option) 1-5. ワーカーノードにインストール 2. kubeadmを使用したクラスターの作成 2-1. kubeadm init実行前の確認事項 2-2. kubeadm init実行 2-3. ワーカーノードをクラスターに追加 3. Podネットワーク構築 kubeadm reset まとめ…"
host: techblog.ap-com.co.jp
favicon: https://techblog.ap-com.co.jp/icon/link
image: https://cdn.image.st-hatena.com/image/scale/a280c9de0c72911f7ae133b0f0c83606d62e2cb8/backend=imagemagick;version=1;width=1300/https%3A%2F%2Fcdn.user.blog.st-hatena.com%2Fdefault_entry_og_image%2F91061897%2F163480237573261
AWS, GCP のような Cloud Vendor の環境を自宅クラウドで再現するには?で使える技術をまとめている記事です。 この中から自分が使いたい物を選ぶ、というのがよさそうです。
url: https://zenn.dev/zenogawa/articles/home_cloud_overview
title: "OSS ベースの自宅クラウドの構成"
host: zenn.dev
image: https://res.cloudinary.com/zenn/image/upload/s--E9_Ac4Id--/c_fit%2Cg_north_west%2Cl_text:notosansjp-medium.otf_55:OSS%2520%25E3%2583%2599%25E3%2583%25BC%25E3%2582%25B9%25E3%2581%25AE%25E8%2587%25AA%25E5%25AE%2585%25E3%2582%25AF%25E3%2583%25A9%25E3%2582%25A6%25E3%2583%2589%25E3%2581%25AE%25E6%25A7%258B%25E6%2588%2590%2Cw_1010%2Cx_90%2Cy_100/g_south_west%2Cl_text:notosansjp-medium.otf_37:zenogawa%2Cx_203%2Cy_121/g_south_west%2Ch_90%2Cl_fetch:aHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyLzNlYTlmOGU2ZDEuanBlZw==%2Cr_max%2Cw_90%2Cx_87%2Cy_95/v1627283836/default/og-base-w1200-v2.png
terraform で proxmox を管理する例としてよさそうです。
url: https://blog.nnstt1.dev/posts/2022/07/30/proxmox-terraform/
title: "Proxmox VE を管理するため Terraform に入門した"
description: "先日構築した Proxmox VE クラスタを IaC で管理したいと思い、重い腰を上げてついに Terraform に入門した。Terraform はクラウドリソースを管理するのがメインと思っていたけど、幸いにも Proxmox VE にも対応している。 「対応している」よりは「誰かが対応するように Provider というものを作ってくれている」という表現のほうが正しい。Proxmox VE で VM やコンテナを作るための「Proxmox Provider」というものが公開されている。Terraform Registry - proxmox手始めに Proxmox Provider のドキュメントに沿って VM を作成してみる。Proxmox VE Terraform 用ユーザ/ロールの作成 Proxmox VE に Terraform が利用するユーザとロールを作成する。 クラスタ管理権限を付与することもできるが、必要最低限の権限を割り当てることでセキュリティリスクを低減する。root@pve1:~# pveum role add TerraformProv -privs \"VM.Allocate VM.Clone VM.Config.CDROM VM.Config.CPU VM.Config.Cloudinit VM.Config.Disk VM.Config.HWType VM.Config.Memory VM.Config.Network VM.Config.Options VM.Monitor VM.Audit VM.PowerMgmt Datastore.AllocateSpace Datastore.Audit\" root@pve1:~# pveum user add terraform-prov@pve --password <password> root@pve1:~# pveum aclmod / -user terraform-prov@pve -role TerraformProv 作成したロールとユーザを確認する。 表形式で出力されるが見切れてしまっている。"
host: blog.nnstt1.dev
favicon: https://blog.nnstt1.dev/favicon.ico
image: https://blog.nnstt1.dev/
一番参考になりそうな記事です。 Proxmox & Ansible & Terraform という自分が目指している構成になっており、こちらを参考にしたいと思います。
url: https://qiita.com/Soli0222/items/3bf53caf23f37a3b3eb3
title: "TerraformとAnsibleでK8sクラスタ自動構築 - Qiita"
description: "はじめに こんにちは。Soliです。 はじめてのアドベントカレンダー Advent Calendar 2024 18日目の記事として、自宅Kubernetesクラスタを構築するために整備した、TerraformとAnsibleについて、書いていこうと思います。 現在、3つ..."
host: qiita.com
favicon: https://cdn.qiita.com/assets/favicons/public/production-c620d3e403342b1022967ba5e3db1aaa.ico
image: https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Fadvent-calendar-ogp-background-7940cd1c8db80a7ec40711d90f43539e.jpg%3Fixlib%3Drb-4.0.0%26w%3D1200%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLXByb2ZpbGUtaW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnMzLWFwLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb20lMkZxaWl0YS1pbWFnZS1zdG9yZSUyRjAlMkYzMjg3NTgyJTJGOTQzOWI2ZTZhYmJhMGMzMjI2MWZmNjE4NTFjMjhmYzJiZTk2NjRhZSUyRmxhcmdlLnBuZyUzRjE2Nzg4NTQ0MTA_aXhsaWI9cmItNC4wLjAmYXI9MSUzQTEmZml0PWNyb3AmbWFzaz1lbGxpcHNlJmJnPUZGRkZGRiZmbT1wbmczMiZzPTZjNWU2MTUyMTQ0MTliYTIzMmRjZTVhNzI1OWRlNjFk%26blend-x%3D120%26blend-y%3D467%26blend-w%3D82%26blend-h%3D82%26blend-mode%3Dnormal%26s%3D24c1bda11657f47301711ef7f172f8cb?ixlib=rb-4.0.0&w=1200&fm=jpg&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk2MCZoPTMyNCZ0eHQ9VGVycmFmb3JtJUUzJTgxJUE4QW5zaWJsZSVFMyU4MSVBN0s4cyVFMyU4MiVBRiVFMyU4MyVBOSVFMyU4MiVCOSVFMyU4MiVCRiVFOCU4NyVBQSVFNSU4QiU5NSVFNiVBNyU4QiVFNyVBRiU4OSZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzM0EzQzNDJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1wYWQ9MCZzPTVhOTJmY2FmNWEyNTkzOGFiMDhhMjAwOTgxMzIzMmU5&mark-x=120&mark-y=112&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTgzOCZoPTU4JnR4dD0lNDBTb2xpMDIyMiZ0eHQtY29sb3I9JTIzM0EzQzNDJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1wYWQ9MCZzPWNiMzY1YWIwNjgxNzEwMWU4NjhkNTQ2MzA2MjQ1NDI1&blend-x=242&blend-y=480&blend-w=838&blend-h=46&blend-fit=crop&blend-crop=left%2Cbottom&blend-mode=normal&s=3f29d6655367b642ed6cf48bdec89dab
Proxmox + Kubernetes Multi Cluster が解説されています。 ちゃんとした k8s kubeadm マルチクラスタをつくるときに参考にしたいとおもいます。
url: https://zenn.dev/eucyt/articles/kubernetes-on-proxmox
title: "自宅サーバーでHA構成のKubernetesクラスター構築してみた【Proxmox】"
host: zenn.dev
image: https://res.cloudinary.com/zenn/image/upload/s--h97XZuuv--/c_fit%2Cg_north_west%2Cl_text:notosansjp-medium.otf_55:%25E8%2587%25AA%25E5%25AE%2585%25E3%2582%25B5%25E3%2583%25BC%25E3%2583%2590%25E3%2583%25BC%25E3%2581%25A7HA%25E6%25A7%258B%25E6%2588%2590%25E3%2581%25AEKubernetes%25E3%2582%25AF%25E3%2583%25A9%25E3%2582%25B9%25E3%2582%25BF%25E3%2583%25BC%25E6%25A7%258B%25E7%25AF%2589%25E3%2581%2597%25E3%2581%25A6%25E3%2581%25BF%25E3%2581%259F%25E3%2580%2590Proxmox%25E3%2580%2591%2Cw_1010%2Cx_90%2Cy_100/g_south_west%2Cl_text:notosansjp-medium.otf_37:Yuta%2520Euchi%2Cx_203%2Cy_121/g_south_west%2Ch_90%2Cl_fetch:aHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyL2E4OTE2NGFhZDQuanBlZw==%2Cr_max%2Cw_90%2Cx_87%2Cy_95/v1627283836/default/og-base-w1200-v2.png
Proxmox + Ansible + Terraform で k8s クラスタを簡単に立ち上げるプロジェクト。 こちらを参考にして実装できそう。
url: https://github.com/christensenjairus/ClusterCreator
title: "GitHub - christensenjairus/ClusterCreator: Terraform & Ansible K8S on Proxmox"
description: "Terraform & Ansible K8S on Proxmox. Contribute to christensenjairus/ClusterCreator development by creating an account on GitHub."
host: github.com
favicon: https://github.githubassets.com/favicons/favicon.svg
image: https://opengraph.githubassets.com/d66a37519bda9ee584a285aa6148a3cc71b13dad7e1c59693273b7ffcc53102a/christensenjairus/ClusterCreator
自宅ラボにおける k8s 構成がわかりやすく解説されています。 難しい…。
url: https://speakerdeck.com/yuanying/k8s-at-home-number-1
title: "k8s@home#1"
host: speakerdeck.com
favicon: https://d1eu30co0ohy4w.cloudfront.net/assets/favicon-bdd5839d46040a50edf189174e6f7aacc8abb3aaecd56a4711cf00d820883f47.png
image: https://files.speakerdeck.com/presentations/cdfe4f55ae4540be8ad872758bab6616/slide_0.jpg?22982428
Proxmox + Kubernetes による IaC の例が記載されています。 Talos Linux が利用されており、そちらも気になりますね。
url: https://zenn.dev/0hag1/articles/proxmox-kubernetes-iac-home-network
title: "プライベートネットワークでProxmox+KubernetesクラスタをIaC化する"
host: zenn.dev
image: https://res.cloudinary.com/zenn/image/upload/s--9NtE-9T3--/c_fit%2Cg_north_west%2Cl_text:notosansjp-medium.otf_55:%25E3%2583%2597%25E3%2583%25A9%25E3%2582%25A4%25E3%2583%2599%25E3%2583%25BC%25E3%2583%2588%25E3%2583%258D%25E3%2583%2583%25E3%2583%2588%25E3%2583%25AF%25E3%2583%25BC%25E3%2582%25AF%25E3%2581%25A7Proxmox%252BKubernetes%25E3%2582%25AF%25E3%2583%25A9%25E3%2582%25B9%25E3%2582%25BF%25E3%2582%2592IaC%25E5%258C%2596%25E3%2581%2599%25E3%2582%258B%2Cw_1010%2Cx_90%2Cy_100/g_south_west%2Cl_text:notosansjp-medium.otf_37:0hag1%2Cx_203%2Cy_121/g_south_west%2Ch_90%2Cl_fetch:aHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyLzU1ZTIxNGEwMWIuanBlZw==%2Cr_max%2Cw_90%2Cx_87%2Cy_95/v1627283836/default/og-base-w1200-v2.png
Proxmox 上に Kubernetes を立てる GitHub プロジェクトです。
url: https://github.com/khanh-ph/proxmox-kubernetes?tab=readme-ov-file
title: "GitHub - khanh-ph/proxmox-kubernetes: Enables you to create a Kubernetes cluster on Proxmox VE with Terraform & Kubespray in a declarative manner."
description: "Enables you to create a Kubernetes cluster on Proxmox VE with Terraform & Kubespray in a declarative manner. - khanh-ph/proxmox-kubernetes"
host: github.com
favicon: https://github.githubassets.com/favicons/favicon.svg
image: https://opengraph.githubassets.com/eb648b80c06167da76e66b49940d11486efcada514da505cf32a03a59e0d76e7/khanh-ph/proxmox-kubernetes
Ansible + Kubernetes + Proxmox + terraform の Github プロジェクトです。
url: https://github.com/omidiyanto/terraform-ansible-kubernetes-proxmox
title: "GitHub - omidiyanto/terraform-ansible-kubernetes-proxmox: This GitHub repository contains a project that automates the provisioning of a Kubernetes (K8s) cluster using Infrastructure as Code (IaC) with Terraform, configuration management with Ansible, and Proxmox as the virtualization environment."
description: "This GitHub repository contains a project that automates the provisioning of a Kubernetes (K8s) cluster using Infrastructure as Code (IaC) with Terraform, configuration management with Ansible, and..."
host: github.com
favicon: https://github.githubassets.com/favicons/favicon.svg
image: https://opengraph.githubassets.com/a90a0373421432dda8307cef37b135fc320158dabaef1a881a5201711f5b2f31/omidiyanto/terraform-ansible-kubernetes-proxmox
Proxmox + Ansible + cloud-init で k8s を用意する解説動画です。 こちらを見てみます。
url: https://www.youtube.com/watch?v=raIcSbX0AzI
title: "How to Setup Kubernetes on Proxmox"
description: "Kubernetes on Proxmox with Cloud-Init,Terraform and AnsibleThis video shows how to use Terraform (with cloud-init), and Ansible to install Kubernetes on VMs ..."
host: www.youtube.com
favicon: https://www.youtube.com/s/desktop/ba3a814f/img/logos/favicon_32x32.png
image: https://i.ytimg.com/vi/raIcSbX0AzI/maxresdefault.jpg
方針を立てる
ここまでの記事を見て、以下のような構成を考えます。
前提
2 台のミニ PC を利用します。 それぞれのミニ PC には Proxmox OS を導入し、クラスタ化します。
構成
https://github.com/Telmate/terraform-provider-proxmox
terraform-provider-proxmox を利用して Proxmox 上に 3 ~ 6 個の ubuntu-server VM を立てます。 この ubuntu-server は cloud-init 対応のものを利用し
- IP アドレス
- ホスト名
- SSH 公開鍵
- ユーザ名
を登録します。 これで kubernetes コントロールプレーン・ワーカー用の ubuntu-server VM を SSH & IP アドレス設定済みで用意できます。
続いて、 Ansible を利用してこれら 3 ~ 6 個の ubuntu-server に
- 必要なソフトウェアのインストール
- service の有効化
- k3s or kubeadm のインストール
- role ごとに
- control-plane
- クラスタを作成する
- worker
- クラスタに join する
- control-plane
を行います。 cloud-init ですでに SSH 鍵が登録されているため、簡単に Ansible から接続できるはずです。
Kubernetes クラスタが出来上がったら ArgoCD をインストールします。 ここで ArgoCD は ArgoCD 自体で管理します。 https://argo-cd.readthedocs.io/en/stable/operator-manual/declarative-setup/
ArgoCD が利用する GitOps リポジトリにはすべてに nginx などのアプリケーションが記述されており、それらが ArgoCD インストールによって自動に apply されます。 これは App of Apps Pattern でアプリケーションを設定するためです。
必要要件
terraform & ansible & cloud-init & kubernetes すべてをできるだけ 1 つの Public
リポジトリにします。
Public リポジトリにすることで他の方のサンプルにできる&共有できます。
ただし、セキュア情報(SSH 鍵やパスワード、GCP の JSON 鍵、GitHub PAT)は環境変数や External Secrets, SOPS + age などで別途管理します。
備考
こちらの構成でいくことを ChatGPT(GPT-5) と Claude に聞いたところ問題ないのでは?という返答だったため この構成でいきます。
リポジトリ名について
ganyariya-homelab
にしようとおもいます。
最後に
自宅ラボについて、参考になる記事を探したうえで構成を考えました。 次回のノートでは terraform + proxmox を試します。
なお、まずは手動で proxmox + ubuntu-server + kubeadm、まで進める回があるとおもいます。 実際に kubeadm で複数のワーカーを立てる、などをやらないと ansible の playbook もかけなさそうなので…