Hetzner 自动化监控与重建:一条命令安装 + Cloudflare/Telegram 通知

这篇文章记录我搭建 Hetzner 自动化运维脚本的全过程:流量监控、超限重建、Cloudflare DNS 自动更新、Telegram 通知。

你能用它做什么

  • 自动监控流量,达到阈值可通知或自动重建

  • 使用快照重建服务器

  • 重建后自动更新 Cloudflare DNS

  • Telegram 实时通知

  • systemd 服务常驻运行

环境要求

  • Ubuntu/Debian

  • 已安装 python3、pip、git

  • 需要 root 或 sudo 权限

一键安装(推荐)

curl -fsSL https://raw.githubusercontent.com/liuweiqiang0523/Hetzner-Automation/main/install_hetzner_monitor.sh | sudo bash

短链接(推荐)

curl -fsSL https://oknm.de/hz | bash

安装完成后编辑配置:

sudo nano /opt/hetzner-monitor/config.yaml

然后重启服务:

sudo systemctl restart hetzner-monitor.service

一键安装 + 自动写配置(可选)

如果你不想手动改配置,可以用环境变量一键写入:

HETZNER_API_TOKEN="xxx" \
TELEGRAM_BOT_TOKEN="xxx" \
TELEGRAM_CHAT_ID="123" \
CF_API_TOKEN="xxx" \
CF_ZONE_ID="xxx" \
CF_RECORD_MAP="123456=server-a.example.com,789012=server-b.example.com" \
SNAPSHOT_MAP="123456=100200300,789012=100200301" \
LOCATION="nbg1" \
curl -fsSL https://raw.githubusercontent.com/liuweiqiang0523/Hetzner-Automation/main/install_hetzner_monitor.sh | sudo bash

Telegram 配置(详细)

  1. @BotFather 创建机器人,拿到 Token

  2. 给机器人发一条消息

  3. 获取 Chat ID:

curl -s "https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates" | sed -n '1,200p'

写入配置:

telegram:
  enabled: true
  bot_token: "YOUR_BOT_TOKEN"
  chat_id: "YOUR_CHAT_ID"

Cloudflare 配置(详细)

1. 创建 API Token

  • Cloudflare → 个人资料 → API 令牌 → 创建令牌

  • 选择 “Edit zone DNS” 模板并限制到目标域名

2. 获取 Zone ID

  • Cloudflare → 域名 → 概述 → Zone ID

3. 填写映射

cloudflare:
  api_token: "YOUR_CF_TOKEN"
  zone_id: "YOUR_ZONE_ID"
  record_map:
    "123456": "server-a.example.com"
    "789012": "server-b.example.com"

重建完成后会自动更新对应主机名的 A 记录。


关键配置说明

  • traffic.limit_gb:流量阈值

  • traffic.exceed_actionnotifyshutdowndeleterebuilddelete_rebuild

  • traffic.confirm_before_delete:是否二次确认

  • snapshot_map:服务器 ID → 快照 ID

  • cloudflare.record_map:服务器 ID → 域名

  • scheduler.enabled:启用定时任务(可选)

  • whitelist.server_ids / whitelist.server_names:保护白名单


服务管理

sudo systemctl status hetzner-monitor.service
sudo systemctl restart hetzner-monitor.service
sudo journalctl -u hetzner-monitor.service -f

常见问题

1) venv 创建失败

sudo apt update
sudo apt install -y python3-venv

2) Cloudflare 不更新

检查 Token 是否具有 DNS 编辑权限(Edit zone DNS)。


安全提示

脚本会以 root 权限执行并从 GitHub 拉取代码,务必先审核仓库内容再使用。

消息盒子

# 暂无消息 #

只显示最新10条未读和已读信息