文章摘要
文章介绍了一套基于 GitHub Actions 的 Oracle ARM 云端自动抢机方案,无需本地挂机。核心步骤包括新建私有仓库、配置 7 项 Secrets 凭证、部署 workflow 脚本,并通过手动或定时任务每 15 分钟尝试创建实例。脚本默认抢 Ubuntu 24.04、4C24G 配置,45 分钟自动退出,成功后可使用一键脚本搭建节点。

很多兄弟用纯国内环境成功下号后,卡在了“配置不足”这一步。今天就把坑填上,分享这套完全不需要本地挂机的 GitHub Actions 自动化抢机脚本。
一、纯云端抢机配置步骤
- 新建仓库: 在自己的 GitHub 账号下创建一个新的私有仓库 (Private Repository)。
- 配置安全环境变量 (Secrets): 进入仓库的 Settings → Secrets and variables → Actions,点击 New repository secret,严格按照代码里的变量名,逐一添加以下 7 个凭证:
TENANCY_OCID(Oracle 租户 ID)USER_OCID(Oracle 用户 ID)REGION(服务器所在区域,例如us-phoenix-1)FINGERPRINT(Oracle API 密钥指纹)PRIVATE_KEY(Oracle API 私钥的完整文本)SUBNET_ID(目标虚拟云网络中的子网 ID)USER_SSH_PUB_KEY(自己电脑的SSH公钥,必须配置正确,否则抢到机器也无法通过 SSH 登录)
- 部署代码: 在仓库根目录下创建
.github/workflows/文件夹,新建一个.yml文件(例如sniper.yml),将下边的代码完整粘贴进去并提交。 - 触发运行: 代码中配置了
workflow_dispatch,可以直接到 GitHub 的 Actions 面板中,手动点击 Run workflow 来启动脚本;同时代码也配置了cron,会自动每 15 分钟在后台尝试一次,45分钟超时自动安全退出,极致防封。
注:脚本默认抢的是 Ubuntu 24.04。如果想安装其他系统,修改代码第 40 行的查询条件即可。
二、完整 GitHub Actions 源码
点击展开查看 sniper.yml 源码:
PHP
name: Oracle ARM Instance Sniper Template
on:
workflow_dispatch:
schedule:
- cron: '*/15 * * * *'
jobs:
sniper:
name: ARM Instance Sniper
runs-on: ubuntu-latest
timeout-minutes: 60
concurrency:
group: ${{ github.workflow }}
cancel-in-progress: false
env:
OCI_TENANCY: ${{ secrets.TENANCY_OCID }}
OCI_REGION: ${{ secrets.REGION }}
SUBNET_ID: ${{ secrets.SUBNET_ID }}
SSH_PUB_KEY: ${{ secrets.USER_SSH_PUB_KEY }}
steps:
- name: Install OCI CLI
run: |
curl -L -O [https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh](https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh)
chmod +x install.sh
./install.sh --accept-all-defaults
echo "/home/runner/bin" >> $GITHUB_PATH
- name: Setup OCI Config
env:
OCI_USER: ${{ secrets.USER_OCID }}
OCI_FP: ${{ secrets.FINGERPRINT }}
OCI_PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }}
run: |
mkdir -p ~/.oci
cat > ~/.oci/config < ~/.oci/key.pem
chmod 600 ~/.oci/key.pem ~/.oci/config
- name: Fixed-Key Sentry Loop
run: |
export OCI_CLI_SUPPRESS_FILE_PERMISSIONS_WARNING=True
START_TIME=$(date +%s)
mkdir -p ~/.ssh
echo "${SSH_PUB_KEY}" > ~/.ssh/id_rsa_oracle.pub
AD_LIST=$(oci iam availability-domain list --compartment-id "${OCI_TENANCY}" --query "data[*].name" --raw-output | jq -r '.[]' | sort)
IMAGE_ID=$(oci compute image list --compartment-id "${OCI_TENANCY}" --operating-system "Canonical Ubuntu" --operating-system-version "24.04" --shape "VM.Standard.A1.Flex" --query 'data[0].id' --raw-output)
echo "=== Oracle ARM Sniper Template V1.0 ==="
echo "[AD] Target ADs: $(echo $AD_LIST | tr '\n' ' ')"
echo "[IMG] Target Image: ${IMAGE_ID}"
while true; do
CURRENT_TIME=$(date +%s)
ELAPSED=$(( CURRENT_TIME - START_TIME ))
if [ $ELAPSED -gt 2700 ]; then
echo "[TIMEOUT] Reached 45m limit. Exiting safely."
exit 0
fi
for ad in $AD_LIST; do
echo "[TRY] $ad | Elapsed: ${ELAPSED}s"
if oci compute instance launch \
--availability-domain "$ad" \
--compartment-id "${OCI_TENANCY}" \
--shape "VM.Standard.A1.Flex" \
--shape-config '{"ocpus":4,"memoryInGBs":24}' \
--image-id "$IMAGE_ID" \
--subnet-id "${SUBNET_ID}" \
--ssh-authorized-keys-file ~/.ssh/id_rsa_oracle.pub \
--assign-public-ip true \
--display-name "SNIPER-$(date +%m%d_%H%M)" \
--wait-for-state RUNNING --max-wait-seconds 1 \
>/dev/null 2>/dev/null; then
echo "[SUCCESS] ARM 4C24G instance created in $ad"
exit 0
else
echo "$ad: No stock"
fi
sleep 5
done
sleep 30
done
五、机器到手,一步到位搭建节点
抢到机器后如何起飞?附送一个非常稳的“甬哥VPS专用一键脚本”,直接跑就行:
bash <(wget -qO- [https://raw.githubusercontent.com/yonggekkk/sing-box-yg/main/sb.sh](https://raw.githubusercontent.com/yonggekkk/sing-box-yg/main/sb.sh))
祝大家早日用上免费的 2核 12G 神机!
截至至今日,4核 24G 神机未收费!
本文最后更新于2026年7月10日,若涉及的内容可能已经失效,直接留言反馈补链即可,我们会处理,谢谢
声明:本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,请勿用于任何商业目的与商业用途,如需商用请支持正版!如亲下载后改变其用途与使用方式,与本站无任何关系,本站已经进行告知义务!我们只做安全认证测试如果资源侵犯了您的版权利益,请联系站长邮箱:17606723350@163.com

评论(0)