接続・設定・トラブル解決

原因を特定して、ビルドを再開

クラウドMacの使い方をご案内します。初めて接続する方は下の4つのカードから、すでにインスタンスをお使いの方は症状を検索するか、トラブルの確認方法へお進みください。

初回納品後

まず接続とアクセス権を確認

MacFTPはApple Silicon搭載の専有物理マシンを提供します。macOSをネイティブで実行し、仮想マシンではありません。以下の手順では、コントロールパネルのインスタンス詳細に記載されたIPアドレス、ユーザー名、接続情報を使用してください。注文番号をログインユーザー名として使わないでください。

SSHでログイン

ローカルのターミナルを開き、接続コマンドのユーザー名、IPアドレス、ポートをインスタンス詳細の値に置き換えてください。初回接続時はホストフィンガープリントを確認してから、接続を信頼してください。

ssh -p PORT USER@NODE_IP

エラーの種類を確認します。まずタイムアウトならネットワークを確認してください。Connection refusedならポートとインスタンスの状態を、Permission deniedならユーザー名と認証方式を確認します。パスワードを何度も推測して入力しないでください。

VNC / 画面共有

コントロールパネルのインスタンス詳細で、グラフィカル接続の方法を確認してください。クライアントには案内されたアドレス、ポート、認証情報を入力します。SSHのパスワードとグラフィカルセッションの認証情報が同じとは限りません。

画面が真っ暗な場合は、一度切断してから再接続し、古いセッションに重複接続していないか確認してください。SSHで接続できる場合は、ビルドログを保存し、システムが動作中か確認します。マシン全体の再起動は急がないでください。

ブラウザーからのグラフィカル接続は、ログイン後のインスタンス詳細から利用できます。公開ヘルプページに接続用の認証情報は掲載されません。

パスワードと鍵

初回ログイン後、 passwd を実行して現在のユーザーのパスワードを変更します。ローカルでSSH鍵を生成し、公開鍵だけをリモートの ~/.ssh/authorized_keysに追加してください。秘密鍵はローカルに保管します。

~/.ssh ディレクトリのアクセス権を 700に、authorized_keys のアクセス権を 600に設定します。現在の接続を維持したまま、別のターミナルを開いて鍵でログインできることを確認してください。

確認が済むまでは、現在のセッションを閉じたり、既存の認証方式を無効にしたりしないでください。秘密鍵、パスワード、復旧情報を問い合わせに記載しないでください。

Xcodeとコマンドラインツール

まず xcode-select -p と xcodebuild -versionを実行して、現在の環境を確認します。GUIで操作する場合は、リモートセッションからApplications内のXcodeを確認してください。

コマンドラインツールだけを使う場合は、 xcode-select --installを実行できます。ただし、iOSのアーカイブにはフル版のXcodeが必要です。Xcodeを追加したら、初回起動と必要なコンポーネントの準備を済ませてからCIで使用してください。

複数のバージョンがある場合は、実際のディレクトリを指定して切り替えてください。アプリ名だけを変更してRunnerが古い開発者ディレクトリを使い続ける状態は避けてください。

ローカルからクラウドへ

3段階で移行し、それぞれの完了条件を確認

同じコミットで単発ビルドを成功させてから、自動実行を設定してください。所要時間はスケジュールの目安であり、納期の保証ではありません。リポジトリの容量、ネットワーク、依存関係のダウンロード、署名の準備によって実際の時間は変わります。

01 / データ

ソースを同期し、ビルドキャッシュは移行しない

目安:15~45分。大容量のアセットを含むリポジトリは別途お見積もりください。

バージョン管理システムから、固定したコミットをチェックアウトする方法をおすすめします。未コミットのファイルを移す場合はSFTPまたはrsyncを使い、DerivedData、プロジェクトのbuildディレクトリ、ローカルログを除外してください。古いパスや無効なキャッシュを新しいマシンに持ち込まずに済みます。

まずdry-runでファイル一覧を確認してから、実際に同期してください。例のUSERとNODE_IPはインスタンスの案内値に置き換えます。カスタムSSHポートを使用する場合は別途設定が必要です。

rsync -av --dry-run \
  --exclude='DerivedData/' \
  --exclude='build/' \
  ./ USER@NODE_IP:~/project/
git rev-parse HEAD
git status --short

完了条件:両方の環境でコミットが一致し、必要なアセットが揃い、機密情報がリポジトリに含まれていないこと。

02 / ツールチェーン

依存関係と署名環境を再構築

目安:30~90分。初回のダウンロードにはさらに時間がかかる場合があります。

ローカル環境のXcode、SDK、Homebrew、スクリプト依存関係のバージョンを記録します。まず brew --version でHomebrewがインストール済みか確認してください。プロジェクトにBrewfileがある場合は、そのファイルを使って依存関係を復元します。

