從首次登入到建置封存

連線。遷移。開建置。

本指南涵蓋首次連線、環境遷移、CI 整合與歸還流程。先用一行 SSH 指令確認節點可連線,再將程式碼、簽章與工具鏈移轉過去。整台都是專屬實體主機,並非虛擬機,macOS 圖形介面與命令列都能完整使用。

已經下單了嗎?先到控制台確認執行個體狀態與連線憑證。請勿將密碼、私鑰或簽章憑證貼到公開記錄中。

步驟一 · 確認連線

先確認連得上,再遷移環境。

開啟控制台中的執行個體詳細資料,確認節點位址、使用者名稱、連接埠與初始密碼。以下指令中的位址請替換成實際值;若使用不同連接埠,請依執行個體詳細資料填寫。

SSH

命令列:先試著互動式登入

首次連線時請核對主機指紋,確認與可信任的執行個體資訊相符後再接受。請勿為了略過提示而停用主機金鑰檢查。

ssh admin@<節點地址>

如果執行個體使用非預設 SSH 連接埠,請在指令中加上 -p <連接埠>。登入後先執行以下檢查,確認目前使用者、系統版本與剩餘磁碟空間。

whoami
sw_vers
df -h
passwd

passwd 會以互動方式變更目前使用者的密碼。接著在本機產生專用的 ed25519 金鑰,並將公開金鑰附加到節點的 ~/.ssh/authorized_keys;私鑰只保留在自己的裝置或受控金鑰庫中。

ssh-keygen -t ed25519
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

請在節點上執行權限設定指令。先用另一個終端機確認可透過金鑰成功登入,再依團隊安全政策調整密碼登入方式,避免把自己鎖在機器之外。

確認:新終端機可用金鑰登入
VNC

圖形介面:完成互動式設定

需要操作鑰匙圈、檢查 Xcode 設定或查看模擬器時,請使用執行個體詳細資料提供的螢幕共享連線資訊。連線位址與 SSH 位址不一定使用相同連接埠,請勿憑經驗填寫。

  1. 確認執行個體已就緒,查看控制台中的螢幕共享位址、連接埠與使用者資訊。
  2. 在本機 Mac 的螢幕共享 App 中連線,並使用提供的帳戶憑證登入。
  3. 首次進入桌面後變更初始密碼,並確認登入鑰匙圈可以正常解鎖。
  4. 開啟要使用的 Xcode 版本,完成授權確認與必要元件安裝,再回到命令列驗證。
xcode-select -p
xcodebuild -version

若透過 SSH 通道連線螢幕共享,本機轉送連接埠與目標連接埠應以執行個體的實際設定為準。僅允許必要來源存取,請勿將圖形連線連接埠直接開放給所有來源。

黑畫面不一定代表節點離線。先透過 SSH 檢查機器是否可連線,再確認圖形工作階段、帳戶權限與連線連接埠;請勿反覆重設系統來試錯。

確認:桌面正常顯示,Xcode 版本正確
步驟二 · 依相依順序遷移

從本機 Mac 移轉到雲端 Mac。

依序處理資料、工具鏈與 CI。先遷移一個可獨立驗證的專案,不要一開始就複製整個使用者目錄。以下時間為操作預估,實際進度會受儲存庫大小、網路與相依套件下載影響。

01 / 資料

先備妥程式碼與簽章

從 Git 複製儲存庫,切換到與本機相同的提交版本。私有儲存庫請使用權限受限的部署金鑰或短期權杖,勿將長期憑證寫入儲存庫網址。

git clone <儲存庫地址>
git rev-parse HEAD
rsync -av --progress ./Assets/ \
  admin@<節點地址>:~/work/Assets/

需要簽章時,請從本機鑰匙圈匯出包含私鑰的 .p12 檔案,以專用密碼加密傳輸後,再匯入節點的鑰匙圈。描述檔請另外遷移,並確認憑證有效期限、團隊與目標設定。

大型資源可用 rsync 增量同步。第一次同步不要加上刪除參數;先檢查目標目錄,避免誤刪節點上新產生的產物。

預估 3–10 分鐘 · 不含大型檔案傳輸
02 / 工具鏈

還原版本,不複製快取

在本機匯出 Brewfile,傳到節點後還原。先檢查清單,移除不需要的桌面 App 與過期相依套件,以減少首次下載量。

brew bundle dump --file=Brewfile
brew bundle --file=Brewfile
xcodes list
xcodes install <所需版本>

確認專案要求的 Xcode、Ruby 與 CocoaPods 版本。使用 xcodes 安裝版本時,請遵守軟體授權與下載權限要求;安裝完成後,使用 xcodebuild -version 確認實際選用的版本。

