世界を動かす技術を、日本語で。

クラウドプロバイダーに支払わないための自宅ラボの過剰設計

概要

  • VPSから自宅サーバー への移行と、 Proxmox VE による柔軟な仮想化環境構築
  • 実験と学習 のためのVM自動化・安全運用の要件整理
  • ハードウェア選定ディスク暗号化、および バックアップ戦略 の重要性
  • Opentofu/Terraform、cloud-init、Ansible を活用したIaCによる構成管理
  • Proxmox VEのインストール とトラブルシューティングの実践記録

自宅サーバー移行と設計方針

  • VPSから自宅のmini PC (Minisforum UM880 Plus)へのサービス移行
  • VM(仮想マシン)による分離 で本番サービスと実験環境を両立
  • Kubernetes習得 を目指し、まずは 単一ノードk3s から段階的に拡張予定
  • クラウド利用回避 (学習コスト・コスト増加防止)のためオンプレ運用
  • ハードウェア追加投資は最小限、現状のmini PCを最大限活用

セキュリティ・信頼性要件(脅威モデル)

  • 最大の脅威:物理盗難 (リビング設置のため)
    • ディスク暗号化 でデータ漏洩対策
    • 堅牢なバックアップ 運用
  • ハードウェア故障 への備え
    • 自動インストール・構成管理 で復旧容易化
  • 人的ミス への備え
    • バージョン管理・ロールバック 可能なセットアップ
    • Infra Nerds Club の友人グループからのアドバイス活用
  • 電源障害・遠隔復旧
    • KVM経由でWake on LAN 送信可能なネットワーク設計

仮想化・自動化技術選定

  • Proxmox VE によるホスト型仮想化(唯一現実的な選択肢)
  • VM自体は使い捨て、VM内サービスのデータ・構成のみバックアップ
  • Opentofu(Terraform派生) でVMの定義・自動生成
    • cloud-init で初期設定(ユーザー、SSH鍵、ネットワーク等)
  • Ansible でサービスやネットワーク設定などの状態管理
    • 冪等性 確保(同じPlaybookを何度実行しても同じ結果)

Proxmoxホストのセットアップ手順

  • Debian上にProxmoxを追加インストール (ディスク暗号化対応のため)
    • Debianインストーラー でLVM+暗号化構成
    • rootパスワード設定 (Proxmoxはroot重視設計のため)
    • パッケージ選択は最小限 (SSHサーバー+標準ユーティリティのみ)
  • KVM経由で暗号化パスワード入力 運用
    • Dropbearやmagic USB stick によるリモート解除も選択肢
  • SSH設定の一時変更
    • rootログイン一時許可→公開鍵コピー→再度禁止でセキュア化

Proxmoxインストール時のトラブルと対応

  • Proxmox導入直後に起動不能 (暗号化ディスクは解除されるが、その後進まない)
  • 原因調査のためGRUBのquietパラメータを削除 し、詳細な起動ログを確認
  • Proxmoxカーネル自体は暗号化ディスク対応、問題は別要因と判明
  • 段階的なインストール・再起動で切り分け、トラブルシューティングを実施

インフラ自動化の全体像

  • Opentofu/Terraform :VMやDNSレコードのコード化・自動生成

  • cloud-init :VM初期化時のユーザー・SSH設定・ネットワーク構成

  • Ansible :OSやサービスの詳細設定・冪等性のある構成管理

  • IaC(Infrastructure as Code) による再現性と移行容易性の確保

    • 例:OpentofuでDebian VMをcloud-init付きで定義
    • 例:Ansibleでネットワークやタイムゾーン等を冪等的に設定

今後の展望

  • VMの再現性ある構築・設定 (次回記事で詳細解説予定)
  • クラウド・オンプレ間の柔軟な移行 を可能にする運用設計
  • 安定したインフラ基盤の上でKubernetes学習・実験 を継続

この構成により、 安全性・柔軟性・自動化 を高いレベルで両立しつつ、 学習・実験・本番運用 を一台のmini PC上で実現可能。今後は、VMの自動構築・サービスデプロイの具体的な手順をさらに掘り下げていく予定。