署名に必要なp12とプロビジョニングプロファイルは、暗号化された接続で転送してください。証明書は専用のキーチェーンにインポートし、プロビジョニングプロファイルはビルドユーザーのディレクトリに配置します。パスワードをリポジトリやビルドログに記載しないでください。

brew --version
xcodebuild -version
xcodebuild -showsdks
security find-identity -v -p codesigning

完了条件:SDKがプロジェクトの要件を満たし、署名IDが有効で、手動のarchiveが最後まで完了すること。

03 / CIの導入

Runnerを登録してから自動実行を有効化

目安:20~60分。プロジェクトのテスト時間は含みません。

コードプラットフォームが発行する登録コマンドを使って、GitHub ActionsのセルフホストRunnerまたはGitLab Runnerをインストールしてください。登録トークンは設定時のみ使用し、ワークフローにマシンのパスワードを保存しないでください。

次のラベルを確認します: self-hosted、macOS 、 ARM64 。固定したコミットでまず手動実行し、作業ディレクトリ、成果物の保存先、署名権限を確認してから、ブランチの自動ビルドを有効にしてください。

uname -m
sw_vers -productVersion
xcode-select -p
git rev-parse HEAD

完了条件:Runnerがオンラインで、対象のコミットが正しく、アーカイブ成果物を取得でき、ログに認証情報が含まれていないこと。

同じ物理ノードで複数のタスクを実行すると、CPU、ユニファイドメモリ、SSDを共有します。まず同時実行数を制限し、段階的に増やしてください。マシン上のタスク同士の競合をノードの障害と誤認しないようにしましょう。

手順ごとに実行できます

よく使うコマンド:前提を確認してから実行

ディレクトリ名とファイル名はコマンド例です。実行前に、マシン上に実在するパスに置き換えてください。sudoを使う操作には管理者権限が必要です。パスワードを含むコマンドを公開ログに貼り付けないでください。

Xcodeの開発者ディレクトリを選択

この例は、 /Applications/Xcode.app が存在する環境を対象としています。複数のバージョンがある場合は、まずアプリのパスを確認してから切り替え、バージョンとSDKを確認してください。現在のタスクだけ別のバージョンを使う場合は、タスク内で DEVELOPER_DIRを設定できます。

切り替えと確認
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
xcode-select -p
xcodebuild -version
xcodebuild -showsdks

p12をビルド用キーチェーンにインポート

まず、 build.keychain-db という専用キーチェーンを用意し、タスクを実行するユーザーのセッションでロックを解除します。インポート時はシステムの指示に従ってp12のパスワードを入力してください。証明書が表示されても、CIに必要な秘密鍵へのアクセス権があるとは限りません。

インポートとIDの確認
security import ./signing.p12 \
  -k "$HOME/Library/Keychains/build.keychain-db" \
  -T /usr/bin/codesign
security find-identity -v -p codesigning \
  "$HOME/Library/Keychains/build.keychain-db"

launchdでRunnerを管理

以下は、Runnerの登録が完了しており、 svc.sh を含むGitHub Actions Runnerディレクトリがある場合の手順です。サービススクリプトがインストールと起動を行い、バックグラウンドではlaunchdが管理します。GitLab Runnerでは専用のサービスコマンドを使用し、このスクリプトと併用しないでください。

Runnerディレクトリで実行
./svc.sh install
./svc.sh start
./svc.sh status
launchctl list | grep -i runner

launchdでタスクを確認できても、サービスが登録されたことしか分かりません。コードプラットフォームに戻ってRunnerがオンラインであることを確認し、実際にビルドを実行してください。GUIやキーチェーンとの対話が必要なタスクでは、ユーザーセッションの状態も検証します。

注文と利用期間

利用期限と支払い状況を分けて確認

サービスは日、週、月、四半期単位の前払いで、選択した利用期間分を一括でお支払いいただきます。アカウント、支払い、インスタンスの状態はそれぞれ異なります。お問い合わせの際は、注文番号とインスタンス番号をあわせてお知らせください。

更新方法と、データが引き続き保持されることの確認方法を教えてください。

コントロールパネルにログインし、サブスクリプションまたはインスタンスに対応する注文で、期限と更新方法を確認してください。元のサブスクリプションを更新した後、利用期間が延長されていることを確認します。別のインスタンス注文を新たに作成しても、元のノードの更新にはなりません。支払い後も期限が更新されない場合は、取引の証明を保管し、問い合わせを送信してください。重要なデータはご自身でもバックアップしてください。

期限の通知は届きますか?どの日時を基準にすればよいですか?

