Desk M4
Mac mini M4・メモリ16GB・SSD 256GB
- パブリックIP
- インスタンス詳細で確認してコピー
- ログインユーザー名
- コンソールで割り当てられたユーザー名
- 初期パスワード
- 安全な環境でのみ確認し、ログに貼り付けないでください
- SSH公開鍵
- コンソールの該当画面から公開鍵をアップロード
クラウドMacワークステーションの操作ガイドです。最初の10分で接続情報の確認、SSHログイン、環境チェックまで進めることを目指します。依存関係のダウンロードやビルドにかかる時間は、プロジェクトによって異なります。
コンソールにログインし、該当注文のインスタンス詳細を開きます。接続先、アカウント、接続ポートはインスタンスに表示される情報を確認してください。注文番号をログインユーザー名として使わないでください。
Mac mini M4・メモリ16GB・SSD 256GB
Desk M4は仮想マシンではないクラウドMacです。macOSのGUIとコマンドラインの両方を利用できます。まず注文に対応するノードを確認し、次に接続情報を確かめましょう。別のワークステーションのアドレスをスクリプトに記入するミスを防げます。
初回はSSH接続がおすすめです。アドレス、ポート、認証が正常かを手早く確認できます。GUIはシステム設定やXcodeの構成など、画面操作が必要な場合に使いましょう。ビルドタスクの常時実行に使う必要はありません。
ssh-ed25519 などの形式で始まる公開鍵です。以下のサンプルIPアドレスとユーザー名を、コンソールに表示される値に置き換えてください。203.0.113.24 はドキュメント用の例示アドレスです。ワークステーションへの接続には使えません。
ローカルで専用の作業用鍵を生成し、パスフレーズを設定します。適切な鍵をすでにお持ちの場合は、対応する公開鍵をアップロードしてください。既存ファイルを上書きしないでください。
ssh-keygen -t ed25519 -f ~/.ssh/minivps_workstation
cat ~/.ssh/minivps_workstation.pub初回接続時にホスト鍵のフィンガープリントが表示されます。信頼できる情報源から入手した値と照合してください。コンソールに表示がない場合は、サポートチケットで確認します。警告が表示されたという理由だけで、そのまま接続を許可しないでください。
ssh -i ~/.ssh/minivps_workstation dev@203.0.113.24リモート環境で以下のコマンドを実行し、アーキテクチャ、開発ツールのパス、バージョンを確認します。プロジェクトで別のXcodeバージョンが必要な場合は、バージョンを合わせてから依存関係をインストールしてください。
uname -m
xcode-select -p
xcodebuild -version
sw_vers以下は出力形式の抜粋であり、実行中の結果ではありません。フィンガープリント、所要時間、ビルドログはインスタンスやプロジェクトによって異なります。ビルド成果物のアップロードには、お手元の署名情報と有効なリリース認証情報が必要です。
$ ssh -i ~/.ssh/minivps_workstation dev@203.0.113.24
The authenticity of host '203.0.113.24' can't be established.
ED25519 key fingerprint is SHA256:…
Are you sure you want to continue connecting (yes/no/[fingerprint])?
yes
Warning: Permanently added '203.0.113.24' to the list of known hosts.
$ cd ~/work/App
$ xcodebuild -scheme App -destination 'generic/platform=iOS' archive
…
** ARCHIVE SUCCEEDED **
$ bundle exec fastlane beta
…
Successfully uploaded the new binary to App Store Connect
Successfully finished processing the build
フィンガープリントを確認してから yesを入力してください。ホスト鍵が変更されたという警告が出た場合は、システムを再インストールしたか、インスタンスを交換したかを先に確認します。すべての known_hosts レコードを削除してチェックを回避しないでください。
| 表示されたメッセージ | まず確認する項目 | 次の手順 |
|---|---|---|
| Connection timed out | IPアドレス、SSHポート、ローカルネットワーク、ファイアウォール | 別のローカルネットワークで接続を試します。それでも失敗する場合は、接続時刻とノードを添えてサポートチケットを送信してください。 |
| Permission denied | ユーザー名、公開鍵の登録状況、正しい秘密鍵を指定しているか | 次のコマンドで ssh -v 認証の過程を確認できます。ログを共有する前に、機密情報を削除してください。 |
| Scheme not found | 現在のプロジェクトディレクトリ、workspace、共有Scheme | まず xcodebuild -listを実行してください。CocoaPodsを使うプロジェクトでは、workspaceの指定が必要な場合があります。 |
| Signing failed | 証明書と秘密鍵、プロビジョニングプロファイル、キーチェーンへのアクセス権 | まず対話型セッションで署名を一度検証してから、CIでの無人実行に移行してください。 |
SSHはコマンド実行や自動化に、VNCはGUI設定や画面操作に使います。まずSSH接続を確認してから画面共有ポートを転送し、VNCサービスをインターネットに直接公開しないでください。
システム設定で画面共有が有効か、どのユーザーにアクセスが許可されているかを確認します。必要なユーザーだけにアクセスを許可してください。設定場所はmacOSのバージョンによって異なる場合があります。
サービスが無効、またはアカウントに権限がない場合は、トンネルを確立してもデスクトップは表示されません。
以下のSSHセッションを実行したままにします。この例では、ローカルの15900番ポートからリモートの5900番ポートへ転送し、ローカルのループバックアドレスだけで待ち受けます。
インスタンスのSSHポートが異なる場合は、コマンドに -p とコンソールに表示されたポート番号を追加してください。
Macでは「画面共有」を使えます。それ以外のシステムでは、互換性のあるVNCクライアントを使ってください。接続先にはローカルアドレスと転送ポートを指定します。リモート側のパブリックIPではありません。
クライアントでの認証には、リモート側でアクセスを許可されたアカウントが必要です。
ssh -N -L 127.0.0.1:15900:127.0.0.1:5900 \
-o ExitOnForwardFailure=yes \
-i ~/.ssh/minivps_workstation dev@203.0.113.24
クライアントの接続先:vnc://127.0.0.1:15900。転送セッションを終了すると、この接続経路も切断されます。インターネットに常時公開されるサービスとして扱わないでください。
まずは解像度1440 × 900、シングルディスプレイから試してください。これはクライアントの調整方法であり、プランの制限ではありません。動的デスクトップや不要なプレビューを無効にし、ファイル転送にはSSHを使いましょう。帯域幅が広くても入力遅延が小さくなるとは限りません。往復遅延、パケットロス、ローカルのWi-Fi環境も影響します。
コマンドラインの応答は正常なのに画面表示が遅い場合は、まずクライアントの画質や解像度を下げてください。SSHと画面表示の両方が切断される場合は、発生時刻、ローカルネットワークの種類、クライアントのメッセージを控えて、接続に関するサポートチケットを送信してください。
ワークステーションをお客様自身のCIプロジェクトに登録します。登録パラメーターは各プラットフォームのプロジェクトまたは管理画面から取得してください。他人のトークンを使い回したり、登録トークンをコードリポジトリにコミットしたりしないでください。
リポジトリまたは組織のRunner設定でmacOSとARM64を選び、画面に表示される最新のインストールコマンドに従ってセルフホストRunnerをダウンロード、設定します。
設定時に desk-m4 などの用途ラベルを追加します。まず診断タスクを対話型で実行し、インストールパッケージの説明に従って現在のユーザーのバックグラウンドサービスとして登録してください。
以下の self-hosted、macOS、ARM64 とカスタム用途ラベルを組み合わせて指定します。
Runnerをインストールしたら、プロジェクトまたはグループでRunnerを作成し、認証トークンを取得します。登録時にはそのマシンに適した実行方式を選択してください。ネイティブmacOSビルドなら、shell executorから始められます。
信頼できるプロジェクトのジョブのみを受け付けるようにし、 macos-arm64 と用途ラベルを設定します。ラベルのないジョブを受け付けるかどうかも、明示的に設定してください。
まず gitlab-runner verify で登録を検証し、最初のジョブログを確認します。
Jenkinsコントローラーで固定ノードを作成し、リモート作業ディレクトリ、Executor数、ラベルを設定します。そのノードの画面に記載された方法に従い、SSHまたはAgent起動コマンドで接続してください。
実行ユーザー、Javaのバージョン、コマンドライン環境が一致していることを確認してください。最初のジョブではツールのバージョンだけを出力し、リリース処理を接続テストに使わないでください。
まずExecutorを1つにして、メモリとディスクの使用量のピークを確認してから並列数を調整してください。
アーキテクチャラベル macos-arm64、用途ラベル ios-build、さらに desk-m4 をこのタイプのワークステーションの識別に使うことをおすすめします。ノードやバージョンのラベルは、特定の環境にジョブを割り当てる必要がある場合にのみ追加してください。ラベルを細分化しすぎると、条件に一致するマシンがなくなることがあります。
name: workstation-check
on: workflow_dispatch
jobs:
check:
runs-on: [self-hosted, macOS, ARM64, desk-m4]
steps:
- name: Check toolchain
run: |
uname -m
xcodebuild -version
df -h
セルフホストRunnerはリポジトリ内のコードを実行します。信頼できない外部からの変更が、署名情報を保持するワークステーションにアクセスできないようにしてください。ビルドとリリースの権限を分け、CIのシークレット変数を使って鍵を渡し、アクセスできるブランチを制限しましょう。
ユーザーディレクトリ全体をそのままコピーしないでください。まず1つのプロジェクトを移行し、再現可能な依存関係を記録してから、CIラベルを切り替えます。各手順は個別に検証でき、個別に元に戻せます。
ローカルからrsyncで作業ディレクトリを同期し、ビルド成果物は除外します。証明書は秘密鍵と一緒に、パスワードで保護したファイルとしてエクスポートしてください。プロビジョニングプロファイルは別途移行します。取り込みと検証が済んだら、一時的な転送コピーを削除してください。
rsync -av \
--exclude DerivedData \
--exclude build \
-e "ssh -i ~/.ssh/minivps_workstation" \
./App/ dev@203.0.113.24:~/work/App/
完了条件:プロジェクトのファイルが揃い、署名に必要な証明書と秘密鍵が対になっている。
ローカルでBrewfileを書き出し、リモート側で内容を確認してからインストールします。Xcodeはプロジェクトで必要なバージョンを用意し、xcodesでインストール済みのバージョンを選択します。その後、Ruby、Bundler、プロジェクトのロックファイルを確認してください。
brew bundle dump --file=Brewfile
brew bundle --file=Brewfile
xcodes installed
xcodes select
xcodebuild -version
完了条件:開発ツールのバージョンがプロジェクト要件に一致し、依存関係のインストールを再実行できる。
既存のパイプラインはそのまま残し、手動実行の検証タスクを追加します。プロジェクトを読み込めること、署名できること、成果物をアップロードできることを確認してから、本番タスクのruns-onまたはノードラベルを新しいワークステーションに切り替えてください。
cd ~/work/App
bundle install
xcodebuild -list
bundle exec fastlane beta
完了条件:一連のタスクが正常に完了し、成果物を取得でき、失敗した場合はログから原因を特定できる。
これは移行の順序を示したもので、所要時間を保証するものではありません。初回は、依存関係のインストール、SDKのダウンロード、プロジェクトの規模によって、SSHログインより時間がかかることがあります。まずリリース処理を含めずにビルドを検証してください。
Desk M4のユニファイドメモリは16GBで、システム、GUI、モデルがこのメモリを共有します。量子化方式、コンテキスト長、同時実行数によって、実行できるかどうかが変わります。追加SSDでストレージ容量は増えますが、メモリは増えません。
仮想環境にMLXと推論ツールをインストールし、システムのPython環境を変更しないようにします。まずモジュールをインポートできることを確認してから、対応するモデルと量子化バージョンを選んでください。
python3 -m venv ~/venvs/mlx
source ~/venvs/mlx/bin/activate
python -m pip install -U pip
python -m pip install mlx mlx-lm
python -c "import mlx.core as mx; print(mx.default_device())"
まず小さなモデル、短いコンテキスト、単一リクエストで試します。メモリ負荷を確認してから処理量を増やしてください。
Homebrewでツールをインストールしたら、ローカルのGGUFファイルを指定して起動します。例のパスは、実際のモデルファイルを配置するディレクトリを作成してから使用してください。パラメーターはインストールしたバージョンのヘルプを確認してください。
brew install llama.cpp
llama-cli --help
llama-cli \
-m /Volumes/WorkSSD/models/model.gguf \
-p "Hello" -n 64
GGUFファイルは、選択したモデルのアーキテクチャと量子化形式に対応している必要があります。
インストール後、サービスをローカルアドレスにバインドし、モデルの入手元の手順に従って重みを取得します。ローカルのコンピューターから呼び出す場合は、推論APIを直接公開せず、SSHポート転送を使用してください。
brew install ollama
OLLAMA_HOST=127.0.0.1:11434 \
OLLAMA_MODELS=/Volumes/WorkSSD/models/ollama \
ollama serve
モデルのダウンロードと使用は、それぞれのライセンスに従ってください。サービスを起動しても、重みの準備が完了したとは限りません。
以下では、 /Volumes/WorkSSD は正しくマウント済みの追加SSDとし、models にモデルの重みを、cache に再生成可能なキャッシュを保存します。これはパスの例であり、システムが自動的にこのボリューム名を使うわけではありません。ディスクがマウントされ、ディレクトリに書き込めることを確認してから作成してください。マウントされていない状態で大きなファイルをシステムディスクに書き込まないようご注意ください。
diskutil info /Volumes/WorkSSD
test -d /Volumes/WorkSSD && test -w /Volumes/WorkSSD
mkdir -p /Volumes/WorkSSD/models /Volumes/WorkSSD/cache
export HF_HOME=/Volumes/WorkSSD/cache/huggingface
追加オプションはSSD +1TB、SSD +2TB、Thunderbolt 5による複数台連携です。接続後のディスク名、デバイス番号、リンク情報は、お使いのインスタンスで実際に返される値を確認してください。他の人のデバイス番号をそのまま使わないでください。
まず外付けの物理ディスクを確認し、ボリューム名、容量、空き容量を照合します。以下のコマンドは情報を読み取るだけで、ディスクをフォーマットしません。
diskutil list external physical
ls /Volumes
df -h
diskutil info /Volumes/WorkSSD
マウントを確認してから、モデル、ビルドキャッシュ、プロジェクトを移動します。移動前に、対象ディレクトリへ書き込むビルドプロセスを停止し、別の場所にバックアップを保管してください。
むやみに eraseDisk やディスク消去コマンドを実行しないでください。ディスクが表示されない場合は、読み取り専用の確認結果を添えてサポートチケットを送信してください。
Thunderbolt 5による複数台連携は、複数マシン間の通信やデータ転送を明確に必要とするワークフロー向けです。各マシンは独立したホストであり、それぞれ別々にOS、タスク、メモリを使用します。
system_profiler SPThunderboltDataType
networksetup -listallhardwareports
ifconfig
インターフェースが認識されても、アプリが分散実行できるとは限りません。ネットワーク、転送プロトコル、タスク分担を設定する必要があります。実際の接続方式や利用可能な構成は、注文前にお問い合わせください。
複数台を接続しても、自動的に大容量メモリを備えた1台のMacになるわけではありません。ビルドが自動で高速化する保証もありません。
DerivedDataや依存関係のダウンロードキャッシュは再生成できます。一方、未コミットのソースコード変更、署名用秘密鍵、実験結果はキャッシュから復元できません。両者を分けて管理し、代替できないデータを先にバックアップしてください。更新や契約終了の手続きを行う前に、保管が必要なプロジェクト、成果物、設定を自分でエクスポートしてください。ワークステーションのディスクだけを唯一のバックアップ先にしないでください。
インスタンスに関する問題は、注文と紐付けて確認できるよう、まずコンソールにログインしてサポートチケットを送信してください。ログインできない場合、契約前のプラン選び、または追加説明が必要な場合は、次のメールアドレスにご連絡ください: support@macminivps.com。
確認できていない平均返信時間や固定の対応時間帯は設定していません。対応状況は、お問い合わせページおよびサポートチケットへの実際の返信をご確認ください。送信後は同じ問題のチケットを繰り返し作成せず、元のチケットに情報を追加すると状況を追跡しやすくなります。
接続に影響する場合は、SSHとVNCの両方で失敗するかをお知らせください。ビルドだけに影響する場合は、対話型セッションで同じコマンドを実行できるかを記載してください。ネットワーク、認証、環境、プロジェクトのどこに原因があるかを切り分けやすくなります。
Desk M4は、仮想マシンではない専有の物理Mac miniです。注文設定に進む前に、プロジェクトに必要なXcodeのバージョン、利用期間、ストレージを確認してください。在庫状況はコンソールに表示される最新情報をご確認ください。
お支払い方法はUSDT-TRC20またはVisa / Mastercard / Amex(Stripe)のみです。すべて米ドルで決済されます。実際に利用できる決済ゲートウェイは、バックエンドの表示に従います。