先連線,再開始建置

從下單到首次
xcodebuild

這是你的雲端 Mac 工作站操作手冊。目標是在前 10 分鐘內取得資訊、登入 SSH 並檢查環境;下載相依套件與完成建置所需時間,則視專案而定。

取得工作站資訊

開通後,先確認這四項

登入控制台,開啟對應訂單的執行個體詳細資料。連線位址、帳號與連線埠請以該執行個體顯示的資訊為準;訂單編號不是登入使用者名稱。

工作站資訊示意 · 非實際憑證

Desk M4

Mac mini M4 · 16GB 記憶體 · 256GB SSD

公用 IP
在執行個體詳細資料中查看並複製
登入使用者名稱
使用控制台指派的使用者名稱
初始密碼
僅在安全的私人環境中查看,勿貼入記錄
SSH 公鑰
在控制台的對應頁面上傳公鑰

你使用的是整台專屬實體主機

Desk M4 是非虛擬化的雲端 Mac,可使用 macOS 圖形介面與命令列。先確認訂單對應的節點,再核對連線資訊,避免將其他工作站的位址寫進指令碼。

初次使用建議先透過 SSH 連線,快速確認位址、連接埠與驗證是否正常。需要點選操作時,再使用圖形介面設定系統或 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。
需要圖形介面時

透過 SSH 通道連接遠端桌面

SSH 用於命令與自動化,VNC 則用於圖形設定與互動操作。建議先確認 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。頻寬較高不代表輸入延遲較低;往返延遲、封包遺失與本機無線網路也同樣重要。

若命令列回應正常但畫面延遲,先降低用戶端畫質或解析度。若 SSH 與畫面同時中斷,請記下發生時間、本機網路類型與用戶端提示,再提交連線問題工單。

讓工作站接手重複工作

先執行一項工作,再接入主要 Pipeline

將工作站註冊至你自己的 CI 專案。各平台的註冊參數都應從專案或管理頁面取得;不要重複使用他人的權杖,也不要將註冊權杖提交至程式碼儲存庫。

GitHub Actions

在儲存庫或組織的 Runner 設定中選擇 macOS 與 ARM64,並依頁面提供的最新安裝指令下載及設定自架 Runner。

設定時加入 desk-m4 等用途標籤。先以互動方式執行診斷工作,再依安裝套件說明註冊為目前使用者的背景服務。

使用 self-hosted、macOS、ARM64 及自訂用途標籤共同指定 Runner。

GitLab Runner

安裝 Runner 後,在專案或群組中建立 Runner 並取得驗證權杖。註冊時選擇適合該機器的執行方式;原生 macOS 建置可先從 shell executor 開始。

只接受受信任專案的工作,並設定 macos-arm64 及用途標籤;是否接收沒有標籤的工作,應明確設定。

先使用 gitlab-runner verify 驗證註冊,再查看第一份工作記錄。

Jenkins Agent

在你的 Jenkins 控制端新增固定節點,設定遠端工作目錄、執行器數量與標籤。依節點頁面提供的方法,透過 SSH 或 Agent 啟動指令接入。

確認執行使用者、Java 版本與命令列環境一致。第一份工作只輸出工具版本,避免直接以發布流程測試連線。

先從單一執行器開始,確認記憶體與磁碟使用量的高峰後,再調整並行數。

標籤應描述能力,而非暫時狀態

建議使用架構標籤 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 機密變數注入金鑰,並限制可存取的分支。

將本機工作方式搬過來

分三步遷移資料、工具鏈與排程

不要直接複製整個使用者目錄。先遷移一個專案,記錄可重現的相依項目,再切換 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 串接

最後再切換排程標籤

先保留原有 Pipeline,新增一個手動觸發的驗證工作。確認可以讀取專案、使用簽章資料並上傳產物後,再將正式工作的 runs-on 或節點標籤切換至新工作站。

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

驗收:完整工作成功,產物可下載,失敗記錄也能協助定位問題。

