NVIDIA DSX-AIR 免费云主机:注册、抢机与自动化保活全流程教程
本教程整合了社区多位大佬的经验,详细介绍如何从零开始注册 NVIDIA 开发者计划,通过浏览器控制台脚本自动抢占稀缺的云主机资源,并通过 API 脚本实现自动化保活。
一、 账号注册
- 准备邮箱:需要准备一个能够获得 NVIDIA 开发者计划资格的邮箱。
- 优先推荐自定义域名邮箱(如通过 Cloudflare、阿里等托管的独立域名邮箱)。
- 经测试,部分免费域名邮箱(如
seek.li等)目前也可以成功通过验证。 - 访问注册地址:打开 NVIDIA DSX-AIR 注册页面。
资格确认:完成注册后,确认控制台显示已获得符合资格的开发者面板,即可进入下一步。

二、 创建实例与抢机配置
目前平台资源非常紧缺,直接创建大概率会提示没有资源(提示错误或失败),需要通过控制台脚本进行持续挂机抢开。
1. 基础配置创建
- 登录控制台,找到
Simulations(仿真实验)板块并点击创建。

- 将
oob-mgmt-server节点拖拽到主界面。
- 点击该节点,在右侧面板中选择你需要的硬件规格以及操作系统(推荐选择 Ubuntu)。

- 点击右下角的 Update Configuration(更新配置)。
- 双击
oob-mgmt-server,点击 Power On(开机)。
- 注:如果运气好直接开机成功,可跳过下方抢机步骤;若提示没有资源,请继续阅读。

