認証情報のメールを受け取ってから5分あれば、もうリモートデスクトップにログインできているはずです。このページではGUI接続、CLI接続、レイテンシの実測データ、セキュリティ強化までをひと通り解説します。順番どおりに進めればOKです。
各Mac miniは出荷時点でVNC(5900)とSSH(22)の両チャネルが有効になっており、認証情報は同じ暗号化メールに記載されています。Tailscaleはオプションで、導入も管理もご自身の判断でお願いします。
macOSのデスクトップがそのまま表示されます。証明書のインストール、Xcodeのグラフィカルな操作、4K動画の編集など、マウス操作が欠かせない作業に向いています。推奨帯域は10Mbps以上です。
ビルドスクリプトの実行、CIランナーの登録、rsyncでのファイル転送など、日常的に使うメインの接続経路です。レイテンシに強く、2G回線でも動作するため、通常はこちらの利用をおすすめしています。
クラウドMacをプライベートネットワークに参加させ、内部IPで直接アクセスできるため、公開ポートを晒す必要がありません。管理者権限はすべてお客様側にあり、brewコマンド一発で導入できます。
| 方式 | プロトコル / ポート | 向いている用途 | 向いていない用途 | レイテンシへの感度 |
|---|---|---|---|---|
| VNC | RFB / 5900 | GUI操作、証明書インストール、シミュレーター操作、動画編集 | 長時間の自動化タスク | 高い(120ms未満推奨) |
| SSH | SSH / 22 | スクリプト実行、CIランナー、ファイル同期、tmuxでの長時間タスク | GUI操作が必須の一度きりの設定 | 低い(300msでも運用可能) |
| Tailscale | WireGuard / UDP | 複数デバイスからの接続、公開ポートを閉じたトンネル基盤 | ソフトを増やしたくないシンプル運用 | 下位回線の状態に依存 |
お使いの端末もMacであれば、追加インストールは不要です。Finderで⌘K(移動 → サーバへ接続)を押し、認証情報メールに記載のアドレスを下記の形式で入力し、VNCパスワードを入力するだけで接続できます。
新規接続の作成時にノードのIP:5900を入力し、EncryptionはPrefer on、Picture qualityはまずAutomaticにしておき、接続後に下表を参考に手動調整してください。Scalingは100%推奨で、二重縮小による文字のにじみを避けられます。
初回接続でフィンガープリントの確認を求められた場合は、認証情報メール末尾に記載のホストフィンガープリントと照合してから「許可」をクリックしてください。パスワードを5回間違えると60秒間ロックされますが、これは既定の総当たり攻撃対策であり、故障ではありません。
# Finderで⌘K、またはターミナルから直接開く
$ open vnc://203.0.113.10:5900
# 解像度はセッションに合わせて調整(リモート側で実行)
$ displayplacer "id:main res:1920x1080 hz:60"
✓ connected: mini-tokyo-07 (M4, 24GB)
VNCの操作感は「解像度 × 色深度 × 圧縮品質」の3変数で決まります。原則として、まず解像度を下げ、次に色深度を下げ、最後に圧縮品質を調整してください——圧縮によるノイズは低解像度よりコードの視認性に響きます。
| プロファイル | 解像度 | 色深度 | JPEG品質 | 推定帯域 | 推奨ネットワーク |
|---|---|---|---|---|---|
| なめらか優先 | 1280×720 | 16-bit | 4/9 | 3~5 Mbps | 4Gテザリング、大陸間回線 |
| バランス型(既定推奨) | 1920×1080 | 16-bit | 6/9 | 8~12 Mbps | 家庭用ブロードバンド、近距離ノード |
| 画質優先 | 2560×1440 | 24-bit | 9/9 | 20~35 Mbps | 有線ギガビット + 遅延60ms未満 |
色深度を24-bitから16-bitに下げると帯域を約40%節約できますが、コードを書く用途では見た目の差はほぼありません。動画編集や色調整の際は24-bitに戻してください。
ご注文時にSSH公開鍵をアップロードしていれば、納品と同時に鍵認証で直接ログインできます。アップロードしていなくても問題ありません。まずメールに記載の初期パスワードでログインし、下の最初のターミナルの手順に従ってパスワードログインを無効化してください。
# ローカル側:公開鍵をアップロード(初回はパスワード認証)
$ ssh-copy-id -i ~/.ssh/id_ed25519.pub admin@203.0.113.10
# リモート側:パスワードログインを無効化
$ sudo sed -i '' 's/^#\{0,1\}PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
$ sudo launchctl kickstart -k system/com.openssh.sshd
✓ 以降は鍵認証のみを受け付けます
# プロジェクトディレクトリを差分アップロード(再開可能)
$ rsync -avzP --exclude .git ./MyApp admin@203.0.113.10:~/work/
# リモートディレクトリをローカルにマウント(macFUSEが必要)
$ sshfs admin@203.0.113.10:/Users/admin/work ~/remote-work
# 使い終わったらアンマウント
$ umount ~/remote-work
# フルアーカイブビルド用のセッションを開く
$ tmux new -s build
$ xcodebuild archive -scheme MyApp -destination 'generic/platform=iOS'
# Ctrl-b d でデタッチ、切断してもタスクは継続
# 戻ってきたら再接続
$ tmux attach -t build
~/.ssh/configにノードの別名を設定し、ServerAliveInterval 30を追加しておきましょう。以降はssh tokyoだけで直接接続でき、NATのタイムアウトによる切断も同時に解決します。ノードを選ぶ前にこの表を確認してください。数値はICMP pingの中央値(ミリ秒)で、低いほど操作の追従性が良くなります。目安として、60ms未満はローカルに近い操作感、60~120msは日常的な開発に問題なし、150ms超はSSH主体またはヘッドレス運用を推奨します。
| 発信地 | → 東京ノード | → ソウルノード | → シリコンバレーノード | 推奨 |
|---|---|---|---|---|
| 北京 | 52 | 46 | 152 | ソウルを優先、東京をバックアップに |
| 上海 | 38 | 42 | 148 | 東京を優先 |
| 深セン | 48 | 44 | 158 | ソウルと東京どちらも可 |
| 東京 | 2 | 34 | 108 | ローカル直結 |
| ソウル | 33 | 2 | 132 | ローカル直結 |
| シンガポール | 68 | 74 | 168 | 東京がわずかに優位、VNCはバランス型推奨 |
| ロサンゼルス | 102 | 128 | 6 | シリコンバレーを優先 |
mtr -c 500を実行し、中央値を採用
回線条件 アジア圏は複数回線を混合計測して平均を算出、その他地域は現地の主要ISPを使用
ご自身で再測定したい場合は、各ノードのテスト用IPとmtrの使い方をお困りの場合はページのネットワーク診断セクションに掲載しています。ルートトレースを添えたチケット提出用のテンプレートも用意しています。
物理的な距離はソフトウェアでは解決できません。上表の40msと150msの差は、どんな圧縮パラメータを使っても埋められません。アジア圏のお客様は東京またはソウル、アメリカ大陸のお客様はシリコンバレーを標準としてください。
回線状況が良くないときは、VNCを「なめらか優先」プロファイル(16-bit色深度+中程度のJPEG品質)に切り替えてください。フレームレートが12fpsから25fps以上まで改善することが多く、コードのスクロールも残像感がなくなります。
2.4GHz Wi-Fiは±30ms程度のジッターが発生しやすいですが、有線接続では±3ms程度に抑えられます。VNCは絶対的な遅延よりジッターに敏感で、平均50msでもジッターが大きい場合、安定した80msより体感が悪くなることがあります。
コンパイル、パッケージング、ファイル転送はすべてSSH経由でバックグラウンド実行し、VNCはマウス操作が必要な場面だけに限定してください。画面の再描画が発生しない分、帯域をデータ転送に回せます。
このマシンはお客様専有の物理ノードであり、セキュリティ強化の責任もお客様側にあります。以下の5項目を順番に実施すれば、公開範囲はほぼ最小化できます。
/etc/ssh/sshd_configのPort 22を高位ポート(例:2222)に変更するだけで、自動スキャンによるトラフィックを9割以上削減できます。brew install fail2banを実行後、sshd jailを有効化してください。既定では5回失敗すると10分間ブロックされ、CI運用には影響しません。# ローカル側でトンネルを構築:リモートの5900をローカル5901にマッピング
$ ssh -N -L 5901:localhost:5900 admin@203.0.113.10
# 別ウィンドウを開いてローカルポートに接続
$ open vnc://localhost:5901
✓ VNCトラフィックはすべてSSH経由で暗号化されています
このマシンをself-hosted runner専用として使う場合は、GUIセッションを一切開かない運用がおすすめです。公開範囲を減らし、メモリ消費を抑え、VNCの帯域も不要になります。
svc.shがLaunchDaemonを生成し、起動時の自動起動、クラッシュ時の自動再起動、切断時の自動再接続を行います。security unlock-keychainを実行しておけば、署名処理がGUIセッションのダイアログに依存しなくなります。# 画面共有を無効化(必要になれば即再有効化可能)
$ sudo launchctl disable system/com.apple.screensharing
# GitHub Actions runnerを登録して常駐させる
$ ./config.sh --url https://github.com/org/repo --token XXXX
$ sudo ./svc.sh install && sudo ./svc.sh start
# ビルド前に署名用キーチェーンをロック解除
$ security unlock-keychain -p "$KC_PASS" ci.keychain-db
✓ runner online, no GUI session
症状に該当する項目を見つけて、まずは一行コマンドで対処してみてください。それでも解決しない場合は、症状と試した手順を添えてチケットを送ってください。初回返信は2時間以内です。
| 症状 | よくある原因 | 一行での対処 |
|---|---|---|
| VNCが黒画面になる | 画面共有サービスが異常終了している | sudo launchctl kickstart -k system/com.apple.screensharing |
| VNCがカクついてフレームが落ちる | 画質プロファイルが回線の許容量を超えている | 色深度を16-bitに、JPEG品質を4/9に、解像度を1280×720に下げる |
| SSH接続がタイムアウトする | ポート変更後もポート22に接続している、またはローカルのファイアウォールでブロックされている | ssh -p 2222 admin@203.0.113.10 -vでハンドシェイクがどこで止まるか確認する |
| SSHが鍵を拒否する | ローカルの秘密鍵の権限が緩すぎる | chmod 600 ~/.ssh/id_ed25519 |
| SSHが頻繁に切断される | NATのアイドルタイムアウトで長時間接続が切られている | printf "ServerAliveInterval 30\n" >> ~/.ssh/config |
| クリップボードが同期しない | リモート側のクリップボードサービスがハングしている | SSHでkillall pboardを実行すると、サービスが自動再起動します |
| トンネル経由の5901に接続できない | トンネルのプロセスが終了している | ssh -N -L 5901:localhost:5900 admin@203.0.113.10を再実行する |
Xcodeの署名エラーやキーチェーンのロック解除を含む、より詳しい手順はトラブルシューティングガイドに掲載しています。
お支払いから通常10分以内にVNC/SSHの認証情報をお届けします。1日単位でのレンタルで、7日以内なら未使用日数分を返金いたします。