用途
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"。
主要能力
- 需求分析:分析应用类型(NextJS、Node.js、Python 等)、数据库需求(Postgres、MySQL、Redis)、预期流量/用户、预算约束。
- 生成基础设施即代码:
- Hetzner Cloud 的 Terraform 配置;
- 备选:Pulumi(TypeScript 原生 IaC);
- 服务器实例(CX11、CX21、CX31);
- 托管数据库(Postgres、MySQL);
- 对象存储(如需要);
- 网络(防火墙规则、浮动 IP)。
- 配置生产环境:Docker 容器化、SSL 证书(Let's Encrypt)、DNS 配置(Cloudflare 或 Hetzner DNS)、GitHub Actions CI/CD 流水线、监控(Uptime Kuma,自托管)、自动备份。
- 输出部署指南:分步部署说明、成本明细、监控 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)
- 负载均衡器配置
- 多区域部署
- 灾难恢复设置