Next.jsアプリをMacで常駐サーバーとして動かす方法【launchd設定完全ガイド】

この記事でわかること

  • macOSのlaunchdを使ってNext.jsアプリを常駐プロセスとして管理する方法
  • 設定ファイルの作成手順とlaunchctlでの登録方法
  • よくあるトラブルとメモリ管理の注意点
目次
目次

「Macを再起動するたびにサーバーが落ちる」問題を解決したい

自分でNext.jsのWebアプリを作ったとき、開発中は npm run start で動かしますが、Macを再起動したり、ターミナルを閉じたりするとアプリが落ちてしまいます。

家族用の簡単なツールや、社内向けの管理画面など「常に立ち上がっていてほしい」アプリには困ります。

この問題を解決するのがmacOSの launchd という仕組みです。launchdはMacが起動したときに自動的にプログラムを実行してくれる「常駐管理システム」です。私はこの設定を使って、家族向けの「いってきます」記録アプリをMac常駐で運用しています。

Mac再起動後もlaunchdでNext.jsアプリを常駐させる流れ

launchdとは何か

macOSにはOS起動時に自動で各種サービスを立ち上げる仕組みが内蔵されています。それがlaunchd(ランチディー)です。Windowsで言う「スタートアップ」や「タスクスケジューラー」に相当しますが、より細かな制御ができます。

launchdの設定ファイルを ~/Library/LaunchAgents/ に置くと、そのユーザーがログインしたときに自動実行されます。これを使ってNext.jsアプリを「常駐プロセス」として管理します。

Next.jsアプリとLaunchAgentsとlaunchctlの関係図

実際の設定手順

以下の3ステップで設定します。Claude Codeに設計を伝えて、実際のプログラムと設定ファイルを一括で作ってもらいました。

  1. Next.jsアプリを本番ビルドしておく
    まずNext.jsアプリをビルドして、起動コマンドを確認します。開発用の npm run dev ではなく、本番用の npm run build && npm run start を使います。ターミナルでアプリのディレクトリに移動し、ビルドが通るか確認してください。
  2. 設定ファイルを作成する
    launchdの設定ファイル(.plist)を作成します。~/Library/LaunchAgents/ ディレクトリに保存します。ファイル名は com.{自分の名前}.{アプリ名}.plist という形式が慣例です。私が「ittekimasu」アプリに使った設定ファイルの構成例を参考にしてください。
  3. launchctlで登録・起動する
    設定ファイルを作ったら、launchctlコマンドで登録します。これは一度だけ実行すればOKです(Mac再起動後も設定は保持されます)。
launchdのplistで指定するLabelやProgramArgumentsなどの主要項目

私が実際に使っている構成

私が作った「ittekimasu」アプリは、家族の外出・帰宅をスマホから記録できるWebアプリです。LAN内(192.168.11.43:8080)でアクセスできるように設定しています。

複数のアプリを常駐させる場合は、ポート番号をアプリごとに変えます。私は家族アプリ群は8100番台で統一しています(8108番に技術英語クイズアプリを配備済み)。

launchctlでplist作成から更新まで行う流れ

よくあるトラブルと対処法

launchdの設定でよくハマるポイントをまとめました。

デバッグはStandardOutPath / StandardErrorPathで指定したログファイルを見るのが最も効率的です。tail -f ~/logs/アプリ名-err.log を実行しながら動作確認すると問題が素早く特定できます。
  • 起動しない:ProgramArgumentsのnodeのパスが間違っている → which node で確認
  • ポートが使えない:前のプロセスが残っている → lsof -i :8080 で確認してkill
  • 環境変数が読めない:設定ファイル内のEnvironmentVariablesでPATHを明示的に設定する
  • ログが出ない:StandardOutPathのディレクトリが存在しない → mkdir -p ~/logs
  • 修正したのに反映されない:unloadしてからload し直す
launchdでNext.jsアプリが起動しない時の確認順

メモリ管理の注意点

Next.jsアプリを常駐させるとき、開発中に注意することがあります。常駐中のアプリが動いている状態で next dev(開発サーバー)を同時起動すると、メモリを大量に消費してMacが重くなります。

常駐アプリを修正するときの手順:

  1. コードを修正・確認する
    開発サーバーは最小限の時間だけ起動します。
  2. 確認が終わったら即停止
    開発サーバーを止めてから次のステップへ進みます。
  3. 本番ビルドしてreload
    ビルドを実行してlaunchctlでreloadします。
Next.js常駐運用でのメモリ管理と更新ルール
開発サーバーを長時間起動したままにするとMacが重くなります。「確認したらすぐ止める」を習慣にするだけでメモリ消費が大幅に改善します。

まとめ

この記事のまとめ

  • macOSのlaunchdを使えばNext.jsアプリをMac常駐サービスとして管理できる
  • 設定ファイルを ~/Library/LaunchAgents/ に置いてlaunchctlで登録するだけ
  • 複数アプリはポート番号を変えて同時常駐が可能
  • トラブル時はログファイルを tail -f で監視するのが最速
  • 開発サーバーを長時間起動しないことでメモリを節約する

外部に公開せずとも、自宅のMacをサーバーとして使うのは十分な選択肢です。家族向けアプリや社内ツールのプロトタイプなら、launchdで十分快適に動きます。まずは手元のMacで試してみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

CAPTCHA


このサイトは reCAPTCHA によって保護されており、Google のプライバシーポリシー および 利用規約 に適用されます。

reCaptcha の認証期間が終了しました。ページを再読み込みしてください。

目次