今回は自宅の環境を少し修正したので、備忘録として2024年時点の自宅環境を残しておきたいと思います。
もし自宅環境を検討している方が居たら、何かの参考になればと思います。
構成図
雑ではありますが、現在の自宅環境の構成図です。
ユースケース
VPSを利用した自宅サーバーの公開
自宅のIPアドレスを外部へ公開しないために、VPSでVPNサーバーを立ち上げ、VPNサーバー経由で自宅サーバーをインターネット上に公開しています。
本ブログやCELTFは自宅サーバーではありませんが、外出先でGitLabやプライベート用ブログが使えるように自宅サーバーをインターネット上に公開しています。
DMZを利用した自宅ネットワークの保護
自宅のネットワークと公開するサーバーが所属するネットワークを切り分ける事で、万が一公開サーバーに侵入されても自宅ネットワークへの侵入が不可能な構成にしています。
自宅ネットワークからDMZには一方通行でのアクセスが可能で、システム管理はSSHなどを利用して行いつつ、DMZから自宅ネットワークへの通信を遮断して保護しています。
リバースプロキシによるサービスの公開
DMZには複数のサーバーが所属しているため、リバースプロキシを利用して各サービスを外部に公開しています。
リバースプロキシはドメインによりサービスを振り分けており、HTTPS接続によるサービスへのアクセスが可能になっています。
Kubernetesによるマイクロサービスの公開
ちょっとしたサービスの公開を容易に行えるように、Raspberry Pi 4を利用したK8sのクラスタを用意しています。
難点としては、CPUがARMのためx86でビルドされたイメージが使用できないので、必要に応じてイメージのビルドが必要になる問題があります。
その場合は外部に公開しているGitLabリポジトリにコンテナイメージを公開して利用するようにしています。
仮想デスクトップ
複数端末で同一作業を行いたいケースのために、仮想デスクトップを用意しRDPで接続する事でどの端末でも同一環境による作業が行えるようにしています。
ゲームの待ち時間で機械学習の作業を行いたいケースや、ノートPCで追加作業を行いたい際に状態を引き継げない問題があったため、仮想デスクトップ上で作業を統一化する事でどの端末でも同一環境で作業が行えるように用意しました。
機械学習サーバー + マルチメディア用デスクトップ on KVM
機械学習用に2GPUを載せたサーバーを運用していましたが、GPUを使用したマルチメディア系の作業を行えるようにKVMにGPUをパススルーし、Windows 11 Proを仮想マシン上で運用しています。
機械学習をしている際はパススルーを解除して2GPUをフルに使えるようにし、機械学習を行っていない時はKVM上のWindowsにGPUをパススルーし1枚は機械学習、もう一枚はWindows上で利用できるように環境を構築しています。
KVM上のWindowsにはSteam Remote Playを導入しているため、Linuxの開発PCでWindows用のアプリケーションを動かす事もできるようになっています。
自宅サーバー
自宅サーバーでは自宅向けのWebサービスやNASとしての利用を行っています。
おわりに
開発用のPCやゲーム用のPC、ノートパソコンなど色々な環境での作業を行ってきた結果、自宅環境が複雑化してきたため備忘録として記録に残してみました。
自宅で開発をしていて「こういう事ができたら便利なのに」と悩んでいる方が居たら、なにかの参考になれば幸いです。