关于 contabo
contabo 是一项通过 cntb CLI 管理 Contabo 基础设施的运维技能,面向需要配置和部署 VPS 或对象存储的用户。它提供部署前参数核对、实例创建与验证步骤,并强调凭据处理和清理风险。
主要功能
- 01核对部署所需参数及服务器配置
- 02通过 cntb CLI 创建和检查 VPS
- 03配置区域、产品及 SSH 公钥
- 04创建带自动扩容上限的对象存储
- 05提供连接验证与实例取消步骤
- 06说明凭据存放及操作日志要求
适用场景
- 01按用途配置并部署 Contabo VPS
- 02检查实例状态、IP 和 SSH 连接
- 03创建设有容量上限的对象存储
- 04排查 cntb CLI 凭据或部署问题
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ evolv3-ai/ vibe-skills --skill contabo安装后在 Claude Code 中输入/contabo确认已加载。
附带文件assets/env-templatereferences/OPERATIONS.md
详细介绍
Contabo 基础设施
严重警告:密钥和 .env
- 切勿将有效的
.env文件或凭据存放在任何 skill 文件夹中。 .env.template文件只能放在 skill 中的assets/目录内。- 将有效密钥存放在
~/.admin/.env中,并从该位置引用。
状态:可用于生产环境 | 依赖项:cntb CLI、SSH 密钥对
导航
- 运维、故障排除、配置和成本概览:
references/OPERATIONS.md
步骤 0:收集所需信息(必须)
停止。在执行任何部署命令之前,先向用户收集所有参数。
复制此清单并逐项确认:
Required Parameters:
- [ ] SERVER_NAME - Unique name for this server
- [ ] CONTABO_REGION - Region (EU, US-central, US-east, US-west, SIN, JPN, AUS)
- [ ] CONTABO_PRODUCT_ID - Product/plan ID (see profiles below)
- [ ] SSH_KEY_PATH - Path to SSH private key (default: ~/.ssh/id_rsa)
Deployment Purpose (determines recommended profile):
- [ ] Purpose: coolify / kasm / both / custom
coolify → V39 (Cloud VPS 10 SP, €5/mo)
kasm → V45 (Cloud VPS 20 SP, €8/mo)
both → V46 (Cloud VPS 30, €14/mo)
custom → Ask for specific product ID
按用途推荐的配置:
| 用途 | 产品 ID | 套餐 | vCPU | 内存 | 月费 |
|---|---|---|---|---|---|
| coolify | V39 | Cloud VPS 10 SP | 4 | 8GB | €5 |
| kasm | V45 | Cloud VPS 20 SP | 6 | 18GB | €8 |
| 两者 | V46 | Cloud VPS 30 | 8 | 24GB | €14 |
确认所有参数后,才能继续执行前置要求。
前置要求
使用此 skill 前,请确认以下事项:
1. 已安装 Contabo CLI
cntb version
注意:CLI 使用
cntb version(不带--)。cntb --version不是有效标志。
如果尚未安装,请使用以下命令安装:
# Linux / WSL
curl -sL https://github.com/contabo/cntb/releases/latest/download/cntb_linux_amd64.tar.gz | tar xz
sudo mv cntb /usr/local/bin/
# macOS
curl -sL https://github.com/contabo/cntb/releases/latest/download/cntb_darwin_amd64.tar.gz | tar xz
sudo mv cntb /usr/local/bin/
# Windows (cmd / Git Bash)
curl -L -o "%TEMP%\cntb.zip" "https://github.com/contabo/cntb/releases/latest/download/cntb_windows_amd64.zip"
unzip -o "%TEMP%\cntb.zip" -d "%TEMP%\cntb-extract"
copy "%TEMP%\cntb-extract\cntb.exe" "%USERPROFILE%\.local\bin\cntb.exe"
Windows 注意事项:确保目标目录(例如
%USERPROFILE%\.local\bin)已加入 PATH。由于执行策略限制,使用 PowerShell 的Invoke-WebRequest/Expand-Archive可能会失败。
2. Contabo 账户和 API 凭据
如果你没有 Contabo 账户:
在此注册:https://contabo.com/?ref=YOUR_REFERRAL_CODE
披露:这是 CJ Affiliate 计划中的推荐链接。skill 作者可能会获得 $25-$250 的佣金。使用此链接有助于支持这些 skill 的开发。
获取 API 凭据:https://my.contabo.com/api/details
你需要:
- 客户端 ID(OAuth2)
- 客户端密钥(OAuth2)
- API 用户名(你的电子邮件地址)
- API 密码(你的账户密码或生成的密码)
3. 已配置 cntb CLI
cntb get instances
如果出现错误,请使用 set-credentials 进行配置(写入 ~/.cntb.yaml):
cntb config set-credentials \
--oauth2-clientid "your_client_id" \
--oauth2-client-secret "your_client_secret" \
--oauth2-user "your_email" \
--oauth2-password 'your_password'
重要:请使用
cntb config set-credentials,而不是环境变量。其他文档中提到的CNTB_OAUTH2_*环境变量不可靠,可能导致clientId is empty错误。配置文件方式(Linux 上为~/.cntb.yaml,Windows 上为%USERPROFILE%\.cntb.yaml)是唯一可靠的方法。
密码中的特殊字符:如果密码包含
*、^、!或其他 shell 元字符,请用单引号括起,以防止 shell 展开。
验证配置是否已保存:
cntb config view
4. SSH 密钥对
ls ~/.ssh/id_rsa.pub
如果尚未生成,请使用以下命令生成:
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N ""
5. SSH 密钥可用
与其他提供商不同,Contabo 要求你在创建实例时,通过 --sshKeys 参数指定 SSH 密钥,并提供实际的公钥内容。
cat ~/.ssh/id_rsa.pub
6. 测试身份验证
cntb get datacenters
如果失败:凭据可能不正确。请在 https://my.contabo.com/api/details 验证。
服务配置
Coolify/Kasm 部署 — 超值之选
| 配置 | 套餐 | vCPU | 内存 | 磁盘 | 月费 |
|---|---|---|---|---|---|
coolify | Cloud VPS 10 SP | 4 | 8GB | 100GB | €5 |
kasm | Cloud VPS 20 SP | 6 | 18GB | 150GB | €8 |
both | Cloud VPS 30 | 8 | 24GB | 200GB | €14 |
标准套餐(更多存储空间)
| 配置 | 套餐 | vCPU | RAM | 磁盘 | 月费 |
|---|---|---|---|---|---|
standard-small | Cloud VPS S | 4 | 8GB | 200GB SSD | €8 |
standard-medium | Cloud VPS M | 6 | 16GB | 400GB SSD | €14 |
standard-large | Cloud VPS L | 8 | 30GB | 800GB SSD | €26 |
standard-xl | Cloud VPS XL | 10 | 60GB | 1600GB SSD | €39 |
价格对比——为什么选择 Contabo?
| 提供商 | 6 vCPU,16-18GB RAM | 月费 |
|---|---|---|
| Contabo VPS 20 SP | 6 vCPU,18GB | €8 |
| Hetzner CX42 | 8 vCPU,16GB | €20 |
| DigitalOcean | 8 vCPU,16GB | $96 |
| Vultr | 6 vCPU,16GB | $96 |
| Linode | 6 vCPU,16GB | $96 |
与大多数竞争对手相比,Contabo 的性价比高出 5-10 倍。
部署步骤
第 1 步:设置环境变量
export CONTABO_REGION="EU" # EU, US-central, US-east, US-west, SIN, JPN, AUS
export CONTABO_PRODUCT_ID="V48" # See product IDs below (V48 verified working)
export SERVER_NAME="my-server"
区域选项
| 代码 | 位置 | 区域 |
|---|---|---|
EU | 德国(纽伦堡) | 欧洲 |
US-central | 密苏里州圣路易斯 | 美国中部 |
US-east | 纽约 | 美国东部 |
US-west | 西雅图 | 美国西部 |
SIN | 新加坡 | 亚洲 |
JPN | 东京 | 日本 |
AUS | 悉尼 | 澳大利亚 |
运行 cntb get datacenters 查看完整列表。
产品 ID 参考
| 产品 ID | 套餐 | vCPU | RAM | 磁盘 | 价格 | 状态 |
|---|---|---|---|---|---|---|
| V12 | VPS S NVMe | 4 | 8GB | 100GB | €5 | ✅ 已验证 |
| V48 | VPS M (Cloud VPS 2 SSD) | 6 | 16GB | 400GB | €14 | ✅ 已验证 |
| V92 | Cloud VPS 10 SSD | 4 | 8GB | 150GB | ~€5 | ✅ 已验证 |
| V101 | Cloud VPS 40 SSD | 12 | 48GB | 500GB | ~€20 | ✅ 已验证 |
| V35 | Cloud VPS 1 | 4 | 6GB | 100GB | €4.50 | 未测试 |
| V39 | Cloud VPS 10 SP | 4 | 8GB | 100GB NVMe | €5 | 未测试 |
| V45 | Cloud VPS 20 SP | 6 | 18GB | 150GB NVMe | €8 | ⚠️ 可能无法使用 |
| V46 | Cloud VPS 30 | 8 | 24GB | 200GB | €14 | 未测试 |
| V47 | Cloud VPS S | 4 | 8GB | 200GB SSD | €8 | 未测试 |
| V49 | Cloud VPS L | 8 | 30GB | 800GB SSD | €26 | 未测试 |
| V50 | Cloud VPS XL | 10 | 60GB | 1600GB SSD | €39 | 未测试 |
重要:Contabo 经常调整产品 ID。运行 cntb get products --productType vps 获取当前列表。已验证可用(2026 年 2 月):V12、V48、V92、V101。
第 2 步:创建实例
# Get the SSH public key content
SSH_KEY_CONTENT=$(cat ~/.ssh/id_rsa.pub)
# Create instance
cntb create instance \
--productId "$CONTABO_PRODUCT_ID" \
--region "$CONTABO_REGION" \
--displayName "$SERVER_NAME" \
--imageId "ubuntu-22.04" \
--sshKeys "$SSH_KEY_CONTENT"
第 3 步:获取实例详情
# List instances to get the ID
INSTANCE_ID=$(cntb get instances --output json | jq -r '.[] | select(.displayName=="'"$SERVER_NAME"'") | .instanceId')
echo "Instance ID: $INSTANCE_ID"
# Get instance details
cntb get instance "$INSTANCE_ID"
# Get IP address
SERVER_IP=$(cntb get instance "$INSTANCE_ID" --output json | jq -r '.ipConfig.v4.ip')
echo "SERVER_IP=$SERVER_IP"
第 4 步:等待服务就绪
# Wait for instance to be running
echo "Waiting for instance to be running..."
while [ "$(cntb get instance "$INSTANCE_ID" --output json | jq -r '.status')" != "running" ]; do
sleep 10
done
echo "Instance is running!"
# Wait for SSH to be available (typically 2-5 minutes for Contabo)
echo "Waiting for SSH to be available..."
until ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no root@$SERVER_IP "echo connected" 2>/dev/null; do
sleep 10
done
echo "Server is ready!"
第 5 步:验证连接
ssh root@$SERVER_IP "uname -a && free -h && df -h /"
第 6 步:输出供下游技能使用
# Contabo only offers x86 architecture
SERVER_ARCH="amd64"
# Save to .env.local for downstream skills
echo "SERVER_IP=$SERVER_IP" >> .env.local
echo "SSH_USER=root" >> .env.local
echo "SSH_KEY_PATH=~/.ssh/id_rsa" >> .env.local
echo "SERVER_ARCH=$SERVER_ARCH" >> .env.local
echo "COOLIFY_SERVER_IP=$SERVER_IP" >> .env.local
echo "KASM_SERVER_IP=$SERVER_IP" >> .env.local
echo ""
echo "Instance deployed successfully!"
echo " IP: $SERVER_IP"
echo " Arch: $SERVER_ARCH"
echo " SSH: ssh root@$SERVER_IP"
验证部署
ssh root@$SERVER_IP "echo 'Contabo instance connected successfully'"
对象存储自动扩缩容
Contabo 支持设置对象存储的自动扩缩容限制,以控制成本。
创建启用自动扩缩容的对象存储
# Create object storage bucket
cntb create objectStorage \
--region "$CONTABO_REGION" \
--displayName "my-storage" \
--totalPurchasedSpaceTB 0.5 \
--autoScaling.state enabled \
--autoScaling.sizeLimitTB 2
这样,存储空间就能根据需要自动扩展,最高可达 2TB。
清理
警告:此操作具有破坏性,且无法撤销。
# Cancel instance (Contabo uses "cancel" not "delete")
cntb cancel instance "$INSTANCE_ID"
# Note: Cancellation may take effect at end of billing period
# For immediate deletion, contact Contabo support
运维
故障排除、最佳实践、配置变量和成本快照见 references/OPERATIONS.md。
日志集成
执行基础设施操作时,请将日志记录到集中式系统:
# After provisioning
log_admin "SUCCESS" "operation" "Provisioned Contabo VPS" "id=$INSTANCE_ID provider=Contabo"
# After destroying
log_admin "SUCCESS" "operation" "Cancelled Contabo VPS" "id=$INSTANCE_ID"
# On error
log_admin "ERROR" "operation" "Contabo deployment failed" "error=$ERROR_MSG"
完整的日志记录文档请参阅 admin 技能的 references/logging.md。