初めてのホームラボを始めることは、圧倒される経験に感じられるかもしれない。特に、ほとんどのチュートリアルが都合よくスルーしてしまうネットワーキングの課題に取り組むときは。数ヶ月にわたる試行錯誤と創造的な問題解決を経て、このセットアップは、ポートフォリオサイトを動かし、家族のウェブサイトをホストし、ゲームサーバーまでサポートする、セルフホスト型インフラへと成長した。すべては控えめなDell OptiPlex 7070 Microから始まった。ここでは、ゼロから完全なセルフホスティングへと至る道のりの全貌を、途中の障害とその解決方法とともに紹介する。
始まり:なぜクラウドよりセルフホスティングを選んだのか
多くの開発者と同じく、出発点は当たり前の選択、つまりクラウドホスティングだった。しかし複数のプロジェクトを動かし、自由に実験したいと思うと、月5〜20ドルの請求書はあっという間に積み上がっていく。さらに重要なことに、いくつかの具体的な要件がセルフホスティングを魅力的なものにした。
- 個人ポートフォリオサイトをホストしたい
- 家族とのゲーム用にMinecraftサーバーが必要
- インフラを完全にコントロールしたい
- 関わる技術的な課題への好奇心
Dell OptiPlex 7070 Microが出発点になった。コンパクトで省エネルギー、複数のサービスを動かすのに十分なパワーがあり、寝室サーバーのセットアップにぴったりだった。
課題その1:CGNAT地獄を突破する
ここが、ほとんどのホームラボチュートリアルが不足している点だ。彼らは、あなたがグローバルIPアドレスを持っていることを前提にしている。実際には、ほとんどの住宅用インターネット接続はCarrier-Grade NAT(CGNAT)の背後にあり、回避策なしでは自宅からサービスをホストすることはほぼ不可能だ。
Ubuntu Serverをインストールし、基本的なセットアップの準備ができた後、この壁がすぐに立ちはだかった。ドメインはすでにCloudflare経由で購入し、すべてがローカルで設定されていたが、外の世界がサーバーに到達する方法がなかった。
ハイブリッドソリューション:VPS + Tailscale
解決策には、他ではあまり文書化されていない組み合わせが含まれていた。
ステップ1:VPSプロキシのセットアップ。 月5ドルのDigitalOcean VPSを、サービスをホストするためではなく、プロキシゲートウェイとして使う。これにより、インターネットからのトラフィックを受け取れるグローバルIPアドレスが得られた。
ステップ2:Tailscaleネットワークブリッジ。 VPSと自宅サーバーの両方にTailscaleをインストールした。Tailscaleのadvertise-routes機能により、ネットワーク内のデバイスは特定のルートにアクセスできるが、それでもまだ問題があった。VPSから自宅サーバーの特定のポートへHTTPトラフィックをどうルーティングするか?という問題だ。
ステップ3:Nginx Proxy Managerの魔法。 ここでNginx Proxy Managerがゲームチェンジャーとなった。VPS上で動かし、受信トラフィックを受け取ってTailscaleネットワークを経由し、自宅サーバーの特定のポートへプロキシできた。セットアップはこんな見た目になった。
Internet -> Cloudflare -> VPS (Nginx Proxy Manager) -> Tailscale Network -> Home Server
このアーキテクチャは複数の問題を解決した。
- VPSのストレージ制約なしに無制限にウェブサイトをホストできる
- SSL証明書は自動的に処理される
- 自宅サーバーのリソースを完全にコントロールできる
- 実行しているサービスの数に関わらずVPSのコストは一定のままだった
課題その2:ゲームサーバーとUDPトラフィック
Nginxプロキシのソリューションはウェブトラフィックには完璧に機能したが、MinecraftサーバーはUDPを使っており、HTTPプロキシとは相性が悪い。TailscaleドメインもTailscaleのインフラを経由してプロキシされる場合、UDPを扱えない。
そこで登場したのがplayit.gg、ゲームサーバー専用に設計されたトンネリングサービスだ。UDPトラフィックを完璧に処理するトンネルを作成でき、セットアップも簡単だった。ゲーム用のセットアップはこうなった。
- 自宅サーバー上で動くMinecraftサーバー
- 外部アクセス用のplayit.ggトンネル
- 最適なパフォーマンスのためにTailscaleネットワーク経由で接続する家族
このハイブリッドアプローチにより、信頼性の高いウェブホスティングとスムーズなゲーム体験という、両方の良いところを得ることができた。
スケールアップ:複数のサイトとサービス
インフラが整ったところで、拡張が続いた。現在動いているのは:
- 個人ポートフォリオ
- 家族のウェブサイト(clofelmaecampugan.com)
- 家族のブログサイト(doc-agnes.com)
- 家族のゲームセッション用Minecraftサーバー
各サイトは独自のコンテナまたは仮想環境で動作しており、Nginx Proxy Managerダッシュボードを通じて分離・管理可能だ。
進化:純粋なセルフホスティングのためにVPSを手放す
数ヶ月経つと、VPSは、ローカルで潜在的に実行可能なもののための高価な仲介役のように感じられ始めた。ブレイクスルーは、PLDT(現地のISP)へグローバルIPアドレスをリクエストしたことでもたらされた。
動的IPの課題
グローバルIPを取得することは、最初の一歩に過ぎなかった。住宅用接続には通常、定期的に変化する動的IPが付いており、それが起きるたびにサービスが壊れてしまう。
最初の解決策:DDNS。 従来のダイナミックDNSサービスは機能したが、扱いにくく、IP変更が発生した際には時折遅延があった。
現在の解決策:MikroTik + カスタム自動化。 MikroTikルーターにより、より堅牢なシステムが可能になった。
- MikroTik DDNS:主要なIP変更検出を処理する
- カスタムIP監視スクリプト:サーバー上で動作し、変更を検出する
- 自動サブドメイン更新:IP変更が検出されると、スクリプトが自動的にCloudflare DNSレコードを更新する
- Tailscale統合:ネットワーク接続を維持するためにTailscaleの設定を更新する
このセットアップは数ヶ月間、まったく揺るがず、IP変更中もダウンタイムはゼロだった。
ホームラボの拡張:UnraidとGoogleからの完全な脱却
最初のサーバーの成功が拡張につながった。Unraidを動かす2台目のマシンが、以下の目的のために構築された。
- ファイルストレージとバックアップ
- Immich(セルフホスト型のGoogle Photos代替)
- メディアストリーミング
- 追加サービスのホスティング
Googleからの脱却の旅
Google PhotosからImmichへの移行は驚くほどスムーズだった。Immichは以下を提供する。
- モバイルデバイスからの自動写真アップロード
- 顔認識とAIによる整理
- 家族向けの共有アルバム
- データへの完全なコントロール
移行には週末1回分の時間がかかり、今では月額サブスクリプション料金なしに、写真と動画のための無制限のストレージがある。
実世界のコストとトレードオフ
数字の話をしよう。これは重要だ。
月々のコスト:
- 電気代の増加:約500ペソ(およそ9ドル)
- ドメイン登録:年間約800ペソ(年間14ドル)
- もうVPSコストはかからない:年間60ドルの節約
初期投資:
- Dell OptiPlex 7070 Micro:約15,000ペソ
- MikroTikルーター:約3,000ペソ
- Unraidサーバーのコンポーネント:約25,000ペソ
電気代の増加は現実的で継続的なものだ。給料がちょうど同じ月に500ペソ上がったのは、完璧なタイミングだったのか、それとも宇宙的な皮肉だったのか。それはあなた次第だ。
学んだ教訓と技術的な洞察
うまくいったこと:
- 内部ネットワーキングにおけるTailscaleの信頼性
- リバースプロキシにおけるNginx Proxy Managerのシンプルさ
- MikroTikの堅牢なDDNS機能
- コンテナベースのサービス分離
もっと違うやり方でできたこと:
- 最初からもっとパワフルなルーターで始める
- もっと早く電力消費を計画する
- 最初からモニタリングとアラートをセットアップする
- 設定をもっと徹底的に文書化する
予想外の恩恵:
- ネットワーキングの概念への深い理解
- 複雑なシステムのトラブルシューティングへの自信
- デジタルインフラへの完全なコントロール
- 新しいサービスごとに得られる学びの機会
現在のアーキテクチャの概要
現在のセットアップはこんな見た目だ。
Internet
|
v
Cloudflare (DNS/CDN)
|
v
MikroTik Router
|
v
Home Network
|
+-- OptiPlex (Web services)
|
+-- Unraid Server (Storage/Media)
|
+-- Tailscale Network (Internal access)
動いているサービス:
- ウェブホスティング:複数のWordPressサイトと静的サイト
- ファイルストレージ:Immich、Nextcloud
- ゲーム:Minecraftサーバー
- モニタリング:稼働率モニタリング、システムメトリクス
- 開発:Gitリポジトリ、CI/CDパイプライン
セルフホスティングは価値があるのか?
このセットアップに関しては、間違いなくイエスだ。ただし留意点もある。
次のような場合はセルフホスティングを検討しよう:
- 学びとトラブルシューティングを楽しめる
- 自分のデータを完全にコントロールしたい
- 複数のサービスやウェブサイトを運営している
- 信頼できるインターネットと電力がある
- 自分自身のシステム管理者になることを厭わない
次のような場合はクラウドホスティングを続けよう:
- メンテナンスの手間をゼロにしたい
- エンタープライズレベルの稼働率保証が必要
- ビジネスクリティカルなサービスを運営している
- 頻繁に旅行し、リモート管理が必要
次は何か?
ホームラボの旅は、以下の計画とともに続いていく。
- コンテナオーケストレーションのためのKubernetesクラスタ
- クラウドストレージへの自動バックアップ
- ホームオートメーションの統合
- より効率的なハードウェアアップグレード
学びは決して止まらず、それぞれの課題がシステム管理、ネットワーキング、インフラ管理への新しい洞察をもたらしてくれる。
最後に
ホームラボを構築することは、どんなチュートリアルやコースよりも、ネットワーキング、システム管理、問題解決について多くを教えてくれた。確かに電気代は増えたし、確かに「ウェブサイトが落ちてる」という理由で、時々変な時間帯にメッセージが来ることもある。しかし、得られた知識とデジタルインフラへの完全なコントロールは、それに見合う価値がある。
もし似たような旅を検討しているなら、小さく始めて、すべてを文書化し、実験することを恐れないでほしい。最も価値のある学びは、何かが壊れて、それを直す方法を突き止めなければならないときに起きる。
自分自身のインフラを運用することは、単にお金を節約すること以上のものだ。それは、私たちのデジタル世界を動かしているシステムを理解し、それらを自分自身で構築し、壊し、再構築するスキルを持つということだ。