有 Gemfile 的專案,建議優先執行 bundle exec pod install。SPM 依據專案內的鎖定檔解析相依套件;第一次建置用來預熱快取,不代表之後的建置速度。

預估 5–15 分鐘 · 下載時間另計
03 / 整合 CI

先手動建置成功,再註冊執行器

先在互動式工作階段完成一次建置與簽章。確認命令列可以封存後,再註冊 GitHub Actions self-hosted runner 或 GitLab Runner,避免同時排查工具鏈與排程設定。

bundle exec fastlane match development --readonly
bundle exec fastlane gym

match 的簽章類型與實際 lane 依專案設定為準。CI 請使用權限受限的憑證,並將金鑰存放在受保護的變數或金鑰庫中,勿將密碼寫入指令碼。

為臨時執行器設定專用標籤,並先限制只有可信任的分支可以執行。確認執行帳戶可存取簽章鑰匙圈與工作目錄,並驗證非互動式建置不會卡在對話框。

預估 3–8 分鐘 · 以已有 CI 流程為前提

遷移完成的標準:使用相同的提交版本、Xcode 版本與相依套件鎖定檔,並能在節點上產生一份可取回的封存產物。不要只憑「相依套件安裝成功」就判定環境遷移完成。

交付流程 · 約 4 分鐘

卡住時,先看是哪個步驟。

從下單到節點可用通常約需 4 分鐘,不含程式碼傳輸、工具下載與首次編譯的時間。付款、分配與交付進度以控制台顯示為準。

  1. 01

    確認訂單設定

    約 40 秒

    選擇機型、租期與節點,並確認附加項目與總金額。若卡住,請檢查必填選項與頁面上的錯誤提示,勿重複建立相同訂單。

  2. 02

    以美元付款

    約 60 秒

    僅支援 USDT-TRC20 與 Visa / Mastercard / Amex(透過 Stripe),以 USD 結算。若卡住,請確認帳單狀態;鏈上確認與發卡銀行驗證可能會增加等待時間。

  3. 03

    等待節點初始化

    約 2 分鐘

    確認付款後即開始分配專屬實體節點。若卡住,請查看執行個體狀態與系統提示;若帳單已付款但狀態長時間未變,請保留訂單編號後提交客服單。

  4. 04

    查看交付通知

    憑證電子郵件/控制台

    請檢查收件匣與垃圾郵件資料夾,並核對控制台中的連線資訊。請勿在不明電子郵件中回覆密碼;若未收到通知,先確認執行個體是否已就緒。

  5. 05

    驗證首次登入

    約 20 秒

    先連線 SSH,再確認圖形介面。若卡住,請記錄完整錯誤訊息、發生時間與時區,並依下方排除問題清單判斷是網路、驗證或工作階段問題。

歸還前 · 先備份資料

機器會歸還。
產物要帶走。

到期後不會自動續租。若要繼續使用,請在到期前前往控制台手動續租,並確認操作結果;不要假設執行中的建置工作會延長租期。

歸還後會安全清除整個磁碟,節點不是長期備份空間。請將最後一次封存、除錯符號與必要記錄複製到自己控管的儲存空間,再確認檔案可讀取。刪除本機檔案無法取代撤銷遠端存取權限。

完成這 4 項交接

  1. 匯出建置產物。取回 .xcarchive、.ipa、dSYM 與必要的建置記錄,並確認上傳或下載已完成。
  2. 註銷臨時執行器。在 CI 平台移除 runner 註冊、停止本機執行器程序,並撤銷部署金鑰與臨時存取權杖。
  3. 清除簽章資料。移除已匯入的憑證私鑰、描述檔與臨時設定,並檢查 CI 流程記錄中沒有洩漏金鑰或密碼。
  4. 確認到期時間與備份。核對控制台顯示的到期時間與時區,並預留時間完成最後一次建置與產物傳輸。

團隊協作時,請指定一人負責最後的歸還檢查。不要把「以為同事已經下載」當成唯一的備份方式。

常見情境 · 最小可行設定

先跑通一個流程,再擴展成 CI 流程。

兩種機型都是 M4 專屬實體主機:SDK Pack 16 配備 16GB / 256GB,SDK Pack 24 配備 24GB / 512GB。請依實際專案需求選擇記憶體與儲存空間,不要把所有平行工作都塞進第一次驗證。

App 自動化建置

先確認 scheme 可供共享、簽章設定正確,且鑰匙圈可以存取。專案若有 Gemfile,請用 Bundler 固定 Fastlane 版本,再執行封存。

bundle install
bundle exec fastlane gym
bundle exec fastlane pilot upload \
  --ipa ./build/App.ipa

請將範例路徑替換為實際產物路徑。pilot 上傳前,請設定專案使用的發佈 API 金鑰,並存放在受保護的 CI 變數中;上傳權限與建置成功是兩項獨立檢查。

