接続したら、ビルドを始めましょう

注文から初回
xcodebuildまで

クラウドMacワークステーションの操作ガイドです。最初の10分で接続情報の確認、SSHログイン、環境チェックまで進めることを目指します。依存関係のダウンロードやビルドにかかる時間は、プロジェクトによって異なります。

ワークステーション情報を確認

開通後、まずこの4項目を確認

コンソールにログインし、該当注文のインスタンス詳細を開きます。接続先、アカウント、接続ポートはインスタンスに表示される情報を確認してください。注文番号をログインユーザー名として使わないでください。

ワークステーション情報の例・実際の認証情報ではありません

Desk M4

Mac mini M4・メモリ16GB・SSD 256GB

パブリックIP
インスタンス詳細で確認してコピー
ログインユーザー名
コンソールで割り当てられたユーザー名
初期パスワード
安全な環境でのみ確認し、ログに貼り付けないでください
SSH公開鍵
コンソールの該当画面から公開鍵をアップロード

専有の物理マシンをまるごと利用

Desk M4は仮想マシンではないクラウドMacです。macOSのGUIとコマンドラインの両方を利用できます。まず注文に対応するノードを確認し、次に接続情報を確かめましょう。別のワークステーションのアドレスをスクリプトに記入するミスを防げます。

初回はSSH接続がおすすめです。アドレス、ポート、認証が正常かを手早く確認できます。GUIはシステム設定やXcodeの構成など、画面操作が必要な場合に使いましょう。ビルドタスクの常時実行に使う必要はありません。

  • 秘密鍵はお使いのコンピューターから出さないでください。アップロードするのは、 ssh-ed25519 などの形式で始まる公開鍵です。
  • 初期パスワード、秘密鍵、署名証明書のパスワードを通常のログに含めないでください。
  • インスタンスの接続情報がまだ表示されない場合は、コンソールで注文状況を確認してください。アドレスやユーザー名を推測しないでください。
最初の接続

SSHでログインしたらビルドを実行

以下のサンプルIPアドレスとユーザー名を、コンソールに表示される値に置き換えてください。203.0.113.24 はドキュメント用の例示アドレスです。ワークステーションへの接続には使えません。

  1. 01

    鍵を準備

    ローカルで専用の作業用鍵を生成し、パスフレーズを設定します。適切な鍵をすでにお持ちの場合は、対応する公開鍵をアップロードしてください。既存ファイルを上書きしないでください。

    ssh-keygen -t ed25519 -f ~/.ssh/minivps_workstation
    cat ~/.ssh/minivps_workstation.pub
  2. 02

    フィンガープリントを確認

    初回接続時にホスト鍵のフィンガープリントが表示されます。信頼できる情報源から入手した値と照合してください。コンソールに表示がない場合は、サポートチケットで確認します。警告が表示されたという理由だけで、そのまま接続を許可しないでください。

    ssh -i ~/.ssh/minivps_workstation dev@203.0.113.24
  3. 03

    環境を確認

    リモート環境で以下のコマンドを実行し、アーキテクチャ、開発ツールのパス、バージョンを確認します。プロジェクトで別のXcodeバージョンが必要な場合は、バージョンを合わせてから依存関係をインストールしてください。

    uname -m
    xcode-select -p
    xcodebuild -version
    sw_vers

接続からビルドまでの一連の流れ

以下は出力形式の抜粋であり、実行中の結果ではありません。フィンガープリント、所要時間、ビルドログはインスタンスやプロジェクトによって異なります。ビルド成果物のアップロードには、お手元の署名情報と有効なリリース認証情報が必要です。

dev@desk-m4-tokyo
$ 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 outIPアドレス、SSHポート、ローカルネットワーク、ファイアウォール別のローカルネットワークで接続を試します。それでも失敗する場合は、接続時刻とノードを添えてサポートチケットを送信してください。
Permission deniedユーザー名、公開鍵の登録状況、正しい秘密鍵を指定しているか次のコマンドで ssh -v 認証の過程を確認できます。ログを共有する前に、機密情報を削除してください。
Scheme not found現在のプロジェクトディレクトリ、workspace、共有Schemeまず xcodebuild -listを実行してください。CocoaPodsを使うプロジェクトでは、workspaceの指定が必要な場合があります。
Signing failed証明書と秘密鍵、プロビジョニングプロファイル、キーチェーンへのアクセス権まず対話型セッションで署名を一度検証してから、CIでの無人実行に移行してください。
GUIが必要なときは