這是建議的遷移順序,不代表固定所需時間。首次安裝相依套件、下載 SDK 與處理大型專案,通常比 SSH 登入耗時;建議先驗證不含發布步驟的建置流程。

建置以外的實驗

先隔離環境,再下載模型權重

Desk M4 配備 16GB 統一記憶體,系統、圖形介面與模型會共用這些記憶體。量化方式、上下文長度與並行數都會影響模型是否能執行;額外 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:先限制為本機存取

安裝後,將服務繫結至本機位址,再依模型來源的說明取得權重。若要從本機電腦呼叫,建議優先使用 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
先確認磁碟,再寫入資料

擴充可增加容量,多機連線不會合併記憶體

可選項目包括 +1TB SSD、+2TB SSD 與 Thunderbolt 5 多機連線。接上後的磁碟名稱、裝置編號與連線資訊,請以你的執行個體實際回報為準,不要照抄他人的磁碟編號。

辨識額外 SSD

先查看外接實體磁碟,再核對磁碟區名稱、容量與可用空間。下列指令只會讀取資訊,不會格式化磁碟。

diskutil list external physical
ls /Volumes
df -h
diskutil info /Volumes/WorkSSD

確認磁碟已掛載後,再將模型、建置快取或專案移至其中。搬移前請停止會寫入相關目錄的建置程序,並保留一份獨立備份。

請勿盲目執行 eraseDisk 或其他抹除磁碟的指令。若看不到磁碟,請附上唯讀檢查結果提交工單。

了解多機連線的限制

Thunderbolt 5 多機連線適用於有明確多機通訊或資料傳輸需求的工作流程。多台機器仍是獨立主機,各自執行系統、工作並使用自己的記憶體。

system_profiler SPThunderboltDataType
networksetup -listallhardwareports
ifconfig

辨識到介面不代表應用程式已能以分散式方式執行。你仍須設定網路、傳輸協定與工作分配;實際連線方式及可用組合,請在下單前洽詢確認。

多機連線不會自動將多台機器合併成一台記憶體更大的 Mac,也不保證建置速度會提升。

遷移快取時,分清楚可重建與不可取代的資料

DerivedData 與相依套件下載快取都可以重新產生;未提交的原始碼變更、簽章私鑰與實驗結果則無法靠快取還原。請分開管理這兩類資料,並優先備份不可取代的內容。續約或到期前,請主動匯出需要保留的專案、產物與設定,不要將工作站磁碟作為唯一備份。

清楚整理問題再交接

遇到問題時,請提供這四項資訊

執行個體問題建議優先登入控制台提交工單,方便關聯訂單。若無法登入、想在購買前洽詢方案,或需要補充說明,請寄信至 support@macminivps.com。

  • 訂單編號與節點:說明是哪一台工作站,請勿提供密碼或私鑰。
  • 發生時間與時區:註明首次出現的時間,以及問題是否能穩定重現。
  • 原始錯誤片段:保留指令、結束代碼與重要記錄,並移除權杖、憑證內容及個人資料。
  • 已嘗試的檢查:例如更換本機網路、核對 SSH 連接埠,或單獨執行一次建置。

關於回覆時間

我們不會提供尚未確認的平均回覆時間或固定服務時段。實際回覆安排請以聯絡頁面與工單中的回覆為準。提交工單後,請在原工單補充資料,比起重複建立相同問題更容易追蹤。

若問題影響連線,請說明 SSH 與 VNC 是否同時失敗;若只影響建置,請說明能否在互動式工作階段中執行相同指令。這有助於先區分網路、驗證、環境與專案問題。

了解流程後,
就為專案安排工作站

Desk M4 是專屬實體 Mac mini,並非虛擬機。請先確認專案所需的 Xcode 版本、租用期間與儲存空間,再進入下單設定;供應情況以控制台即時顯示為準。

僅支援 USDT-TRC20 或 Visa / Mastercard / Amex(透過 Stripe)付款,所有金額均以美元結算;實際可用的付款管道以後端回傳為準。