Mac miniを自宅サーバ化するためにスリープ無効化・SSH鍵認証・UPS復旧設定を行う
自宅サーバ用途でMac miniを使う場合、通常のデスクトップ利用とは違い、勝手にスリープしたり、停電復旧後に起動しない状態になると困ります。
今回は、Mac miniをSSHで管理できる常時稼働マシンとして使うために、以下の設定を行いました。
- Mac miniのスリープ無効化
- ディスプレイ・ディスクスリープの無効化
- SSH鍵認証の設定
- パスワードSSHログインの無効化
- 停電復旧時の自動起動設定
- UPS運用を前提にした復旧設定
前提
Mac miniには、手元のMacから以下のようにSSH接続できる状態にしてあります。
ssh snowpool@mac-mini
ユーザー名は snowpool、ホスト名は mac-mini としています。
Mac miniのスリープを無効化する
まず、Mac miniへSSH接続します。
ssh snowpool@mac-mini
接続後、以下のコマンドを実行します。
sudo pmset -a sleep 0 displaysleep 0 disksleep 0
各設定の意味は以下の通りです。
sleep 0:本体をスリープさせないdisplaysleep 0:ディスプレイを自動でオフにしないdisksleep 0:ディスクを停止させない
設定後、以下のコマンドで現在の電源設定を確認します。
pmset -g
実行結果は以下のようになりました。
System-wide power settings: Currently in use: standby 0 Sleep On Power Button 1 autorestart 1 powernap 1 networkoversleep 0 disksleep 0 sleep 0 (sleep prevented by powerd) ttyskeepawake 1 displaysleep 0 tcpkeepalive 1 powermode 0 womp 1
pmsetの確認ポイント
今回重要なのは、以下の項目です。
standby 0 disksleep 0 sleep 0 displaysleep 0 autorestart 1 womp 1 ttyskeepawake 1 tcpkeepalive 1
本体スリープ・ディスプレイスリープ・ディスクスリープ
disksleep 0 sleep 0 displaysleep 0
この3つが 0 になっていれば、主要なスリープ設定は無効化できています。
- 本体スリープ:無効
- ディスプレイスリープ:無効
- ディスクスリープ:無効
また、以下のように表示されています。
sleep 0 (sleep prevented by powerd)
これは、macOSの電源管理プロセスである powerd が、スリープを抑止している状態です。
スタンバイ設定
standby 0
standby が 0 のため、スタンバイにも移行しない設定になっています。
停電復旧時の自動起動
autorestart 1
autorestart が 1 になっていれば、電源障害から復旧したときに自動起動する設定が有効です。
自宅サーバ用途では重要な項目です。
Wake on LAN
womp 1
womp は Wake on LAN に関係する設定です。
SSHサーバとして使う場合、ネットワーク経由で起こせる可能性があるため、有効で問題ありません。
SSH接続中にスリープしない設定
ttyskeepawake 1
ttyskeepawake が 1 になっているため、SSHやターミナル接続がある間はスリープしない状態になります。
TCP KeepAlive
tcpkeepalive 1
tcpkeepalive が 1 になっているため、SSHなどのネットワーク接続維持に有利です。
SSH鍵認証を設定する
次に、SSHログインをパスワード認証ではなく、鍵認証に変更します。
すでにAWSやGMO VPSなどでSSHキーを使っているため、既存の鍵と混ざらないように、Mac mini専用のSSH鍵を作成します。
- Mac mini専用のSSH鍵を新規作成する
- 鍵ファイル名で用途を明確にする
~/.ssh/configで接続時に自動で鍵を切り替える
これにより、既存のAWSやGMO VPS環境には影響を与えずにMac mini専用のSSH鍵を使えます。
Mac miniから一度ログアウトする
SSH鍵は手元のMac側で作成するため、Mac miniから一度ログアウトします。
exit
Mac mini専用のSSH鍵を作成する
手元のMacで、以下のコマンドを実行します。
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_macmini_home -C "macmini-home"
鍵ファイル名は以下にしました。
id_ed25519_macmini_home
途中で以下のようにパスフレーズを聞かれます。
Enter passphrase (empty for no passphrase):
今回は自宅内のサーバ用途で、自動接続しやすくするため、空Enterにしました。
作成後、以下のコマンドで鍵ファイルを確認します。
ls ~/.ssh/id_ed25519_macmini_home*
以下の2つが作成されていればOKです。
/Users/snowpool/.ssh/id_ed25519_macmini_home /Users/snowpool/.ssh/id_ed25519_macmini_home.pub
id_ed25519_macmini_home:秘密鍵id_ed25519_macmini_home.pub:公開鍵
秘密鍵は外部に出さないようにします。
Mac miniに公開鍵を登録する
次に、作成した公開鍵をMac miniへ登録します。
ssh-copy-id -i ~/.ssh/id_ed25519_macmini_home.pub snowpool@mac-mini
このとき、Mac miniのログインパスワードを聞かれるので入力します。
これで、手元のMacの公開鍵がMac mini側の ~/.ssh/authorized_keys に登録されます。
ssh-copy-id が使えない場合
macOS環境によっては ssh-copy-id が入っていない場合があります。
その場合は、以下のように公開鍵を手動で登録できます。
cat ~/.ssh/id_ed25519_macmini_home.pub | ssh snowpool@mac-mini 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys'
SSH configを設定する
毎回鍵ファイルを指定するのは面倒なので、手元のMac側で ~/.ssh/config を設定します。
vim ~/.ssh/config
以下を追記します。
Host mac-mini
HostName mac-mini
User snowpool
IdentityFile ~/.ssh/id_ed25519_macmini_home
IdentitiesOnly yes
これで、以下のように短いコマンドで接続できます。
ssh mac-mini
パスワードを聞かれずにログインできれば、SSH鍵認証の設定は成功です。
パスワードSSHログインを無効化する
鍵認証でログインできることを確認したら、次にパスワードSSHログインを無効化します。
注意点として、必ず先に別ターミナルで ssh mac-mini による鍵ログインが成功することを確認してから作業します。
確認しないままパスワード認証を無効化すると、設定ミスがあった場合にSSHで入れなくなる可能性があります。
Mac mini側で、SSH設定ファイルを編集します。
sudo vim /etc/ssh/sshd_config
以下の行を探します。
#PasswordAuthentication yes
これを以下のように変更します。
PasswordAuthentication no
保存後、リモートログインを一度OFFにしてからONにします。
sudo systemsetup -setremotelogin off sudo systemsetup -setremotelogin on
macOSでは、これをsshd再起動の代替として使えます。
これで、鍵を持っている端末以外からはSSHログインできない状態になります。
接続確認
手元のMacから、以下で接続できるか確認します。
ssh mac-mini
パスワードなしでログインできればOKです。
また、鍵を指定しない接続や、鍵を持たない端末からのパスワードログインはできなくなります。
UPS運用に向けた自動起動設定
次に、UPS運用を想定して、停電復旧時にMac miniが自動起動するように設定します。
まず、現在のAutoBoot設定を確認します。
nvram -p | grep AutoBoot
何も表示されない場合は、AutoBootが明示的には設定されていない状態です。
以下のコマンドを実行します。
sudo nvram AutoBoot=%03
再度確認します。
nvram -p | grep AutoBoot
以下のように表示されれば設定できています。
AutoBoot %03
AutoBoot=%03 の意味
この設定は、簡単に言うと以下の意味です。
電源が復旧したら、自動でMacを起動せよ。
nvram は、NVRAMを操作するコマンドです。
- NVRAMは Non-Volatile RAM の略
- 電源を切っても設定が保持される
- macOSが起動する前の段階から有効
OS側の設定というより、Mac本体のファームウェア設定に近いレイヤです。
AutoBoot
AutoBoot は、Appleが用意している起動制御用の変数です。
名前の通り、自動起動に関係します。
%03 の意味
AutoBoot の値はビットフラグとして扱われます。
| 値 | 意味 |
|---|---|
%00 |
自動起動しない |
%01 |
電源接続時に起動 |
%02 |
蓋開閉など、特定条件で起動 |
%03 |
自動起動条件を有効化 |
%03 は 0b11 に相当し、自動起動に関する条件を有効化する設定です。
macOSのGUI設定との関係
macOSのGUIには、電源障害後に自動的に再起動する設定があります。
内部的には、この AutoBoot に関連する設定が使われます。
ただし、GUI設定が反映されない場合や、確認しづらい場合があります。
そのため、サーバ用途ではCLIから明示的に設定しておくと安心です。
AutoBootを戻したい場合
自動起動を無効化したい場合は、以下を実行します。
sudo nvram AutoBoot=%00
これで、自動起動しない設定に戻せます。
今回の設定まとめ
今回の設定により、Mac miniは以下の状態になりました。
- 本体スリープしない
- ディスプレイも自動スリープしない
- ディスクも停止しない
- SSH鍵認証でログインできる
- パスワードSSHログインは無効
- 停電復旧時に自動起動する
- Wake on LANも有効
注意点
パスワードSSHを無効化する前に、必ず鍵認証でログインできることを確認します。
特に、以下の確認は重要です。
- 別ターミナルで
ssh mac-miniが成功するか ~/.ssh/configのIdentityFileが正しいか- Mac mini側の
authorized_keysに公開鍵が登録されているか - Mac mini側のリモートログインが有効になっているか
また、UPSを使う場合でも、バッテリー切れで完全停止した後に電源が戻るケースを想定して、自動起動設定を入れておくと安心です。
まとめ
Mac miniを自宅サーバとして使う場合、スリープ無効化とSSH鍵認証はほぼ必須です。
特に、自宅内で常時稼働させるRAGサーバ、ローカルLLM、ファイルサーバ、監視用スクリプト、定期実行ジョブなどを動かす場合、勝手にスリープされると運用が不安定になります。
今回の設定で、Mac miniは「SSHで安全に管理でき、停電復旧後も自動で戻ってくる常時稼働マシン」に近づきました。
一言で言えば、以下の状態です。
電源さえ戻れば、Mac miniは自動で立ち上がり、SSH鍵を持つ端末からだけ管理できる。
自宅サーバ用途では、この状態にしておくとかなり安心です。

コメント