SSHトンネル経由でリモートデスクトップに接続

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と画面表示の両方が切断される場合は、発生時刻、ローカルネットワークの種類、クライアントのメッセージを控えて、接続に関するサポートチケットを送信してください。

繰り返し作業を任せる

まずタスクを1つ実行し、メインのパイプラインに接続

ワークステーションをお客様自身のCIプロジェクトに登録します。登録パラメーターは各プラットフォームのプロジェクトまたは管理画面から取得してください。他人のトークンを使い回したり、登録トークンをコードリポジトリにコミットしたりしないでください。

GitHub Actions

リポジトリまたは組織のRunner設定でmacOSとARM64を選び、画面に表示される最新のインストールコマンドに従ってセルフホストRunnerをダウンロード、設定します。

設定時に desk-m4 などの用途ラベルを追加します。まず診断タスクを対話型で実行し、インストールパッケージの説明に従って現在のユーザーのバックグラウンドサービスとして登録してください。

以下の self-hosted、macOS、ARM64 とカスタム用途ラベルを組み合わせて指定します。

GitLab Runner

Runnerをインストールしたら、プロジェクトまたはグループでRunnerを作成し、認証トークンを取得します。登録時にはそのマシンに適した実行方式を選択してください。ネイティブmacOSビルドなら、shell executorから始められます。

信頼できるプロジェクトのジョブのみを受け付けるようにし、 macos-arm64 と用途ラベルを設定します。ラベルのないジョブを受け付けるかどうかも、明示的に設定してください。

まず gitlab-runner verify で登録を検証し、最初のジョブログを確認します。

Jenkins Agent

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ラベルを切り替えます。各手順は個別に検証でき、個別に元に戻せます。

01 · データ

まずプロジェクトを同期し、次に署名情報を取り込む

ローカルからrsyncで作業ディレクトリを同期し、ビルド成果物は除外します。証明書は秘密鍵と一緒に、パスワードで保護したファイルとしてエクスポートしてください。プロビジョニングプロファイルは別途移行します。取り込みと検証が済んだら、一時的な転送コピーを削除してください。

rsync -av \
  --exclude DerivedData \
  --exclude build \
  -e "ssh -i ~/.ssh/minivps_workstation" \
  ./App/ dev@203.0.113.24:~/work/App/

完了条件:プロジェクトのファイルが揃い、署名に必要な証明書と秘密鍵が対になっている。

02 · ツールチェーン

一覧を使って依存関係を揃える

ローカルでBrewfileを書き出し、リモート側で内容を確認してからインストールします。Xcodeはプロジェクトで必要なバージョンを用意し、xcodesでインストール済みのバージョンを選択します。その後、Ruby、Bundler、プロジェクトのロックファイルを確認してください。

brew bundle dump --file=Brewfile
brew bundle --file=Brewfile
xcodes installed
xcodes select
xcodebuild -version

完了条件:開発ツールのバージョンがプロジェクト要件に一致し、依存関係のインストールを再実行できる。

03 · CI連携

最後にジョブ割り当てラベルを切り替える

既存のパイプラインはそのまま残し、手動実行の検証タスクを追加します。プロジェクトを読み込めること、署名できること、成果物をアップロードできることを確認してから、本番タスクのruns-onまたはノードラベルを新しいワークステーションに切り替えてください。

cd ~/work/App
bundle install
xcodebuild -list
bundle exec fastlane beta

完了条件:一連のタスクが正常に完了し、成果物を取得でき、失敗した場合はログから原因を特定できる。

これは移行の順序を示したもので、所要時間を保証するものではありません。初回は、依存関係のインストール、SDKのダウンロード、プロジェクトの規模によって、SSHログインより時間がかかることがあります。まずリリース処理を含めずにビルドを検証してください。