2. 浏览器控制台自动抢机
- 在当前仿真实验(Simulation)页面,观察浏览器地址栏,复制你的 Simulation ID。
- 例如:URL 为
https://dsx-air.nvidia.com/simulations/4c5987bf-xxxx-xxxx-xxxx-xxxxxxxxx,则4c5987bf...就是你的 ID。
- 按下键盘的
F12键打开开发者工具,切换到 Console(控制台) 标签页。
- 复制并修改下方抢机脚本,将代码中
#sid的值替换为你刚刚复制的真实 ID。 - 将修改后的代码粘贴进控制台并按
Enter回车运行:
if (window._sMonitor?.isActive) {
window._sMonitor.destroy();
}
class SMonitor {
// ⚠️ 请在这里替换为您自己的 Simulation ID
#sid = "4c5987bf-0588-4795-xxxxxxxxx-xxxxxxxxx";
#intervalMs = 3000; // 抢开间隔:3000毫秒(3秒)
#abortController = null;
#timerId = null;
constructor() {
this.isActive = true;
this.#initLoop();
}
get #requestConfig() {
return {
method: "PATCH",
mode: "cors",
credentials: "include",
referrer: `https://dsx-air.nvidia.com/simulations/${this.#sid}`,
headers: {
"accept": "application/json, text/plain, */*",
"cache-control": "no-cache",
"pragma": "no-cache"
}
};
}
async #pingState() {
const timestamp = () => `[${new Date().toLocaleTimeString()}]`;
const url = `https://api.dsx-air.nvidia.com/api/v3/simulations/${this.#sid}/start/`;
try {
const response = await fetch(url, { ...this.#requestConfig, signal: this.#abortController?.signal });
const rawText = await response.text();
let parsedData;
try {
parsedData = JSON.parse(rawText);
} catch {
parsedData = rawText;
}
if (parsedData && typeof parsedData === 'object' && 'state' in parsedData) {
console.log(`${timestamp()} State:`, parsedData.state);
} else {
console.log(`${timestamp()} Raw Response:`, parsedData);
}
if (!response.ok) {
console.log(`${timestamp()} HTTP Error:`, response.status);
}
} catch (err) {
console.log(`${timestamp()} Network/Request Failed:`, err);
}
}
#initLoop() {
this.#abortController = new AbortController();
const tick = async () => {
if (!this.isActive) return;
await this.#pingState();
if (this.isActive) {
this.#timerId = setTimeout(tick, this.#intervalMs);
}
};
tick();
}
destroy() {
this.isActive = false;
if (this.#timerId) clearTimeout(this.#timerId);
if (this.#abortController) this.#abortController.abort();
console.log("抢机脚本已停止并清理。");
}
}
window._sMonitor = new SMonitor();
💡 注意:脚本运行后,控制台持续输出 HTTP Error: 400 State: REQUESTING 属于正常现象,代表目前由于没有空闲资源导致开机失败,脚本正在持续重试。只需挂着页面等待其抢到资源即可。三、 连接与端口映射
成功开机后,需要为实例配置外部访问。
- 查看默认凭据:在控制台网页的右下角会展示该实例的初始用户名和密码(通常用户名为
ubuntu,密码为nvidia)。 - 配置端口映射:由于云主机没有直接暴露公网 IP 的所有端口,你需要手动在控制台内为你需要访问的服务(如 SSH 的
22端口)创建映射规则。 获取连接信息:映射建立后,控制台会生成对应的
公网IP和映射后的外网端口。你可以通过该信息直接连接,或连接后自行 DD 更换其他系统。

四、 创建 API 与自动化保活
⚠️ 保活必要性:免费用户创建的实例默认最多只能保持 3 天(72 小时) 的活跃状态,随后主机会自动停机并进入休眠。为了让主机长久运行,我们需要配置 API 并通过定时脚本自动延长主机的休眠倒计时。
1. 获取 NGC API Key
- 访问 NVIDIA NGC 密钥管理页面:NVIDIA NGC API Keys
- 根据页面提示选择好对应的权限范围。
点击 Create API Key 生成密钥,并妥善保存该密钥(该密钥只显示一次)。

2. 保活 Shell 脚本
在你的保活服务器或实例本身(如果配置了本地 Crontab 并能确保网络畅通)中创建一个 Shell 脚本,例如 nvidia_keepalive.sh:
#!/usr/bin/env bash
# ==============================================================================
# NVIDIA DSX-AIR 自动保活脚本
# 建议配置定时任务(Crontab)每 6 小时自动执行一次
# ==============================================================================
set -euo pipefail
NVIDIA_AIR_API_BASE="https://api.air-ngc.nvidia.com/api/v3"
# ⚠️ 请在下方填入你真实的 NGC API KEY 和 Simulation ID
NVIDIA_AIR_API_KEY="你的_NGC_API_KEY"
SIMULATION_ID="你的_simulation_id"
# 计算延迟时间(设置为当前时间往后顺延 71 小时)
target_sleep_at="$( python3 - <<'PY'
from datetime import datetime, timedelta, timezone
target = datetime.now(timezone.utc) + timedelta(hours=71)
print(target.replace(microsecond=0).isoformat().replace("+00:00", "Z"))
PY
)"
payload="$(mktemp)"
before_body="$(mktemp)"
after_body="$(mktemp)"
trap 'rm -f "$payload" "$before_body" "$after_body"' EXIT
printf '{"sleep_at":"%s"}' "$target_sleep_at" > "$payload"
simulation_url="${NVIDIA_AIR_API_BASE%/}/simulations/${SIMULATION_ID}/"
echo "目标保活延长时间点: $target_sleep_at"
# 1. 查询当前实例状态
curl --ipv4 -sS \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-H 'User-Agent: air-sdk/1.3.1' \
-H 'X-Air-Sdk-Version: 1.3.1' \
-H "Authorization: Bearer $NVIDIA_AIR_API_KEY" \
"$simulation_url" > "$before_body"
echo "续期前休眠时间: $(python3 -c 'import json,sys; print(json.load(open(sys.argv[1])).get("sleep_at"))' "$before_body")"
# 2. 发送 PATCH 请求更新休眠时间
curl --ipv4 -sS -X PATCH \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-H 'User-Agent: air-sdk/1.3.1' \
-H 'X-Air-Sdk-Version: 1.3.1' \
-H "Authorization: Bearer $NVIDIA_AIR_API_KEY" \
--data @"$payload" \
"$simulation_url" > "$after_body"
after_sleep_at="$(python3 -c 'import json,sys; print(json.load(open(sys.argv[1])).get("sleep_at"))' "$after_body")"
echo "续期后休眠时间: $after_sleep_at"
# 3. 验证结果
if [ "$after_sleep_at" != "$target_sleep_at" ]; then
echo "❌ 验证失败: 预期时间为 $target_sleep_at,但实际返回为 $after_sleep_at" >&2
exit 1
fi
echo ""
3. 配置定时任务 (Crontab)
给脚本赋予执行权限,并建议设置每 6 小时执行一次:
# 赋予执行权限
chmod +x nvidia_keepalive.sh
# 手动测试运行一次确保没有报错
./nvidia_keepalive.sh
# 打开 crontab 编辑器
crontab -e
# 添加以下一行(每6小时执行一次,请将路径改为你脚本的实际绝对路径)
0 */6 * * * /path/to/nvidia_keepalive.sh >> /path/to/keepalive.log 2>&1
声明:本脚本及操作流程整理自 NodeSeek 社区。因平台机制可能随时调整,请按需使用并关注平台政策变化。