確認:封存檔可取回,且上傳結果可查

遠端 Mac 開發

先確認一般 SSH 連線正常,再讓 VS Code Remote-SSH 沿用相同的連線設定。編輯器連線失敗時,先檢查遠端擴充功能記錄,請勿直接變更系統權限。

Host sdk-build
  HostName <節點地址>
  User admin
  IdentityFile ~/.ssh/id_ed25519
  ServerAliveInterval 30

設定檔放在本機的 ~/.ssh/config。連線後確認終端機所在的機器與工作目錄;模擬器與圖形除錯透過螢幕共享進行,程式碼編輯與 Git 操作則用 SSH 即可。

確認:編輯與建置使用相同工作區

GPU 繪圖與 MLX 推論

先確認工作支援 Apple Silicon 與所需的圖形後端,再準備獨立的 Python 環境。請為模型權重、應用程式記憶體與中間產物預留空間。

python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install mlx
python -c "import mlx.core as mx; print(mx.default_device())"

先用小型輸入確認相依套件與裝置選擇,再逐步提高解析度、批次大小或上下文長度。記錄應用程式版本與參數;模型能否執行,取決於權重大小與實際記憶體用量。

確認:小型工作完成,資源用量可控
問題排除 · 一次只調整一個變數

先判斷錯誤屬於哪一類。

先保留原始錯誤訊息,再進行修改。以下四類問題分別涉及網路、圖形工作階段、簽章權限與儲存空間;重新安裝環境通常不是第一步。

SSH 連線逾時或驗證失敗

連線逾時:確認位址、連接埠、執行個體狀態與本機網路限制。使用 ssh -v 判斷停在連線階段還是驗證階段。

驗證失敗:確認使用者名稱、金鑰路徑與 authorized_keys 權限。若指紋有變,先確認節點是否已重新交付,請勿直接刪除可信任的主機記錄。

客服單附上:原始錯誤訊息、連接埠、發生時間

螢幕共享黑畫面

先透過 SSH 確認節點可連線,再核對螢幕共享連接埠與登入帳戶。檢查是否仍有初始化工作,以及本機用戶端是否保留了舊的連線資訊。

關閉用戶端後重新連線。若使用通道,請確認連接埠轉送程序仍在執行。產物尚未匯出前,請勿反覆重新啟動機器。

客服單附上:用戶端版本與已遮蔽敏感資訊的螢幕截圖

鑰匙圈對話框卡住 CI

透過圖形工作階段確認簽章私鑰已匯入,且憑證仍在有效期限內。確認 runner 的執行帳戶就是設定簽章環境的帳戶。

請為 CI 使用專用簽章鑰匙圈,並依團隊政策設定解鎖方式與存取權限。先執行一次非互動式建置進行驗證,勿將鑰匙圈密碼輸出到記錄中。

客服單附上:失敗階段與簽章錯誤碼

磁碟空間不足

先執行 df -h,再檢查 DerivedData、封存檔、模擬器資料與容器映像檔。只清除確認可重新產生的快取,保留尚未匯出的封存檔與除錯符號。

若專案與資源長期超出儲存空間預算,下單時可選擇 +1TB SSD 或 +2TB SSD 附加儲存空間。現有執行個體的調整方式請先透過客服單確認,勿假設加購後會立即擴充。

客服單附上:剩餘空間與大型目錄統計
繼續閱讀 · 從問題開始

想深入了解?接著看技術文章。

本頁保留從連線到歸還的完整操作流程。容器工具、相依套件遷移、安全連線與租用方案選擇的詳細說明,請統一前往技術文章目錄,並以目錄中實際發布的內容為準。

先找出要解決的問題屬於哪一層

工具鏈:安裝完成不代表能順利建置。記錄 Xcode、相依套件管理工具與鎖定檔,優先比對本機與節點的版本差異。

安全性:連線成功不代表權限設定正確。臨時節點請使用專用金鑰與權限受限的權杖,歸還時撤銷註冊,不要重複使用個人長期憑證。

機型選擇:成功一次不代表長期適用。觀察實際記憶體峰值、磁碟用量增幅與平行工作數量,再決定機型與租期。

需要工程師協助

保留現場,
我們從錯誤開始查。

已租用執行個體若有問題,請登入控制台提交客服單,並附上訂單編號、節點、發生時間與時區、重現步驟及已遮蔽敏感資訊的記錄。售前諮詢或無法登入時,也可以寄信至 support@macsdk.com。

處理時間請以客服單顯示的受理與回覆進度為準,自動回覆不代表客服人員已回覆。若問題影響進行中的建置,請在標題說明影響範圍,並保留錯誤現場;請勿提交私鑰、密碼或完整簽章檔案。