はじめに
本記事では「最小限のリソースで最大限の業務効率化を実現すること」をテーマに
社内PC上の仮想マシンに構築したホームラボ環境と、選定したOSSの採用理由を紹介します。
業務の中で、コマンドや設定手順を調べたり、社内Wikiや工数管理システム、監視画面を開いたりする作業を毎日のように行います。
以前はコマンドや設定内容をメモ帳やExcelで管理していましたが、情報が増えるにつれて検索性が悪化し、「どこかにメモしたはずなのに見つからない」ということが頻繁に起きるようになりました。
また、ナレッジ共有、工数管理、監視ツールなどが別々に存在しており、必要な情報へたどり着くまでに複数の画面を行き来する必要がありました。
そこで、「必要な情報やツールへの入口を一箇所に集約できないか」と考え、社内PC上にホームラボを構築することにしました。
ただし、利用できるリソースは限られています。
環境は社内PC上の仮想マシンで構築し、CPU・メモリはホストPCと共有、ネットワークも固定IPを利用せずNAT構成としました。
成果物

上記は本記事で紹介するOSSを組み合わせて構築したホームラボ環境です
ダッシュボードを起点に、必要なツールへ移動できる構成となっています。
構築環境
| 項目 | 内容 |
| ホストOS | Windows 11 Pro |
| ホストCPU | Core i5-9400 |
| ホストメモリ | 16GB |
| 仮想化ソフトウェア | VirtualBox |
| ゲストOS | Alma Linux 10.1 |
| vCPU | 2 (2コア相当) |
| メモリ割当 | 3GB |
| ストレージ割当 | 20GB |
| ネットワーク | NAT |
ホストPCへの影響を抑えるため、vCPU 2、メモリ3GBという限られたリソース内で運用できる構成を目指しました。
構成概要
システム構成図

各OSSはそれぞれ異なるポートで動作するため、ポート番号を意識したアクセスやVirtualBoxのポートフォワーディング設定が煩雑になります。
そこでCaddyをリバースプロキシとして配置し、サービスごとのURLでアクセスできる構成としました。
仮想マシンはNAT構成のため、ホストPCからのアクセス用にCaddy向けのポートのみポートフォワーディングを設定しています。
ディレクトリ構成
`-- homelab
|-- bytestash_data
|-- caddy
|-- docker-compose.yml
|-- homarr
|-- linkding_data
|-- my-webapps
|-- portainer
|-- trilium
`-- vw-data
設定ファイルやデータのバックアップ、移行が容易になるためバインドマウントで管理しています。
各サービス概要
| OSS | 用途 |
| Homarr | ダッシュボード(入口) |
| Dash. | 仮想マシンのリソース管理 |
| Caddy | リバースプロキシ |
| Portainer | Docker管理 |
| Vaultwarden | パスワード管理 |
| Linkding | ブックマーク管理 |
| Trilium Notes | ナレッジ管理 |
| ByteStash | コマンド管理 |
技術選定
Homarr vs Dashy vs Homepage vs Heimdall
ホームラボの入口となるダッシュボードにはHomarrを採用しました。
私の環境ではメモリを650MBほど使用しており、ほかのダッシュボードと比べると多少重い印象ですが、
・GUIによる設定が楽
・ガジェットが豊富
・各コンテナやリソースの状態が一目で確認できる
という点から利便性を評価し、採用いたしました。
メモリの負荷はheimdall > Homarr > dashy > homepage という所感です。
Dash. vs Beszel vs Glances
仮想マシンのリソース管理ツールにはDash.を採用しました。
GlancesはTopコマンドの上位互換のようなツールで、CPUやメモリ、プロセスなどを詳細を一覧で確認できるところが魅力ですが、メモリ使用量が多かったため軽量なDash.かBeszelを候補としました。
Dash.はCPU・メモリ・ディスク使用率などをシンプルに可視化でき、日常的な状態確認には十分だと判断し採用しました。
Homarrのウィジェットに対応しており、ダッシュボード上から確認できるところもポイントです。
詳細な調査が必要なときはPortainerや仮想マシンから直接確認するため、リソース管理ツールは軽量であることを優先しています。
Caddy vs Traefik
リバースプロキシにはCaddyを採用しました。
TreafikはDockerとの親和性が高いのですが、docker-compose.ymlでリバースプロキシの設定を行う必要があります。
nginxなどの設定経験があるとCaddyのほうが理解しやすかったのでこちらを採用いたしました。
後述しますが、OSSによってはアクセスにHTTPS必須のものがあるため自己証明書が必要になります。
自己証明書の発行や管理もCaddyのほうが理解しやすかったのも理由となります。
Linkding vs Karakeep
ブックマーク管理にはLinkdingを採用しました。
Karakeepはmeilisearchとchromeのコンテナを稼働させるとメモリ使用量が700MBを超えてしまうため、軽量かつ拡張機能あり、かつタグによる分類があるLinkdingにしました。
ブックマークはメモやナレッジソフトでも代用できますが、気軽に記事のストックを行いたかったのでブックマーク管理OSSも追加しました。
Trilium vs Wiki.js vs ByteStash vs Memos
ここが個人的に悩んだところですが、ナレッジ・図作成にTrilium、スニペット保存にByteStashを採用しました。
スニペットの管理もTriliumで事足りますが、コマンドを検索してワンクリックでコピーを行う用途に関してはByteStashの方が使いやすかったので2つインストールすることにしました。
検証履歴や自分のナレッジにはTriliumを使い、インフラ運用でよく使うコマンド集としてByteStashを使用しています。
構築後のリソース使用量
前述の通り仮想マシンのメモリは3GBとなっています。
メモリ使用量は1.57GB、CPUは平常時5%前後です。
サービス利用時はCPUは30%使用することもありますが、普段使いでは十分な余裕があります。
メモリ使用量はあまり前後しません。

