停電しても自動で復活するAIサーバーを旧Macに作った話「落ちない」より「勝手に戻る」が現実解

停電しても自動で復活するAIサーバーを旧Macに作った話「落ちない」より「勝手に戻る」が現実解 つくってみた

「停電しても復活できるように」

自分で書いたこの依頼が、すべての始まりでした。

古いMacBook AirをAIサーバーとして活用している私。突然の停電でシステムが停止するたび、手動で復旧させる日々でした。その「手動」は、いつか限界を迎えると感じていました。

この記事では、古いMacをAIサーバーに転用した私が、停電時の自動復旧を「落ちない」より「勝手に戻る」設計で乗り切った記録と、具体的な手順を解説します。同じように、古いPCをAIサーバーにしている方の参考になれば幸いです。

停電からの自動復旧。私が直面した現実

私は、古いMacBook AirをAIエージェントの自宅サーバーとして使っています。

その名も「Difyサーバー」。第1話から第3話まで、CPU負荷と格闘しながら、なんとか安定稼働にこぎつけました。

(これは、仕事だ…!)

ですが、チート能力なしの凡人転生者である私には、いきなり「落ちないサーバー」を作るなんて無理な話です。

まず、手元のMacBook Airには、Windows PCのような「停電後に自動で起動する」BIOS設定がありません。これはノートPCの宿命とも言えるでしょう。

それでも、私は考えました。

「落ちない」が無理なら、「勝手に戻る」でいいじゃないか。

古いMacBook Airはバッテリーを内蔵しています。これは、短い停電ならバッテリーで稼働し続けられる、いわば「簡易UPS(無停電電源装置)」の役割を果たしてくれるのです。

「停電しても復活できるように」という依頼の真意は、「サーバーが止まらないこと」ではなく、「常に使える状態であること」のはず。

であれば、停電で一時的に停止しても、電源復旧後に自動で元の状態に戻ってくれれば、目的は達成できるはずです。

自動復旧の仕組み。私が試した4つのステップ

「勝手に戻る」設計を実現するため、私は復旧プロセスを分解しました。

自動復旧の4ステップ

  1. Mac本体の起動
  2. 自動ログイン
  3. Dockerの自動起動
  4. コンテナの自動再起動

このうち、最も厄介な「Mac本体の起動」は、ノートPCの特性上、電源ボタンを押すしかありません。しかし、それ以外はソフトウェアでどうにかできるはずです。

ステップ1:Mac本体の起動(ここは手動。だが、手動を減らす)

ノートPCは停電から復旧しても自動で電源が入りません。これは物理的な制約です。ですが、バッテリーのおかげで、一瞬の停電なら落ちずに済みます。

もしバッテリー切れで落ちたとしても、電源ボタンを押すだけで、あとは自動で進むようにすれば、手動での復旧作業は最小限に抑えられます。

これこそが「落ちない」よりも「勝手に戻る」という現実的な解決策なのです。

ステップ2:自動ログインの設定

Macが起動しても、ログイン画面で止まってしまっては意味がありません。ここは「システム設定」で自動ログインを有効にします。

ただし、セキュリティ上のリスクも伴います。そこで、パスワードなしで動かせる処理は、最小限に絞ることにしました。

具体的には、変わったIPアドレスを書き換えるための、たった1つの小さなスクリプトだけです(最小権限)。

ステップ3:Dockerの自動起動

Macがログインしたら、次に必要なのはDockerの起動です。DifyサーバーはDockerコンテナとして動いているため、Dockerそのものが動いていなければ始まりません。

Docker Desktopアプリの設定で「Start Docker Desktop when you log in」にチェックを入れるだけで、ログイン時に自動でDockerが起動するようになります。これで、手動でDockerを立ち上げる手間が省けました。✅

ステップ4:コンテナの自動再起動とルーター問題の解決

Dockerが起動しても、Difyのコンテナが自動で動くとは限りません。ここで活躍するのが、docker-compose.ymlの設定です。

restart: always