Hackerたちの意見

誰かが手頃な価格でホームラボを始めたいなら、Dell Wyse 5070をeBayでチェックすることを強くおすすめするよ。市場に50ドルであふれてるし、いろんなニーズに十分なパワーがあると思う。M.2スロットがあって、SATAもサポートしてるし、'extended'バージョンには小さいPCIeカード用のスペースもあるし、パラレルポートとシリアルポートが2つあって、昔を思い出させるよ。

これを何に使うつもりなのか、ちょっと気になるな。

消費電力を考慮したらどうなる? 24時間365日稼働させても大丈夫なデバイスってあるのかな?

Proxmoxを使ってタロスクラスターを構築するためにDell Wyse 5070を買ったよ。かなり良いし、RAMを32GBにアップグレードできる。

もう少しお金を出せるなら、Optiplex MicroやLenovo Tiny、HP Miniシリーズで、少なくとも第8世代のi5を搭載したものもいい選択肢だよ。eBayで70〜120ドルくらいで見つかるし、Wyse 5070よりもずっとパワフルで、しかもかなり省エネ(アイドル時約10W、Wyseは5W)。だいたい、NVMeが1つ、SATA 2.5インチスロットが1つ、プレミアムモデルにはPCIeもついてる。

Raspberry Pi 5をおすすめするよ。安くて小さくて、広く使われてるから、いろんなことがすでに多くの人に試されてる。

もう一つのヒント:中古のゲーミングPC!アップグレードサイクルのおかげで、信じられないほど安くてパワフルなものがあるよ。ただ、中古のゲーマー機器はあまり信頼性がないかもしれないから、RAID 1を設定することを忘れずに。

もう一つの安い選択肢はFujitsuのFutroだね。これは大きなサーバーラックを運営するための薄型サーバークライアントとして設計されてる(たぶん?)。とにかく、4-8GBのRAM、SSD(ほとんどの人がアップグレードするけど)、モデルによっては2.5または10Gbitのイーサネットカード用のPCI-eスロットもあるよ。eBayで約50ドル。

アリエクスプレスでN150ボードを使って自作したよ。SATAスロットが6つ、2.5Gイーサネットが4つ、m.2スロットが2つある。安い中古ケースを探して、ちょっとしたRAMを用意すれば準備完了。ハードウェアトランスコーディングもできるし、4Kも楽々処理できる。消費電力はたったの6Wだよ!

ミニPCが$600って聞いて目が点になったよ。7世代のOptiPlexを$45で買ったけど、まだそのポテンシャルを使い切れてないんだよね。

でも、停電や他の理由でサーバーがシャットダウンする可能性がある。仕事中や休暇中に起こるかもしれないし、WireGuardでも解決できない。停電の問題は軽減されていないようだ。私のホームラボは進化した対策をしてきた:小さなUPSの側に穴を開けて、大きな(車用の)バッテリーに接続して長時間稼働できるようにしたんだけど、それは専用のインバーター/充電器/切替スイッチに置き換えられて、でかいAGMキャラバンバッテリーに繋がってる(これで数回、2〜3時間の停電を乗り切ったことがある)。今は最近のLiFePo4バッテリー電源ステーションに置き換えた。もちろん、これはただのホームラボだから、ホスティングしてるものに重要なものはないけど、それがポイントじゃないんだ。「いろんなこと」に勝ちたいし、ちょっとした電力の変動の後にすべてがちゃんと再起動したか確認するのが嫌なんだ(リモートファイルストレージをマウントしてるものがいくつかあって、特定のデバイスが起動するスピードのせいで、これらのマウントは起動時に失敗することが多いから、まだその問題を解決することに決めてない)。

小さなUPSの側面に穴を開けて、大きな(車の)バッテリーに接続して、稼働時間を延ばせるようにしたんだ。これについてもっと教えてくれない? APCのBack UPS PRO USV 1500VA(BR1500G-GR)を使ってるんだけど、これでもできるか知りたいな。

