MacBookはインタラクティブなクライアントとして使い続け、永続的なLinuxサービス、ストレージ、スケジュール済みジョブを、静かで常時利用可能な1台のノードに配置します。
このコンパクトなトポロジーは、ノートパソコンではmacOSのネイティブツールを使いながら、スリープ、外出、再起動後も維持したいLinux API、データベース、ランナー、コンテナを必要とする開発者に適しています。目的は、小さなデータセンターを作ることではなく、安定したサービス境界を設けることです。
MacBookより長く稼働させる必要があるものを定義する
稼働時間、安定したアドレス、Linuxの動作、またはスケジュール実行を必要とする、繰り返し利用するサービスだけを移行します。データベース、テストAPI、Gitミラー、パッケージキャッシュ、CIランナー、監視などが候補です。一度限りのコンパイルやローカルUI作業は、ノートパソコンに残せます。
この境界によって、サーバーを小さく保てます。永続性や共有アクセスを必要としないジョブをローカルで実行すれば、ネットワーク依存や環境の重複を避けられます。
移行する各サービスについて、必要な復旧時間を記録します。使い捨てのテストAPIは再構築できますが、長期間稼働するデータベースには一貫したバックアップと、テスト済みのリストアが必要です。
静かなコンピュートノードを1台使い、ストレージの役割を分ける
中古のミニPCや小型の低消費電力サーバーで、複数のLinuxサービスに対応できることがよくあります。独立したTinyMiniMicroのテストでは、このクラスをサーバーノードとして評価し、小型だから非力だと決めつけるのではなく、消費電力とプラットフォーム上のトレードオフを記録しています。
ホスト、コンテナ、稼働中のデータベースには内蔵SSDストレージを使用します。失いたくないファイルは保護されたストレージに置き、バックアップは別のデバイスまたは場所に送ります。USBディスクはバックアップ先にできますが、サービスの状態を保存する唯一のコピーに、いつの間にかならないようにしてください。
再構築可能なイメージとキャッシュは、保持期間を設定した容量制限付きのボリュームに置きます。データベースやオペレーティングシステムを保持するファイルシステムを、それらでいっぱいにしないようにします。
MacBookからLinuxへの安定した経路を作る
Linuxノードに予約済みアドレスとローカルDNS名を割り当てます。管理にはSSH、WebサービスにはHTTPS、自宅外からのアクセスにはプライベートなリモートアクセス用トンネルを使用します。データベースをインターネットに直接公開しないでください。
共有ファイルは、アプリケーションが本当にファイルシステムへのアクセスを必要とする場合に限ってマウントします。macOSとLinuxを混在させて使う場合は、SMBとNFSの比較ガイドで、人が使う共有とマシンが使うマウントに異なるプロトコルを採用する理由を説明しています。
EthernetとWi-Fiを別々にテストします。開発作業はWi-Fiでも使える状態を維持し、大容量のイメージ転送やバックアップでは、サービスのアドレスを変更せずに有線Ethernetを優先できるようにします。
利便性だけを優先した経路からIDとシークレットを切り離す
鍵ベースのSSHアクセスを使用する個人アカウントを作成し、ランナー、データベース、自動化処理には別々のサービスIDを割り当てます。アプリケーションのシークレットは、Gitリポジトリや共有フォルダーではなく、保護された環境変数またはシークレットファイルに保存します。
各サービスが必要とするネットワークとボリュームだけを利用できるように制限します。プレビュー用コンテナにバックアップディレクトリをマウントしたり、CIランナーに、同じノード上にあるという理由だけで汎用の管理者キーを渡したりしないでください。
SSHキー、DNS設定、暗号化されたシークレット、オペレーティングシステムのインストーラーについて、オフラインでの復旧手順を記録します。別のデバイスで利用できるようになるまで、利便性は復旧手段とはいえません。
ノートパソコンなしで復旧できる経路を検証する
MacBookの蓋を閉じ、スケジュール済みのジョブ、データベース、プレビューが稼働し続けることを確認します。Linuxノードを再起動し、手動でログインしなくても、サービスの起動順序、ストレージのマウント、DNS、ヘルスチェックが正常であることを確認します。
データベース1つと設定バンドル1つを、一時的なサービスにリストアします。次に、LAN経由とリモート経路経由の両方でMacBookから接続します。これにより、状態の復旧とクライアントアクセスの両方を検証できます。
メンテナンスによるダウンタイム、リソース競合、または実験上のリスクによって別の役割が必要になった場合にのみ、2台目のノードを追加します。コンパクトなラボにクラスタ化されたコントロールプレーンや共有ストレージが必要になり、開発者向けサービスが削減する作業量よりも管理作業のほうが増えた時点で、拡張を止めます。
最終的なセットアップのルール
すべてのサービスに明確な役割、保護された状態、管理されたアクセス経路、テスト済みのリストア、そしてトポロジーを分割または拡張するための測定可能なきっかけがあれば、このセットアップは合格です。
NAS&サーバー設定
もっと読む

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

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

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

