セルフホスト型の開発では、ソース、データベース、アーティファクト、キャッシュ、バックアップで耐久性とパフォーマンスの要件が異なるため、個別のストレージ計画が必要です。
実験中は単一の大きなディレクトリでも運用できますが、容量アラート、スナップショット、権限、移行、復元が曖昧になります。ホストを再構築しても残す必要がある状態と、コードから再生成できるデータを明確にする必要があります。
再構築可能性に基づいてデータを分類する
ソースリポジトリ、データベースの状態、アップロードされたテストデータ、コンテナレジストリのレイヤー、パッケージキャッシュ、ビルド出力、ログ、シークレット、バックアップのエクスポートを分けます。それぞれに管理者と消失時の影響を割り当てます。
役割ベースのホームラボストレージ設計も同じ原則を採用しています。ブート、アプリケーションの状態、大容量データ、バックアップは、同じハードウェアを共有しているという理由だけで、単一のポリシーを継承すべきではありません。
ソースはすでにリモートのGit originに存在するかもしれませんが、プッシュしていないブランチは別です。レジストリのレイヤーは再構築できても、非公開のベースイメージは再構築できない場合があります。ディスクを選ぶ前に、こうした違いを書き出してください。
アクティブな状態と大容量アーティファクトを意図的に配置する
| データの役割 | 推奨配置 | 理由 |
|---|---|---|
| データベース | 低遅延の保護ボリューム | 変更が多く、一貫性が重要 |
| Gitリポジトリ | 保護ボリュームとリモートミラー | 小容量だが履歴の価値が高い |
| レジストリ | 保持期間を設定した容量重視の階層 | 大容量で、一部は再構築可能 |
| ビルドキャッシュ | 上限を設定した高速なスクラッチ領域 | 変更が多く、破棄可能 |
| バックアップ | 独立した保存先 | プライマリ障害に耐える必要がある |
データベースファイルと大容量のビルドキャッシュを、同じ無制限の容量ルールの下に置かないでください。データベースボリュームが満杯になった際、キャッシュのクリーンアップを緊急対応にしてはいけません。
すべての役割が1つの物理プールに存在する場合でも、クォータまたは個別のデータセットを使用してください。論理的に分離することで、スナップショット、権限、復元順序が明確になります。
開発者アクセスとサービスIDを分離する
開発者にはリポジトリ、プレビュー、データベースへのアクセスが必要です。ビルドランナーにはより限定された書き込み経路が必要で、バックアップジョブには読み取りアクセスと、保護された1つの保存先が必要です。これらの役割でホスト管理者アカウントを共有しないでください。
ノートパソコンからのマウントでは、プロジェクトデータのみを公開し、コンテナエンジンのデータルート全体を公開しないでください。クライアントとIDモデルに応じてSMBまたはNFSを選択してください。このSMBとNFSのガイドが次の判断に役立ちます。
シークレットはソースリポジトリや再構築可能なキャッシュの外部に保管してください。開発サーバーなしでもアクセスできる場所に、暗号化した復旧用データを保持します。
アプリケーションの一貫性を中心にバックアップを設計する
Gitリポジトリ、データベース固有のダンプ、デプロイ定義、シークレットの参照情報、代替できないアップロードをバックアップします。公開イメージや再生成できるビルドアーティファクトに、同じ保持期間の予算を費やすのは避けてください。
コンテナの復元ワークフローでは、Composeファイル、ボリューム、シークレットが異なる復旧対象であることを確認できます。ホスト全体を盲目的にスナップショットするのではなく、意図的に取得してください。
リポジトリ1つとデータベース1つを、分離したテスト環境に復元します。バックアップが成功したと判断する前に、ユーザー、拡張機能、権限、アプリケーションの起動を検証してください。
フォルダーサイズではなく役割ごとに拡張する
データベースまたはビルドの遅延がボトルネックになったら、高速ストレージを追加します。レジストリやデータセットが増えたら、容量重視のストレージを追加します。実験的なワークロードが安定したサービス領域を脅かすようになったら、2台目のホストを追加します。
空き容量、スナップショットの増加、データベースの遅延、キャッシュの変動、バックアップ所要時間を個別に監視します。単一プールの使用率だけでは、どの役割に変更が必要か説明できません。
1回のクリーンアップ、アップデート、または権限エラーによって、稼働中の状態とその復旧用コピーの両方が失われる可能性があるなら、統合を止めてください。定義と保護された状態から、空のホスト上でサービスを再作成できれば、ストレージ計画は成功です。
最終的なセットアップのルール
すべてのサービスに名前付きの役割、保護された状態、管理されたアクセス経路、テスト済みの復元手順、そしてトポロジーを分割または拡張するための測定可能なトリガーがあれば、セットアップは合格です。
NAS&サーバー設定
もっと読む

研究論文、ノート、プライベートドキュメント向けのローカルRAG環境
元のドキュメントを正本として扱い、インデックス作成を再現可能にし、引用を必須とし、交換可能なモデルを非公開のソースデータから分離する。

開発者はなぜプライベートDNS、VPN、テストアプリにゲートウェイノードを使うのか?
ゲートウェイノードにより、プライベートアプリには管理された1つの名前とアクセス経路を提供し、コンピュートノードは外部に公開せず、交換可能な状態に保てます。

Composeファイル、シークレット、永続データを分離して再現性のあるアプリケーションスタックを構築する方法
Compose定義の移植性を保ち、シークレットを保護し、アプリデータを個別にバックアップして、クリーンなホスト上でスタックを再構築できるようにします。