大変だった点
NAT構成
ホスト上にVirtualBoxで仮想マシンを構築し、その中にDockerで各サービスのコンテナを構築しました。
DockerDesktopはホスト機のリソースが使われすぎてしまうためこのような構成となりました。
また、個人の目的でプライベートIPアドレスを一つ埋めてしまうのも良くないと考え、NAT構成としました。
そのため、ホストと仮想マシンのポートフォワーディングと仮想マシンとコンテナのポートフォワーディングで混乱する場面がありましたので、IPアドレスに余裕があればブリッジアダプターでの設定をおすすめします。
自己証明書
パスワード管理にVaultwardenを使用していますが、こちらはHTTPSでないとサイトにアクセスできないようでした。
そのため、自己証明書の発行とホストへのインストールが必要となりました。
Vaultwarden以外はHTTP通信できており、CaddyはHTTP接続用に設定ファイルを書いていたため書き直しを余儀なくされたときは億劫に感じましたが、Caddyには設定ファイルに一行追加するだけで証明書が発行されるので思っていたよりも簡単に設定できました。
ローカル環境だとしてもHTTPSを強制しているOSSもあるため、初めからHTTPSで設計することをおすすめします。
改善された点
検索性の向上
現在はコマンドをByteStashで管理しているため、
・キーワード検索
・タグ検索
・ワンクリックコピー
が可能となってことで検索性が向上したと実感できています。

情報の置き場の明確化
・ナレッジ:Trilium
・コマンド :ByteStash
・ブックマーク:Linkding
・パスワード管理:Vaultwarden
どこに何を保存するかが明確になったことで情報を探す時間が減ったと感じています。

まとめ
前述した通り、これまでメモ帳やExcelで管理していたナレッジやコマンドをByteStashやTriliumで管理するようにしたことで、検索性が向上し、実務でも使いやすくなりました。
また、ブックマークやパスワードの管理も地味に便利で、「どこに登録したか」「どこに保存したか」を迷う時間が減ったと感じています。
ダッシュボードについては、アクセス自体はブラウザのブックマークと大きく変わりませんが、各ツールへの導線やコンテナの状態確認を一箇所に集約できるため、ホームラボ全体の管理はしやすくなりました。
ホームラボというと、自宅にサーバーを設置し、ラックやネットワーク機器を並べた大規模な環境をイメージする方も多いかもしれません。
しかし、社内PC上の仮想マシンとDockerを活用するだけでも、十分に実用的な環境を構築することができました。
今回の構築を通して、Docker Compose、リバースプロキシ、証明書管理など、業務にも応用できる知識を学ぶことができたため、単なる業務効率化だけでなく、技術検証環境としても有用だと感じています。
今後はDNSやSSOの導入なども検証しながら、さらに使いやすい環境へ改善していきたいと考えています。







![群馬の法人ITサポートサービス Wide Net[ワイドネット] 群馬の法人ITサポートサービス Wide Net[ワイドネット]](https://www.nedia.ne.jp/wp-content/themes/nedia/images/bnr_bt_widenet03.png)