小さなUPSを使って、バッテリーが切れる前にデータがちゃんとドライブに書き込まれるようにしてるよ。頻繁に停電することある? もし停電があっても、電源が復旧したら自動でサービスが立ち上がるから、何もしなくても大丈夫なんだ。

「リモートファイルストレージをマウントするいくつかのものがあって、特定のデバイスが起動する速さのせいで、これらのマウントは通常起動時に失敗するんだ。まだその問題を解決することに決めてないけど。」 もし君のOSがsystemdを使ってるなら、network-online.targetの後に実行するように設定すれば、結構簡単に解決できるよ(ExecStartがネットワークがまだないかどうかをチェックしようとしないように)。それに、ターゲットホストでnfs/smbが生きているかを実際にチェックするExecConditionのシェルスクリプトを追加すれば、fsマウントのオーバーライドになるよ。マウントとデータが必要なサービスにBindsToのオーバーライドを追加すれば、ファイルシステムが消えたときにサービスを自動で停止する方法ができるよ。私はずっとsystemdを嫌ってたけど、正直、問題をチェックするために1分ごとのcronジョブを扱わなくて済むのは価値があると思う。

それでも、電源障害の問題は解決しないよ。モデムが送信するローカルノードも同じ電源障害でダウンするから、大抵は10~30分のバックアップ電源しかないし、場合によってはバックアップ電源がないこともある。だから、緊急時のVoIP電話のサービス契約ではそれを明記してるんだ。ローカルノードが送信できても、他のノードは送信できないし、バッファリングもできない。電源障害を軽減するには、電源と携帯回線の両方が必要で、その接続は2~3時間しか持たない(携帯塔のバックアップが必要)。それにはCradlepointが必要だね。

著者です、確かにUPSは設置してないよ。設定はかなりミニマルに保ってるし、電源障害が起きたらサービスがダウンすることを受け入れてる。自分のためだけに自己ホスティングしてるから、他の人のためじゃないんだ。ただ、休暇中に電源障害でサーバーがオフラインになって、サービスに全くアクセスできなくなるのは避けたいな。ISP提供のルーターはWireguardをサポートしてるから、それを使ってKVMに接続してWake on LANパッケージを送れるよ。

これを考えてる人は、お願いだからやめて。車のバッテリーはたぶん密閉型のディープサイクルバッテリーじゃないし、UPSの充電回路はこのサイズのバッテリーを充電するために設計されてないから(鉛バッテリーを使ってる前提で、もっと危険なLi-PoやLiFePO4みたいなものじゃないとしてね)。もし車のバッテリーでセルが故障して、その充電器がバッテリーを加熱し始めたら、最悪だよ。実際に誰かの悪い選択で車の鉛酸バッテリーが爆発したことがあるけど、あれは本当に危険で怖い。ちゃんとスペックが合ったハードウェアを選ばないとダメだよ…EatonやAPCが高い理由があるんだから。

サーバーやネットワーク用にオンラインUPSとして使ってるEcoFlowユニット(Delta 2)に結構お金を使ったよ。すごくうまく動いてるし、最近は屋根に220WのEcoFlowソーラーパネルを2枚設置して、昼間は太陽光を取り入れてる。いい感じだけど、ROIは全然ないのが正直なところ、ただのクールなアイテムだね。

君のVPSプロバイダーはECC RAMを使ってるサーバーを使ってるだろうけど、うちのホームサーバーはそうじゃないんだ。ほとんどの人には関係ないかもしれないけど、僕にとっては重要なんだ。データを保存するホームサーバーにはECC RAMが必要なんだよね。

同意するけど、小型ボックスだと見つけるのが難しいよね。AsusのNucにはインバンドECCがあるのを見たけど、それが限界かな。

完全に同意。だから、僕のホームラボのストレージサーバーは中古のエンタープライズマシンなんだ。ECCが付いてるからね。

あんまり詳しくないんだけど、なんで自宅ラボにECC RAMが必要なの?