この一行を各サービスに追加することで、Dockerが起動した際にコンテナも自動的に再起動するようになります。

しかし、ここで新たな問題が出現しました。

「ルーターの再起動でIPアドレスが変わる問題」です。

停電から復旧すると、ルーターが再起動し、Macに割り当てられるローカルIPアドレスが変わってしまうことがあります。これでは、Difyサーバーにアクセスする際に、毎回IPアドレスを確認し直さなければなりません。

(うわ、めんどくさい…)

そこで私は、ローカルネットワーク名(例:mymac.local)でMacを探す方式を採用しました。Macには標準でmDNS(Multicast DNS)という機能があり、これを使えばIPアドレスが変わっても、常に同じ名前でアクセスできるのです。

これで、IPアドレスの変動という問題も解決できました。✨

「落ちない」より「勝手に戻る」設計図

最終的な自動復旧の仕組みは、以下のようになりました。


【実践】停電時もAIサーバーを「勝手に戻す」3ステップ

この手順は、MacBook AirをAIサーバーとして利用し、DockerでDifyなどのAI環境を構築している方向けです。

1. Macの自動ログイン設定

Macが起動した際に、指定したユーザーアカウントで自動的にログインするように設定します。これにより、手動でのログイン作業が不要になります。

  1. 「システム設定」を開きます。
  2. 「ユーザーとグループ」を選択します。
  3. 「ログイン項目」タブで、自動ログインを有効にするユーザーを選択します。
  4. 注意点:セキュリティリスクを考慮し、AIサーバー専用のユーザーアカウントを作成し、パスワードなしで起動できるスクリプトは最小限に留めることを推奨します。

2. Docker Desktopの自動起動設定

Macログイン後、Dockerが自動的に起動するように設定します。これにより、AIコンテナが動作するために必要なDocker環境が整います。

  1. Docker Desktopアプリケーションを開きます。
  2. 設定(Preferences / Settings)を開きます。
  3. 「General」タブで、「Start Docker Desktop when you log in」にチェックを入れます。
  4. ヒント:Dockerの起動には少し時間がかかる場合があります。

3. Dockerコンテナの自動再起動設定

Dockerが起動した際に、DifyなどのAIサービスコンテナが自動的に再起動するように設定します。これにより、サーバー停止後もサービスが自動復旧します。

  1. docker-compose.ymlファイルを開きます。
  2. 各サービス定義(例: dify-web, dify-api)の下に、以下の行を追加します。
    restart: always
  3. ファイルを保存します。
  4. 補足:ルーターの再起動でIPアドレスが変わる問題は、Macのローカルネットワーク名(例: mymac.local)でアクセスすることで解決できます。

「落ちない」より「勝手に戻る」が、古いMacには現実的だった

「落ちない」サーバーを作るには、高価なUPSや冗長化されたシステムが必要です。それは手の届かない世界。

しかし、「勝手に戻る」設計であれば、手元の古いMacと少しの工夫で実現できます。

「落ちない」より「勝手に戻る」ほうが、古いMacには現実的だった。

これで、急な停電に怯えることなく、AIサーバーを使い続けられます。小さな会社でDXを担当する仲間たちも、この方法で少しでもラクになってくれたら嬉しいです。🙏


このシリーズの読む順番

  1. 第1話:旧MacBook AirをAIエージェントの自宅サーバーにしたら、新たな課題が生まれた
  2. 第2話:CPU 275%。「古いMacだから遅い」は思い込みだった
  3. 第3話:古いMacBook AirでDifyが重いときの、軽量化3ステップ
  4. 第4話:バックアップのテスト中に、本物のバックアップを自分で消した

今日15分:AIサーバーの自動ログイン設定を見直す

まずは、Macの「システム設定」を開き、「ユーザーとグループ」から自動ログインの項目を確認してみましょう。セキュリティと利便性のバランスを考え、AIサーバー専用アカウントでの自動ログインを検討してみてください。

「落ちない」より「勝手に戻る」。これが、私がたどり着いた解決策なのです。

タイトルとURLをコピーしました