シリーズ記事:
ホームサーバー完全構築ガイド #1 OS導入とインフラ設定
ホームサーバー完全構築ガイド #2 サービス群の選定
ホームサーバー完全構築ガイド #3 WordPressのデプロイ
はじめに
私事の忙しさが一段落し、ようやく余暇を得ることができたため、セルフホストサービスの移行計画に再び着手しました。サーバーを直接自宅に設置することで、技術的な探求と実験の幅を広げるとともに、深い知識を習得する絶好の機会となります。こうした背景から、工業用マイクロコンピューターを購入し、サーバーとして設定することを決定しました。自らの手で管理し、カスタマイズする楽しさに加え、新たな技術的な挑戦に対する期待感が高まっています。
2024年の途中、Dockerへのサービス移行を試みましたが、Docker Composeとサーバー保守の知識不足に加え、体調不良も重なり、作業を中断せざるを得ませんでした。この時期に時間を有効活用し、ようやく作業をほぼ完成させることができました。自身の技術的な成長とサービス構築のポイントを振り返るために、この記事を書きました。
この記事シリーズでは、サーバーを自宅で設置するまでの初歩的な過程、つまりハードウェアの選定からサービスアーキテクチャの構築に至るまでの詳細を、順を追って説明していきます。この移行は、技術的な見地だけでなく、私の個人的な成長にとっても一大事業であるため、その一部始終を共有することで、同じ道を歩もうとする他の技術愛好者の皆さんにも役立つことを願っています。
ハードウェアの選定
ハードウェア選定にあたっては、ホームサーバーであるため、24時間365日の稼働を目指します。また、自宅でサーバーを設置する場合、電気代は自己負担となるため、消費電力を最小限に抑えることも重要です。さらに、部屋の空間が限られているため、サーバー筐体のサイズや稼働時の騒音も考慮する必要があります。また、ホストするサービスは高スペックを必要とせず、予想されるアクセス数も多くないため、これらの要件を総合的に考慮し、最終的にTaobao(タオバオ)で工業用マイクロコンピューターを購入し、ホームサーバーの本体としました。スペックは以下の通りです。
価格:CNY ¥948 (約JPY ¥20299.89) (2024/11/05の時点)
-
プロセッサー:Intel® Celeron® J6412
-
グラフィックス:Intel® UHD Graphics for 10th Gen Intel® Processors
-
メモリー:8G DDR4(ブランドが不明)
-
ネットワークインターフェース:Realtek Semiconductor Co., Ltd. RTL8111/8168/8411
-
ストレージ:256G mSATA(ブランドが不明)
-
ポート:
-
- USB 3.0 x 2 + USB 2.0 x 2
-
- DP (バージョン不明) x 1 + HDMI (バージョン不明 x 2)
-
- ネットワークインターフェース 1000 BaseT x 2
-
- COMシリアルポート x 2
-
- Audio x 1 + Mic x 1
-
- SODIMM x 1
-
- M.2 x 1 + mSATA x 1
-
- WiFi (PCIe) x 1
マイクロコントローラーの外観:
マイクロコントローラーの内部:
もし、私と同じようにTaobao(タオバオ)から工業用マイクロコンピューターを購入してサーバーを構築しようと考えており、中国大陸以外にお住まいの方であれば、現地の電気規格に特に注意が必要です。本体に同梱されている電源コード(トランスフォーマー)は、お住まいの地域の電気規格に合わない場合が多々あります。そのため、Taobao(タオバオ)または地元の店舗で、同じ出力仕様を持ち、現地の電気規格に適した電源コード(トランスフォーマー)を別途購入する必要があります。
サービスアーキテクチャ
サービスアーキテクチャに関して、先述のDocker Composeでの失敗を踏まえ、単一のDocker Composeファイルによる設計は不合理であることが明らかになりました。そこで、メンテナンスが少なくLTS(Long Term Support)バージョンのサービスはローカルに実装し、頻繁なアップグレードやメンテナンスが必要なサービスはDockerを用い、Web UIを介して管理することにしました。サービスアーキテクチャの全体像は以下の通りです。
サービス全体では、CloudflareのDNS名前解決サービスを使用して基本的なセキュリティを確保しています。さらに、CloudflareのZero Trustを活用し、特定のプライベートサービスへのアクセスを制御しています。また、ホームサーバーに実装したddclientをCloudflareと連携させ、DDNSを実現しています。さらに、ホームサーバーではローカルに設置したNginxを使用し、リバースプロキシを介してサービスを提供しています。大まかなアーキテクチャは以上の通りですが、実装の詳細は次回の記事で解説します。