ビルド以外の実験にも

環境を分けてからモデルの重みをダウンロード

Desk M4のユニファイドメモリは16GBで、システム、GUI、モデルがこのメモリを共有します。量子化方式、コンテキスト長、同時実行数によって、実行できるかどうかが変わります。追加SSDでストレージ容量は増えますが、メモリは増えません。

MLX:独立したPython環境

仮想環境に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())"

まず小さなモデル、短いコンテキスト、単一リクエストで試します。メモリ負荷を確認してから処理量を増やしてください。

llama.cpp:重みのパスを明示

Homebrewでツールをインストールしたら、ローカルのGGUFファイルを指定して起動します。例のパスは、実際のモデルファイルを配置するディレクトリを作成してから使用してください。パラメーターはインストールしたバージョンのヘルプを確認してください。

brew install llama.cpp
llama-cli --help
llama-cli \
  -m /Volumes/WorkSSD/models/model.gguf \
  -p "Hello" -n 64

GGUFファイルは、選択したモデルのアーキテクチャと量子化形式に対応している必要があります。

Ollama:まずローカルからのアクセスに限定

インストール後、サービスをローカルアドレスにバインドし、モデルの入手元の手順に従って重みを取得します。ローカルのコンピューターから呼び出す場合は、推論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による複数台連携です。接続後のディスク名、デバイス番号、リンク情報は、お使いのインスタンスで実際に返される値を確認してください。他の人のデバイス番号をそのまま使わないでください。

追加SSDを識別

まず外付けの物理ディスクを確認し、ボリューム名、容量、空き容量を照合します。以下のコマンドは情報を読み取るだけで、ディスクをフォーマットしません。

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や依存関係のダウンロードキャッシュは再生成できます。一方、未コミットのソースコード変更、署名用秘密鍵、実験結果はキャッシュから復元できません。両者を分けて管理し、代替できないデータを先にバックアップしてください。更新や契約終了の手続きを行う前に、保管が必要なプロジェクト、成果物、設定を自分でエクスポートしてください。ワークステーションのディスクだけを唯一のバックアップ先にしないでください。

状況が伝わるように共有

困ったときは、この4点を添えてお問い合わせください

インスタンスに関する問題は、注文と紐付けて確認できるよう、まずコンソールにログインしてサポートチケットを送信してください。ログインできない場合、契約前のプラン選び、または追加説明が必要な場合は、次のメールアドレスにご連絡ください: support@macminivps.com。

  • 注文番号とノード:対象のワークステーションを特定できる情報を記載してください。パスワードや秘密鍵は送らないでください。
  • 発生時刻とタイムゾーン:最初に発生した時刻と、安定して再現するかどうかを記載してください。
  • エラーの原文:コマンド、終了コード、重要なログを残し、トークン、証明書の内容、個人情報は削除してください。
  • 実施した確認:たとえばローカルネットワークの変更、SSHポートの確認、ビルド単体での実行など。

返信までの時間について

確認できていない平均返信時間や固定の対応時間帯は設定していません。対応状況は、お問い合わせページおよびサポートチケットへの実際の返信をご確認ください。送信後は同じ問題のチケットを繰り返し作成せず、元のチケットに情報を追加すると状況を追跡しやすくなります。

接続に影響する場合は、SSHとVNCの両方で失敗するかをお知らせください。ビルドだけに影響する場合は、対話型セッションで同じコマンドを実行できるかを記載してください。ネットワーク、認証、環境、プロジェクトのどこに原因があるかを切り分けやすくなります。

手順がわかったら、
プロジェクトにワークステーションを割り当てましょう

Desk M4は、仮想マシンではない専有の物理Mac miniです。注文設定に進む前に、プロジェクトに必要なXcodeのバージョン、利用期間、ストレージを確認してください。在庫状況はコンソールに表示される最新情報をご確認ください。

お支払い方法はUSDT-TRC20またはVisa / Mastercard / Amex(Stripe)のみです。すべて米ドルで決済されます。実際に利用できる決済ゲートウェイは、バックエンドの表示に従います。