blog
copyright ©
creamu Inc. All Rights Reserved.
art direction & design: Kunitaka Kawashimo
code, interaction & photography: creamu Inc.
category: AI

Mac mini をリモート作業マシンにする設定メモ

Mac mini を常時稼働のリモート作業マシンとして使うための設定メモ。手元の MacBook Pro から、自宅でも外出先でも Mac mini の GUI に入って作業できる状態をつくる。Photoshop や Illustrator、Chrome の操作をそちら側に寄せるのが目的。

前提と構成

  • 操作する側:MacBook Pro
  • 操作される側:Mac mini(常時電源オン、ディスプレイなしでも可)
  • 同一ネットワーク内は macOS 標準の画面共有
  • 外出先からは Tailscale で両者を同じ仮想ネットワークに入れてから画面共有

macOS の画面共有は Bonjour で相手を探す仕組みなので、そのままではルーターの外に届かない。Back to My Mac が廃止されて以降、標準機能だけで外から入る方法は用意されていない。そこを Tailscale で埋める。

1. Mac mini の初期設定

ここは実機を触れるうちに済ませておく。リモートからだと詰むものが多い。

自動ログインを有効にする

System Settings → Users & Groups → Automatically log in as で対象ユーザーを指定。再起動後に誰もログインしていないと GUI セッションそのものが存在せず、画面共有で入っても何もできない。後述の Tailscale もログイン後にしか動かないので、無人運用の土台になる設定。

スリープさせない

  • System Settings → Lock Screen → Turn display off on power adapter when inactive を Never
  • 同じく Turn display off on battery when inactive を Never(ノートの場合)
  • System Settings → Energy Saver → Prevent automatic sleeping when the display is off をオン(ノートは Battery → Options… の中)

Lock Screen の項目には「点けっぱなしはディスプレイの寿命を縮める」という警告が出るが、この用途では無視していい。

リモート運用が安定するかどうかは、ほぼここに尽きる。相手が寝ていると Tailscale 上はオンラインに見えても実際の接続は落ちる。

スクリーンセーバを止める(macOS Tahoe では項目が見つからない)

これはスリープとは別問題だが、自動操作を使うなら必須。スクリーンセーバが前面に出ていると画面がその映像で埋まるので、目的のウィンドウを探しても見つからない。パスワード要求を Never にしていても、ロックとは無関係に起きる。

厄介なのは、Tahoe では Lock Screen パネルから Start Screen Saver when inactive の項目が消えていること。設定アプリで「screen saver」と検索するとサイドバーに候補としては出てくるのに、クリックしても右のパネルに該当項目がない。検索インデックスだけが古い構成のまま残っているらしい。

System Settings → Screen Saver の側に Lock Screen Settings というボタンがあり、そこから時間を変更する導線になっている。ただしこのボタンは、ディスプレイがスクリーンセーバより先にスリープする設定のときだけ現れる。上の手順で消灯を Never にしていると条件を満たさず、ボタンが出てこない。

ターミナルから直接書く方が早い。

defaults -currentHost write com.apple.screensaver idleTime -int 0

書き込んだあとはログアウトして入り直す。読み返して 0 が返れば設定されている。未設定のうちは does not exist と返るが、これはエラーではなく初期状態という意味。

defaults -currentHost read com.apple.screensaver idleTime

これでもスクリーンセーバが出るようなら Amphetamine(無料)を入れる。メニューバーからスクリーンセーバとスリープをまとめて抑止でき、オンオフも即座に切り替わるので、リモート運用ではむしろこちらの方が扱いやすい。

解像度を固定する

座標ベースの自動操作を使う場合、接続のたびに解像度が変わると挙動が不安定になる。ディスプレイなしで運用するならダミープラグを挿すか、後述の仮想ディスプレイで固定する。

2. 画面共有をオンにする

System Settings → General → Sharing → Screen Sharing をオン。(i) から Allow access for でアクセスできるユーザーを指定する。同じ画面に出るコンピュータ名と IP を控えておく。

3. リモートログイン(任意)

ターミナル作業用に、また画面共有が繋がらなくなったときの復旧手段として入れておくと安心。System Settings → General → Sharing → Remote Login をオン。