コントロールパネルに表示される注文の期限を基準にし、画面に記載されたタイムゾーンも確認してください。アカウントのメールアドレスが利用可能な状態か確認し、通知と迷惑メールフォルダーを確認します。メールを受信したかどうかだけで利用期間を判断しないでください。チームのカレンダーにもリマインダーを設定し、期限前に更新するか、コード、証明書、ビルド成果物を移行することをおすすめします。

支払い方法、通貨、取引の確認方法を教えてください。

お支払い方法はUSDT-TRC20、Visa / Mastercard / Amex(Stripe経由)のみです。すべて米ドル(USD)で決済され、実際に利用できる決済ゲートウェイはバックエンドからの応答に基づきます。オンチェーン決済ではネットワーク、金額、決済画面の情報を確認してください。カード決済は注文に表示される結果を基準にしてください。問題の確認には注文番号または取引ハッシュをお知らせください。カード番号全桁、認証コード、ウォレットの秘密鍵は送信しないでください。

支払いの問題、返金、領収書については、どこに問い合わせればよいですか?

まずコントロールパネルで請求内容、支払い履歴、発行可能な領収書を確認してください。返金の条件、対象範囲、関連ルールについては、利用規約をご覧ください。ローカルの接続設定を削除したり、マシンの利用を中止したりしても、返金申請の代わりにはなりません。二重請求の疑いがある場合は、該当する注文と取引の参照情報を添えて、コントロールパネルからお問い合わせください。

まず状況を記録

影響範囲の小さいものから順に確認

問題が特定のクライアント、セッション、またはノード全体のどれに影響しているかを確認してください。元のエラーと発生時刻を記録し、1つの確認を終えてから次に進みます。ネットワークの変更、パスワードのリセット、再起動を続けて行うと、問題を追跡できなくなるおそれがあります。

ネットワークと接続先

インスタンス詳細でIPアドレス、ポート、ユーザー名を再確認してください。別のローカルネットワークを試し、ローカルのプロキシ、ファイアウォール、会社のネットワーク出口ポリシーを確認します。ICMPで応答がないだけではSSHが使えないとは限りません。実際のポート接続の結果も確認してください。

ssh -vv -o ConnectTimeout=10 -p PORT USER@NODE_IP

タイムアウト、接続拒否、認証エラーのどれかを記録してください。デバッグログを共有する前に、ローカルのユーザー名、機密性の高いパス、認証情報を削除してください。

ディスクとビルドキャッシュ

まず df -h / で空き容量を確認し、次に du -sh ~/Library/Developer/Xcode/DerivedData でキャッシュの使用量を確認します。関連するビルドを停止してから、プロジェクトに応じて削除してください。書き込み中のアーカイブを削除しないよう注意してください。

納品予定の成果物、署名ファイル、必要なログは残してください。削除後は同じコミットで再試行し、依存関係の破損やパスの誤りが原因でないことを確認します。

システムとツールチェーンの通知

グラフィカルセッションで、未処理のシステムダイアログやXcodeの初回起動時の通知がないか確認してください。 sw_vers、xcodebuild -version 、 xcodebuild -showsdksを実行して、CI環境が想定どおりであることを確認してください。

まずタスクを一時停止してバックアップを取り、システムやツールチェーンを更新するかどうかを判断してください。archiveの実行中にXcodeのパスを切り替えないでください。

セッションの復旧と再起動

リモートクライアントを一度終了して再接続します。SSHで接続できる場合は、 uptime と実行中のタスクを確認してください。マシン全体の復旧が必要だと判断した場合のみ、コントロールパネルにログインしてインスタンス詳細を開き、再起動操作を実行してください。

再起動するとビルドとリモート接続が中断されます。取得可能なログや成果物を先に保存してください。接続できない場合や操作が利用できない場合は問い合わせを送信し、再起動を何度も要求しないでください。

解決しない場合

必要な情報を添えて問い合わせ

注文とインスタンスを紐付けられるよう、コントロールパネルにログインして技術サポートへお問い合わせください。ログインできない場合や購入前の相談は、support@macftp.comまでご連絡ください。そのほかの連絡方法についてはお問い合わせページをご覧ください。

  • インスタンスを特定:注文番号、インスタンス番号、ノード、マシンモデルをお知らせください。ノードはシンガポール、東京、ソウル、香港のいずれかです。マシンモデルはインスタンス詳細に表示される正式名称を記載してください。
  • 発生状況を再現:発生日時とタイムゾーン、エラー全文、再現手順、SSHとグラフィカル接続それぞれの利用可否をお知らせください。
  • やり取りを減らすために:すでに確認した内容、最近の変更、機密情報を伏せたログの一部をお知らせください。パスワード、秘密鍵、p12のパスワード、支払い情報の全容は送信しないでください。