💡 前言:你看得到,卻吃不到嗎?
如果你也想白嫖甲骨文(Oracle Cloud)那台擁有 4核 24G 記憶體 的「永久免費 ARM 神機」,卻在每次點擊「創建」時都被這句冷冰冰的話彈回:
API Error: Out of capacity... 💔
別灰心!這不是運氣問題,是策略問題。面對全球無數腳本機器人的競爭,靠手速是不可能的。今天就教你如何用官方 OCI CLI 工具配合我研發的「終極穩定版 PowerShell 腳本」,讓電腦 24 小時為你自動排隊!
🛠️ 第一步:環境準備(先幫 Windows 解除封印)
在開始之前,我們要先搞定 Windows 那些煩人的限制,否則安裝工具時就會報錯報到心累。
- 解開「長路徑」禁咒: 📜 甲骨文的檔案路徑極長,請以「管理員身分」開啟 PowerShell,輸入:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "LongPathsEnabled" -Value 1 - 安裝 OCI CLI 工具: 📦 雖然官網有指令,但常被防毒軟體擋掉。建議手動下載
install.ps1,並用Bypass模式執行,一路按 Enter 到底就對了!🛠️ 獨家秘笈:為什麼要用「手動下載」+「Bypass 模式」?
1. 官網的「一鍵安裝指令」為什麼會失敗?
官網通常叫你輸入這行: iex ((New-Object System.Net.WebClient).DownloadString('...')) 這行指令對防毒軟體(如 Windows Defender)來說非常敏感。因為 iex (Invoke-Expression) 的行為是「從網路抓一段程式碼直接在記憶體執行」,這跟很多無檔案病毒的行為一模一樣,所以防毒軟體會立刻拔掉你的插頭。
2. 什麼是 Bypass 模式?
Windows 為了保護你,預設是不允許執行從網路上下載的指令碼(腳本)的。
- Bypass 翻譯成白話文就是 「快速通關」。
- 它並不是「關閉防毒」,而是告訴系統:「我信任這個檔案,請這次不要執行安全策略檢查,直接讓我跑。」
- 這比永久更改系統設定安全得多,因為它只針對這一次的執行生效。
📦 手動安裝三步驟(圖文詳細版)
Step 1:獲取官方安裝檔案 請點擊下方連結,進入頁面後按 右鍵 -> 另存新檔,將檔案存到桌面。
🔗 Oracle 官方 install.ps1 下載連結 (註:這是甲骨文在 GitHub 上的開源官方腳本,絕對安全。)
Step 2:開啟管理員權限的 PowerShell 在 Windows 搜尋 PowerShell,對它按 右鍵 -> 以系統管理員身分執行。
Step 3:輸入「快速通關」指令 先用 cd Desktop 進到桌面,然後輸入這行:
PowerShell
powershell -ExecutionPolicy Bypass -File .\install.ps1
這行指令的意思是: 我要用 PowerShell 執行這份檔案,並且「繞過 (Bypass)」所有權限限制。
💡 安裝小提醒:一路按 Enter 就對了!
安裝過程中,視窗會噴出很多問題(例如安裝路徑、是否加入環境變數等),除非你有特殊需求,否則 「無視內容,狂按 Enter」 是最穩妥的做法。唯一的例外是:
- 當它問你:Modify PATH to include the OCI CLI? * 這題一定要確保是 Y (預設通常是 Y),這樣你以後在任何地方打
oci才能生效!看到Successfully installed OCI CLI!代表您的電腦已經準備好發號施令了。
🔑 第二步:取得鑰匙(API 配置秘辛)
我們要讓甲骨文認得你的電腦,這需要一對「API Key」。
- 執行設定: 打入
oci setup config。 - 接下來只剩最後一個關鍵步驟:「讓您的電腦與甲骨文帳號認親(綁定)」。請依照以下步驟操作,我們會生成一把「鑰匙」,然後把鑰匙交給甲骨文,這樣腳本才能幫您搶機器。
第一步:開始設定在您的 PowerShell 視窗中,輸入以下指令並按 Enter:
PowerShell : oci setup config
第二步:依序填入資料
程式會開始問您幾個問題,請依照下方的說明填寫:Enter a location for your config...- 👉 直接按 Enter(使用預設路徑)。
- Enter a user OCID:
- 這是您的「用戶身分證」。
- 怎麼找? 登入甲骨文網頁 -> 點右上角的人頭頭像 -> 點 "My Profile" (或 User Settings) -> 在 "User Information" 區塊找到 OCID -> 點擊 "Copy" 複製。
- 回到 PowerShell 貼上,按 Enter。
- Enter a tenancy OCID:
- 這是您的「帳號租戶身分證」。
- 怎麼找? 登入甲骨文網頁 -> 點右上角的人頭頭像 -> 點 "Tenancy: [您的帳號名]" -> 在 "Tenancy Information" 區塊找到 OCID -> 點擊 "Copy" 複製。
- 回到 PowerShell 貼上,按 Enter。
- Enter a region:
- 這是您想搶機器的「地區代碼」。
- 系統會列出一長串地區(如 [1] ap-chiyoda-1, [2] ap-chuncheon-1...)。
- 怎麼找? 看您甲骨文網頁網址列的中間部分,例如 ...region=ap-tokyo-1...。
- 輸入方式: 找到您的地區對應的 數字編號(例如東京通常是 ap-tokyo-1),輸入該數字並按 Enter。
- Do you want to generate a new API Signing RSA key pair? [Y/n]:
- 👉 輸入 Y 按 Enter(我們要生成新鑰匙)。
- Enter a directory for your keys...
- 👉 直接按 Enter。
- Enter a name for your key...
- 👉 直接按 Enter。
- Enter a passphrase for your private key...
- 👉 直接按 Enter(自動腳本不需要密碼,留空比較方便)。
- 再按一次 Enter 確認留空。
第三步:最後一步(最重要!上傳公鑰)
此時 PowerShell 會顯示一段訊息,類似:Public key written to: C:\Users\jackami\.oci\oci_api_key_public.pem您必須把這把「公鑰」上傳給甲骨文,否則無法連線。- 打開公鑰檔案:
- 去您的資料夾 C:\Users\使用者名稱\.oci\ 找到 oci_api_key_public.pem。
- 用「記事本」打開它,複製裡面全部的內容。
- 上傳到甲骨文:
- 回到剛才找 User OCID 的頁面(網頁右上角頭像 -> My Profile)。
- 左下角選單找 "API Keys"。
- 點擊 "Add API Key"。
- 選擇 "Paste Public Key"。
- 把剛剛複製的亂碼貼進去 -> 點 Add。
🎉 恭喜!設定完成! 現在您的電腦已經擁有最高權限了。您可以試著輸入這個指令來測試是否連線成功:PowerShelloci os ns get如果它回傳了一串 JSON 資料(包含您的 namespace),就代表成功了!
到user information 找到你的OCID 輸入到 POWERSHELL視窗
到user tenancy 找到你的tenancy OCID 輸入到 POWERSHELL視窗裡面
- 避坑指南: 遇到問 Passphrase (密碼) 時,如果一直卡住,請直接輸入 N/A!這招能解決 99% 的無限循環問題。
- 上傳公鑰: 記得把
oci_api_key_public.pem裡的亂碼複製,貼到甲骨文後台的 API Keys 設定中。
🕵️ 第三步:隱藏技!用 Stack 騙出參數
現在甲骨文把「Save as CLI command」按鈕藏起來了,我們怎麼知道 Image ID 或 Subnet ID 這些神秘編號?
- 在創建頁面選好規格,點擊 「Save as Stack」。
- 下載產出的
.zip檔,打開裡面的 main.tf。 - 裡面所有的
ocid就是我們要填入腳本的寶藏!💎
📜 第四步:終極穩定版「搶機腳本」
這是我實測多次、完美解決「引號解析地獄」的版本。它會自動把設定寫成暫存檔,保證甲骨文伺服器看得懂你的請求!
運作原理: 每 60 秒敲一次大阪/東京機房的大門。收到「庫存不足」就繼續等,搶到後會發出 「嗶嗶嗶」 的大聲提醒!
# ================= CONFIGURATION (設定區) =================
# ⚠️ 請將以下變數換成您自己的 Oracle Cloud 資訊
# 1. 您的子網 ID (從 Stack 或網路設定中取得)
$SubnetID = "ocid1.subnet.oc1.ap-osaka-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxx"
# 2. 您的租戶/隔離區 ID (Tenancy/Compartment OCID)
$CompartmentId = "ocid1.tenancy.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxx"
# 3. 目標區域 (例如大阪是 AP-OSAKA-1-AD-1,東京是 AP-TOKYO-1-AD-1)
$AvailabilityDomain = "bTyR:AP-OSAKA-1-AD-1"
# 4. 系統映像檔 ID (請確認這是 ARM 架構的 Ubuntu/Oracle Linux Image ID)
$ImageId = "ocid1.image.oc1.ap-osaka-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxx"
# 5. 您的 SSH 公鑰 (Public Key),從 ssh-rsa 開頭的那一整串
$SshKey = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ..."
# 6. 機器名稱
$DisplayName = "Oracle-ARM-Bot"
# ================= 機器規格 (4核 24G) =================
$Ocpus = 4
$Memory = 24
$BootSize = 150
# 建議設定 60~120 秒,避免被判定為惡意攻擊
$Interval = 90
# --- 核心邏輯:自動建立暫存檔以避開 JSON 引號問題 ---
$KeyPath = "$env:TEMP\oracle_key.pub"
$SshKey | Out-File -FilePath $KeyPath -Encoding ascii
$ShapeJsonPath = "$env:TEMP\shape_config.json"
$ShapeJsonContent = '{"ocpus":' + $Ocpus + ',"memoryInGBs":' + $Memory + '}'
$ShapeJsonContent | Out-File -FilePath $ShapeJsonPath -Encoding ascii
$ShapeFileArg = "file://" + $ShapeJsonPath.Replace("\", "/")
Write-Host "----------------------------------------" -ForegroundColor Cyan
Write-Host " Oracle Cloud Auto-Bot (Safe Version) " -ForegroundColor Cyan
Write-Host "----------------------------------------"
while ($true) {
$Time = Get-Date -Format "HH:mm:ss"
Write-Host "[$Time] Requesting ARM Instance..." -NoNewline
try {
$Result = oci compute instance launch `
--availability-domain $AvailabilityDomain `
--compartment-id $CompartmentId `
--shape "VM.Standard.A1.Flex" `
--shape-config $ShapeFileArg `
--display-name $DisplayName `
--image-id $ImageId `
--boot-volume-size-in-gbs $BootSize `
--subnet-id $SubnetID `
--assign-public-ip true `
--ssh-authorized-keys-file $KeyPath 2>&1
$ResultStr = $Result | Out-String
} catch {
$ResultStr = $_.Exception.Message
}
# 判斷一:沒貨了 (Out of Capacity)
if ($ResultStr -match "capacity") {
Write-Host " [Out of Stock]" -ForegroundColor Yellow
Write-Host " └─ Oracle: No capacity. Retrying in $Interval s..." -ForegroundColor DarkGray
}
# 判斷二:頻率太快被封鎖 (429 TooManyRequests)
elseif ($ResultStr -match "TooManyRequests") {
Write-Host " [Rate Limited!]" -ForegroundColor Red
Write-Host " └─ 警告:請求太頻繁!自動加倍等待時間..." -ForegroundColor Red
Start-Sleep -Seconds ($Interval * 2)
}
# 判斷三:成功!
elseif ($ResultStr -match "opc-work-request-id" -or $ResultStr -match "provisioning") {
Write-Host " [!!! SUCCESS !!!]" -ForegroundColor Green
Write-Host "🎉 恭喜!神機已到手,快去後台看!" -ForegroundColor Green
[System.Console]::Beep(1000, 800); [System.Console]::Beep(1200, 800)
break
}
else {
Write-Host " [Unexpected Response]" -ForegroundColor Magenta
Write-Host "Details: $ResultStr" -ForegroundColor Gray
}
Start-Sleep -Seconds $Interval
}
⚠️ 注意事項: 上面這段腳本中的變數(如 $SubnetID、$CompartmentId、$SshKey 等)都是範例格式,請務必填入你自己帳號的數值,否則腳本會因為找不到目標而報錯喔! 這些數值怎麼找?請參考文章前面的「Stack 秘技」章節。
💡 成功掛機的小提醒(必看!)
- 💤 電腦別睡著: 請到電源設定把「自動睡眠」改為 「從不」。否則你睡了,電腦也睡了,神機就飛了。
- ⏰ 頻率別太快: 60 秒一次是安全範圍。太快(如 1 秒一次)可能會被甲骨文判定為 DDoS 攻擊而封號!
- 🔋 持久戰: 搶機可能需要幾小時,也可能需要幾天,放著讓它跑就對了。
🌟 結語
這套方法是我在 2026 年實測最穩定的路徑。如果你也成功搶到了,歡迎在底下留言跟我分享你的喜悅!下次我們來聊聊「搶到神機後,如何一鍵安裝 AI 助理 ClawdBot」!
#OracleCloud #甲骨文雲 #免費伺服器 #VPS #自動化腳本 #技術分享
「⚠️ 避雷:429 TooManyRequests 錯誤」 的小節,內容可以這樣寫:
「如果你跑腳本一陣子後,發現它不再顯示
Out of Stock而是噴出一大串 JSON 格式的 429 錯誤,這代表你的節奏太快了!甲骨文的 API 有頻率限制,建議將重試間隔設在 60-120 秒 之間最為安全。遇到這種情況,記得先停掉腳本休息 10 分鐘再戰。」