手元の Mac の ~/.ssh/config にエイリアスを書いておくと楽になる。

Host mini
  HostName mac-mini.local
  User yourname

鍵認証にしておけばパスワード入力が要らなくなる。

ssh-keygen -t ed25519
ssh-copy-id yourname@mac-mini.local

長時間走らせる処理は tmux と組み合わせると、接続を切ってもそのまま継続する。回線が切り替わる環境では mosh も効く。

mosh mini -- tmux new -A -s main

4. Tailscale を入れる

両方の Mac に Tailscale をインストールして、同じアカウントでサインインする。これで2台が同じ仮想ネットワーク上にいる扱いになり、ルーターの設定もポート開放も要らない。モバイル回線のような NAT 越しでも通る。

自動起動を有効にする

Mac mini 側は、Tailscale のウィンドウ右上の設定アイコンから Launch Tailscale at Login を有効にする。

ここに落とし穴がある。バージョンによっては、このチェックボックスを最初に押すと一瞬入ってすぐに外れる不具合がある。もう一度押すと有効になり、アプリが動いている間は保持されるものの、再起動すると無効に戻ってしまうケースが報告されている。有効にしたあとに一度再起動して、チェックが残っているか必ず確認すること。

もう一つ。macOS 版の Tailscale はユーザーがログインする前には動かず、ログアウトするとトンネルも止まる。無人運用は、手順1の自動ログインとセットで初めて成立する。片方だけだと、再起動した瞬間に外から到達できなくなる。

管理画面で各デバイスに 100. から始まるアドレスが割り当てられるので、Mac mini のものを控えておく。

5. 手元の Mac から接続する

Screen Sharing アプリ(/Applications/Utilities)を開いて + から接続先を入力する。同一ネットワークならコンピュータ名、外からなら Tailscale のアドレス。Finder の Go → Connect to Server から vnc:// で入っても同じ。

Standard と High Performance

接続時にモードを聞かれる。

  • Standard — VNC ベース。帯域を選ばず、外出先や細い回線でも通る
  • High Performance — ハードウェアエンコードで映像として送る。滑らかで音声も渡るが高速なネットワークが前提。Apple Silicon 同士かつ macOS Sonoma 以降で選べる

High Performance では Display Type で仮想ディスプレイを1〜2枚指定できる。物理モニタを繋いでいなくても手元のディスプレイに合わせた解像度の画面を生やせるので、ディスプレイなしの Mac mini にはこれが本命。2枚選べば手元でデュアルディスプレイとして扱える。

ただし仮想ディスプレイは新しいセッションを開く形になるため、切断したときに作業が継続するかは事前に確認しておく。継続させたい処理があるなら、物理セッションを共有する形(Share Display)にするか、SSH と tmux に逃がす。

使い分け

  • 自宅・オフィスの同一ネットワーク → High Performance + 仮想ディスプレイ
  • 外出先、モバイル回線 → Standard

6. 自動操作を使う場合の権限

Mac mini 側のアプリに、画面の取得と操作の権限を与える必要がある。System Settings → Privacy & Security の Accessibility と Screen Recording に対象アプリを追加する。この登録はリモートからだとやりにくいので、実機を触れるうちに済ませておく。

つまずいたときのチェック

  1. 相手が寝ていないか。Tailscale 上で緑に見えても、スリープ中は実接続を落とす
  2. 相手側の Tailscale が起動しているか。Launch Tailscale at Login が再起動で外れているケースが多い
  3. スクリーンセーバが出ていないか。ロックされていなくても画面全体がその映像になり、自動操作が対象を見つけられない。マウスを動かせばその場は直る
  4. 経路が直結か。tailscale ping マシン名 で via DERP と出たらリレー経由なので遅い。High Performance は諦めて Standard にする
  5. Screen Sharing 自体がオンか。Tailscale が通っていてもこれがオフだと届かない
  6. ユニバーサルコントロールが有効だと、手元で作業中にカーソルが吸い込まれて事故になる。切っておく

ライセンスまわりの注意

Creative Cloud は2台にインストールできるが、同時に使えるのは1台。Mac mini 側で Photoshop を開いている間は手元では開けない。作業を分散させる前提なら、ここは事前に確認しておく。