SuperAPI AI 工具集

hetzner-provisioner

部署与运维

查看项目

更新于 10-16 08:27

技能介绍

用途

Hetzner Cloud Provisioner 用于在 Hetzner Cloud 上自动生成并部署基础设施即代码(Infrastructure-as-Code,Terraform/Pulumi),帮助用户以较低成本部署 SaaS 应用。资料称其定位为 Vercel 和 AWS 的预算友好替代方案,可实现每月约 10-15 美元的 SaaS 部署,而非其他平台每月 50-100 美元。

当用户提及以下内容时激活:"deploy on Hetzner"、"Hetzner Cloud"、"budget deployment"、"cheap hosting"、"deploy for $10/month"、"cost-effective infrastructure"。

主要能力

  1. 需求分析:分析应用类型(NextJS、Node.js、Python 等)、数据库需求(Postgres、MySQL、Redis)、预期流量/用户、预算约束。
  2. 生成基础设施即代码:
    • Hetzner Cloud 的 Terraform 配置;
    • 备选:Pulumi(TypeScript 原生 IaC);
    • 服务器实例(CX11、CX21、CX31);
    • 托管数据库(Postgres、MySQL);
    • 对象存储(如需要);
    • 网络(防火墙规则、浮动 IP)。
  3. 配置生产环境:Docker 容器化、SSL 证书(Let's Encrypt)、DNS 配置(Cloudflare 或 Hetzner DNS)、GitHub Actions CI/CD 流水线、监控(Uptime Kuma,自托管)、自动备份。
  4. 输出部署指南:分步部署说明、成本明细、监控 URL、故障排查指南。

使用方式

必需的密钥检查(强制)

在生成 Terraform/Pulumi 代码之前,必须检查 Hetzner API Token。

步骤 1:检查 Token 是否存在

# Check .env file
if [ -f .env ] && grep -q "HETZNER_API_TOKEN" .env; then
  echo "✅ Hetzner API token found"
else
  # Token NOT found - STOP and prompt user
fi

步骤 2:若 Token 缺失,停止并提示用户

提示内容要求用户前往 https://console.hetzner.cloud/ 获取 Token:进入项目 → Security → API Tokens → Generate API Token → 命名(如 "specweave-deployment")→ 权限选择 Read & Write → Generate → 立即复制 Token。Token 将保存到 .env(已 gitignore),格式为 HETZNER_API_TOKEN=your-token-here。

步骤 3:校验 Token 格式

# Hetzner tokens are 64 alphanumeric characters
if [[ ! "$HETZNER_API_TOKEN" =~ ^[a-zA-Z0-9]{64}$ ]]; then
  echo "⚠️  Warning: Token format unexpected"
  echo "Expected: 64 alphanumeric characters"
  echo "Got: ${#HETZNER_API_TOKEN} characters"
  echo ""
  echo "This might not be a valid Hetzner API token."
  echo "Continue anyway? (yes/no)"
fi

步骤 4:安全保存 Token

# Save to .env
echo "HETZNER_API_TOKEN=$HETZNER_API_TOKEN" >> .env

# Ensure .env is gitignored
if ! grep -q "^\.env$" .gitignore; then
  echo ".env" >> .gitignore
fi

# Create .env.example for team
cat > .env.example << 'EOF'
# Hetzner Cloud API Token
# Get from: https://console.hetzner.cloud/ → Security → API Tokens
HETZNER_API_TOKEN=your-hetzner-token-here
EOF

echo "✅ Token saved to .env (gitignored)"
echo "✅ Created .env.example for team (commit this)"

步骤 5:在 Terraform 中使用 Token

# terraform/variables.tf
variable "hetzner_token" {
  description = "Hetzner Cloud API Token"
  type        = string
  sensitive   = true
}

# terraform/provider.tf
provider "hcloud" {
  token = var.hetzner_token
}

# Run Terraform
# export TF_VAR_hetzner_token=$HETZNER_API_TOKEN
# terraform apply

示例用法

用户:"Deploy my NextJS app on Hetzner with Postgres, as cheaply as possible"

hetzner-provisioner 会给出约 $12/月的方案,包括:CX11 实例(2 vCPU,2GB RAM)$5.83/月、托管 Postgres(2GB)$5.00/月、20GB 存储 $0.50/月、SSL(Let's Encrypt)免费,总计约 $11.33/月。生成文件包括 terraform/main.tf、terraform/variables.tf、terraform/outputs.tf、.github/workflows/deploy.yml。后续步骤:在 GitHub secrets 中设置 HETZNER_API_TOKEN、推送到 GitHub、GitHub Actions 自动部署。

配置选项

支持的实例类型:

  • CX11(1 vCPU,2GB RAM):$5.83/月 - 小型应用,100-1000 用户
  • CX21(2 vCPU,4GB RAM):$6.90/月 - 中型应用,1000-10000 用户
  • CX31(2 vCPU,8GB RAM):$14.28/月 - 较大应用,10000+ 用户

数据库选项:

  • 托管 Postgres(2GB):$5/月
  • 托管 MySQL(2GB):$5/月
  • 自托管(包含在实例成本中)

成本对比

资料给出的对比(平台 / 小型应用 / 中型应用 / 大型应用):

  • Hetzner:$12/mo / $15/mo / $25/mo
  • Vercel:$60/mo / $120/mo / $240/mo
  • AWS:$25/mo / $80/mo / $200/mo
  • Railway:$20/mo / $50/mo / $100/mo

资料称相比替代方案可节省 50-80%。

技术细节

  • Terraform Provider:hetznercloud/hcloud
  • API:Hetzner Cloud API v1
  • 区域:Nuremberg、Falkenstein、Helsinki(德国/芬兰)
  • 部署:Docker + GitHub Actions
  • 监控:Uptime Kuma(自托管,免费)

集成

可与以下技能配合:cost-optimizer(预算敏感时推荐 Hetzner)、devops-agent(战略基础设施规划)、nextjs-agent(NextJS 专用部署),以及任意后端框架(Node.js、Python、Go 等)。

适用场景

适合预算敏感、希望以较低月成本在 Hetzner Cloud 上部署应用(如 NextJS、Node.js、Python 等)并需要 Terraform/Pulumi、Docker、CI/CD、监控与备份一体化配置的用户。

限制

  • 仅限欧盟数据中心(GDPR 友好)
  • 需要 Hetzner Cloud 账户
  • 需要手动配置 DNS
  • 不适合多区域部署(此类需求应使用 AWS/GCP)

未来增强(资料提及)

  • Kubernetes 支持(Hetzner 上的 k3s)
  • 负载均衡器配置
  • 多区域部署
  • 灾难恢复设置