僕のセットアップはあまり堅牢じゃないかもしれないけど、パーツを段階的にカプセル化できることが主な目的だったんだ。https://wiki.roshangeorge.dev/w/One_Quick_Way_To_Host_A_WebA... 例えば、Cloudflareトンネルを使って、nginxにリバースプロキシしてるけど、DNSをそのnginxに向けても動くはずだ。安いVPSを使ってたらすごくオーバープロビジョニングされてたことに気づいて、家にこれがあったから、全部自宅サーバーで再構築したんだ。再構築したときは、結構すぐに動かせたし、各パーツを段階的に進められたよ。つまり、Cloudflareトンネルなしで動かしてから、後で追加したり、R2なしで動かしてから、FUSEのs3fsを使ってR2に切り替えたりできたんだ。

ホームラボを作るのは、いろんなことを学ぶ素晴らしい方法だよね。前は自分のホームラボを過剰設計してたけど、最近はもっとシンプルなアプローチにしたんだ(https://www.cyprien.io/posts/homelab/)。それでも、ほとんどの人にはまだ過剰設計かもしれないけどね。仕事でこれをやりすぎてるから、家ではもうやりたくないんだ。

ホームラボのことはわかるけど、ほとんどの人には時間と労力をかける価値がないと思う。サービスにもっとお金を払うことになるし、維持するのにたくさんの時間を使うことになるよ(もしそうしなかったら、いつか0-dayハックの被害に遭うかも)。北欧や西欧では、電気代が平均で€0.3/kWhくらいだから、シンプルな4ベイNASの電力消費だけで、Google DriveやOneDrive、iCloud、Dropbox、Jottacloudなどを買うのとほぼ同じくらいかかるよ。例えば、DS923+みたいなシンプルなSynologyの4ベイNASは、年間150kWhから300kWh使う(100%アイドルと100%アクティブの間くらい)、それで€45から€90かかる。これが電気代だけで、ハードウェアのコストを考えるとそれが倍になるだろう(5年で)。パブリッククラウドを使った方が安くて簡単だし、Cryptomator(https://cryptomator.org/)みたいなものでデータを暗号化してからアップロードすれば、プライバシーも守れるし、システム管理のタスクも避けられる。年を取るにつれて、時間は有限な資源だと気づくし、お金は有限に見えても、もっと稼ぐことはできる。サーバーの前にかがんで時間を無駄にしないで、愛することを大切にしている人たちと過ごす時間を大切にしてほしい。結局、その人たちはもういなくなるし、20年後にはその人たちとの思い出の方が、クラウドサービスに払った€20/月よりもずっと大事になると思うよ。

https://forum.manjaro.org/t/for-those-who-use-systemd-servic...

Google Driveとかの価格見たことある?君が言ってるNASのセットアップ(その少ないスペースに対してお金を払う価値はないと思うけど)は、12GBで1つのパリティドライブだよね?Google Oneの10TBプランは274,99€/月(少なくとも私の国では)だから、数ヶ月でNASの価格とサブスクリプション費用をペイできちゃうよ。大きなサイズのための魅力的なパブリッククラウドはないし(私のNASは30TBで、今18TB使ってる)、S3みたいな複雑なループに行っても、結局はそれに見合った金額以上に請求されるよ。パブリッククラウドは公開ファイル用で、どこからでもアクセスできる速さのために余計なコストを払ってる感じ。

でも、ホームラボだと好きなサービスをホストできて、必要なときにいつでも始めたり止めたりできるよね。確かにクラウドストレージは短期的には安いかもしれないけど、もっとストレージやサービスが必要になると、自己ホストの選択肢の方がずっと安上がりだよ。VPSは得られるものに対してすごく高いし。資金があるなら、自分でやることでお金をすぐに節約できるよ。半端なVPSに50ドル払うのは珍しくないけど、2000ドル出せば最低でも10年は持つ絶対的なモンスターが手に入るよ。Dockerを使えば、メンテナンスはほぼゼロで、使っていないサービスは1コマンドで停止または再起動できるし。

メンテナンスの時間は、シンプルに保てばちょっと過大評価されてるかも。私のホームラボでは、四半期ごとにすべてを更新していて、1時間くらいかかるから、年間4時間はかなり妥当だよ。Dockerがこれを助けてくれるし。数年でトラブルにほとんど遭ったことがないから、予期しないメンテナンスタスクはほとんどないよ。EDIT: 私が言ってるのは、VPNを通じてプライベート目的だけでアクセスできるホームラボのことだよ。

学ぶには最高だし、もし無料の電気がある場所があれば、さらに楽しいよね :) 夏の日はほとんど家にいるいい理由にもなるし。

Googleのプレミアムストレージは、年間100ドル(年払い)で2TBのストレージがあるよ。高めに見積もっても、ホームラボは同じコストで何倍ものストレージを提供してくれるよ。

インフラの構築と維持ができるようになると、やってみるのはいいけど、コスト的にはあんまり得じゃないって気づくよね。でも、学ぶ価値はあるよ。完全に冗長な環境を設定する基本を知ってる?家庭用機器を使って自宅で設定するのと、データセンターで設定するのに概念的な違いはないよ。結構性能のいい機器(Mikrotik)も安く手に入るし。企業向けの機器は設定オプションが多いけど、大半は使わないだろうね。バックアップWANや冗長ルーティング、DNS、電源などを設定するのは楽しいよ。冗長なロードバランサーやバックエンドサービス、データベースを設定するのも楽しいし。やるのは難しくないけど、全部を正しくやるのが難しい。いじれる設定パラメータは無限にあるけど、実際に機能するのはほんの一部。残念ながら、自宅でうまくいく設定が本番環境では通用しないことが多いけど、実際の環境をシミュレーションするために負荷テストを行うことはできるかも(ただし、複数のエンドポイントから複数のクライアントをシミュレーションするのは思ったより難しい)。それに、本番用の機器を手に入れるのは大変。F5が2台も転がってるなんてことはないし。冗長な場所があるから、少なくとも4台のF5が必要だよ。それはかなりの出費だね。ほとんどの環境では、ランダムな人が本番(またはテスト)のF5をいじるのは避けたいし。NASやVMサーバー、Dockerレジストリなんかも同じだよ。小さな会社は今やクラウドに移行してるから、エンドツーエンドのセットアップを経験することは少なくなってるんじゃないかな。

他の人の意見も正しいよ。Google Driveはちょっと高いし、Hetznerは安くて十分に使える。でも、データの使い方にもよるよね。俺の場合、日曜日の写真家だから、一度に何GBも扱うことが多い。普段はローカルで写真を編集してるけど、時々昔のデータを見返したくなる。ダウンロードできるけど、めんどくさいし遅いんだよね。Google Driveのファイルストリームはこれに関しては最悪で、ファイルがアップロードされてるかどうかわからない。OneDriveもあんまり変わらない。Dropboxは試したことないけど。HetznerにはSMBを公開してるストレージボックスがあるけど、暗号化やIPフィルタリングが強制されてないみたいで、ちょっと不安だな。あと、俺のインターネット接続は5Gbのダウン、0.5のアップを装ってる。ダウンはだいたい期待通りだけど(俺のマシンは1GbのNICしかないし)、アップはたまにすごく遅い。ローカルNASを使う方がずっと速いよ。ZFSだから、バックアップを暗号化されたオフサイトストレージに送るのも簡単だし。24時間365日動かす必要もないから、電力使用量にも助かる(ここでは0.22 €/kWh)。> 年を取るにつれて、時間が有限な資源だと気づくようになるよね。お金は有限に見えるけど、いつでももっと稼げるから。確かに、ファイルの転送を待つのはすぐに飽きる。もっと有意義なことに時間を使いたいよ。新しいカーネルが出たときに、NASにはたまに5分くらいの手間がかかるだけだし。

著者です、全く同意するよ。実際、これについても書いたんだ: https://ergaster.org/posts/2023/08/09-i-dont-want-to-host-se... 自宅のラボは俺の趣味なんだ。楽しむためと新しいスキルを学ぶために維持してる。数人の同僚とインフラオタクのクラブを作って、アプローチを比較するのがすごく楽しいよ!

価格や労力はほとんど関係ないよ。私の自宅ラボは自分のもので、地元にあって、自分と壁のコンセントだけに答えるものだから。あと、私の住んでるところは、インターネットがあまり信頼できないから、他の選択肢は考えられない。

これいいね!俺もMac Miniで似たようなホームラボを持ってるよ。[1] 暗号化の問題は面白いね。ディスク暗号化はオンにしてないんだ。電源障害からサーバーが復旧できるようにしたいから。電源が切れて再び入ると、サーバーは暗号化を解除するまでオフラインになっちゃう。君の「Wake on LAN」は暗号化とどうやって連携してるの?

記事の中で大きな黄色いメモボックスに書いてあったよ。IP KVMを使うか、Dropbear SSHサーバーをinitramfsにインストールすることができる。

なんでみんながMinisforumの製品を他の選択肢より好むのか全然わからない。残念ながら一つもらったけど、正直言って、クソみたいなファームウェアや拡張性のなさ、AliExpressのハードウェアを買うときの妥協点が多すぎて、全然感心しないよ。同じお金で、中古のエントリーモデルのDell/HP/Lenovoサーバーを手に入れるか(E3/W/他のエントリーレベルのXeonなら、電力もそんなに悪くないし)、良いATXケースを買って、オフリースのSupermicroハードウェアで電源を入れればいいじゃん。そうすれば、OOB管理やホットスワップベイ、本物のSASカード、リアルな10G NIC、ECC RAMとか、そういう妥協をしなくて済むよ。もしかして、ちょっとハードウェアを組み立てるのが怖いのかな?上記の機材を使ったシステムを見たこともあるし、自分でも持ってるけど、もう10年以上問題なく動いてるよ。古いSandy Bridge時代のE3でも、たぶんRPi5やN100よりも性能が良くて、回転ディスクがなければ30-40W以上は消費しないしね。AMDを避けて、新しいTバリアントのIntelチップを探せば、両方手に入ると思うよ。

ECC対応のハードウェアは、だいたい電力をめっちゃ食うよね。

N100は、どのIvy BridgeのE3よりも速くて効率的だよ。アイドル時のXeonはだいたい20W多く消費してて、国の平均電気料金で年間30ドルくらいになる。負荷が増えるとその差は広がるし、拡張性が必要ない人が安いミニPCを選ぶ理由がわかるよ。

MinisforumのマザーボードBD795i SEをRyzen 9 7945HX(16コア、32スレッド)で購入したばかり。価格対性能は最高だよ。5台の14TB Seagate Exosドライブ、2TB NVME、500GBブートSSD、96GBのDDR5メモリでNAS/VMサーバーを構築中。3Uのホットスワップ5台ドライブキャディを含めて、全部で1,200ドル以下で揃えられた。これ以上のものはないね。

以前はミニPCがすごく好きだったけど、2台はほぼ電子ゴミになっちゃった。Ethernetがダメになったんだ(雷のせいだと思う)。交換する方法もなくて、OSがハードウェアの問題でクラッシュすることもあったし。

Debianの上にProxmoxをインストールする理由って何?Proxmoxは、基本的にプリシードと同じことをするISOを配布してるんだよね。最近、ProxmoxのISOがうまくインストールできなくて、Debianの上にaptパッケージとしてProxmoxをインストールする羽目になったんだ。それが実際に2回も起こった。これからはDebianだけインストールすることにするよ…

Proxmoxのインストーラーが失敗するマシンに3台遭遇したことがある。CLIでもGUIでも。Debianが最初にそれを回避するんだ。理由は結局わからなかったけど。

いろいろ調べた結果、Proxmoxの設定(必要ならVMのディスクイメージも)をバックアップする方が、OpenTofuやAnsibleでProxmoxのVMを定義したりデプロイしたりするよりずっと簡単そうだね。 https://pve.proxmox.com/wiki/Proxmox_Cluster_File_System_(pm...