自宅サーバー設計(ハードウェア編)

Updated: / Reading time: 4 minutes

自分用のRedmineやminioを運用するためにDockerホストを運用していますが、前回から約1年が経過して、少し構成が変わったので整理します。

この記事では、自分用のサービス群を運用するために利用しているサービスやハードウェアの構成を説明します。

前提

  • 昔使っていたMacBookがあるので、これをDockerホストにしたい。
  • HDDが数台あるけど、1個のボリュームにして扱いやすくしたい。
  • ドメイン名でアクセスできるようにしたい。
  • バックアップは、自宅とは別サイトにしたい。
  • ダウンタイムをなくしたいサービスは外部サービスで動作させる。

構成図

現在は以下のような構成になっています。

PlantUML SVG diagram

構成の説明

前回からの変更点とあわせて、構成を説明します。

Docker on Debian

サービスはほぼDockerコンテナとして動作させています。当初はDocker for macで動作させていましたが、qcow2ファイルが肥大化する、ネットワークが不安定、などの問題があるため、Bootcampで確保したパーティションにDebianをセットアップして運用しています。

前回はCoreOS on VirtualHost on MacBookで、一時的にDebian on DeigitalOceanに移行して、やっぱりDebian on MacBookに戻りました。サーバー上でいろいろ作業したい場合、CoreOSはやはり不便ですね。そういうOSなのでしかたありませんが。

TODO: 実は、この記事を執筆している現時点ではまだDebian on VirtualBox on MacBookで、LVM RAID logical volumeの実験が完了したら、上記のように移行する予定です。

運用しているDockerサービス群は、別記事で説明します。

運用作業のためにアクセスする場合は、sshまたはVNC

普段の運用作業はsshで接続します。macOSの調子がおかしい、macOSをアップデートする、などGUIで作業を行う場合はVNCでアクセスします。

この方式は、前回から変わりありません。

“u6k.me”でアクセスできるように、ムームードメインで契約

ムームードメインで年間契約して、MyDNSでドメイン名とIPアドレスを管理しています。IPアドレスが変わっても良いように、Rundeckコンテナで定期的にIPアドレスを通知しています。

前回までは、ジョブをJenkinsで実行していましたが(いわゆる闇のJenkinsおじさん)、現在はRundeckでジョブを実行しています。ただ、Rundeckへの移行は、正直、あまり意味がなかったかなと思っています。

ブログはGitHub Pagesで独自ドメイン + HTTPS

ブログはダウンタイムをゼロにしたく、DockerではなくGitHub Pagesに移行しました。これにより、Dockerホストが不安定になったときやmacOSをアップデートしたいときに、ブログも巻き込まれてダウンしていましたが、現在ではそれはなくなりました。

TODO: ブログのGitHub Pagesへの移行は、この記事執筆時点では検証中です。

HDDはLVMで統合

HDDは、LVM RAID logical volumeで統合しています。この構成の場合、LVMの機能でミラーリングするので、HDDが1個故障する程度なら復旧が可能のはずです。

前回はLVMで統合していただけであり、対障害性の観点からは脆弱でした。そうは言ってもDigitalOcean Spacesにバックアップしているので、絶対に失いたくないデータについてはあまり問題はありませんが。

TODO: この記事を執筆している現在は、まだLVM on macOSからデータを移行している途中です。ある程度の検証ができたら、別記事でセットアップ、復旧手順などを整理したいと思います。

バックアップはDigitalOcean Spacesとクラウドストレージ

Redmineのように絶対に失いたくないデータや、失うと再収集に時間がかかりすぎるクローリング・データなどは、minioサービスの他にDigitalOcean Spacesに保存しています。他のデータはクラウドストレージに保存しようとしていますが、まだ全ては保存できておらず、少しずつ進めています。

MacBookPro

排熱の観点から、風通しの良い場所において、まな板立てに立て掛けています。温度を監視していますが、変な高温になることは今のところありません。

この運用方法は、前回から変わりありません。

おわりに

前回も書きましたが、できればAWSなりDigitalOceanなりに全て移行してしまいたいのですが、どーにもストレージの料金や性能を考えると、自宅ハードウエアがあるならそれで運用したい、という結論になっています。データのサイズがなぁ…

ちなみに、旅行などで長期間自宅を離れる場合に、一時的にDigitalOceanに切り替える運用は、前回から変わらずです。