返回博客

deploy-ai-agent-on-hetzner-vps

作者:Hermify Team||阅读约 4 分钟
deploy-ai-agent-on-hetzner-vps

title: "在 Hetzner VPS 上部署 AI 智能体:2026 完整指南" description: "2026 年在 Hetzner VPS 上部署自托管 AI 智能体的完整步骤:套餐选型、防火墙加固、Docker Compose、Telegram 接入,以及凌晨三点最容易出问题的地方。" date: 2026-06-08 author: "Hermify Team" tags: ["AI Agents", "Hetzner", "Self-hosting", "Docker"] coverImage: "cover.jpg" socialImage: "og.jpg" coverAlt: "暗色调服务器机架,绿色状态指示灯亮起,画面文字为"Hetzner AI Agent""

为什么 Hetzner 是自托管智能体的首选

如果你在 dev.to、Medium 或独立 AI Telegram 群组里逛过,一定见过同样的模式:每当有人问"哪里能用两杯咖啡的价钱跑一个长期在线的 AI 智能体",答案几乎都是 Hetzner Cloud。社区选择它的理由多年来始终如一:每欧元对应的真实 CPU 性能,以及在服务器启动之前就能配置好的简洁 Cloud Firewall。

本指南面向已经决定自托管 AI 智能体的读者(Hermes Agent、OpenClaw、带 LLM 节点的 n8n,或任何从长期运行的服务器调用模型 API 的工具),并希望在 Hetzner 上完成部署,同时不跳过那些凌晨三点才会暴露问题的关键步骤。内容涵盖套餐选型、服务器加固、Docker Compose、Telegram 频道测试,以及一份诚实的"早晚会出问题"清单。

如果你还在挑选便宜 VPS,可以先看我们的便宜 VPS 横向评测,那篇文章覆盖了更广泛的选择。本文默认你已经选定了 Hetzner。

第一步:选择合适的套餐

截至 2026 年中,Hetzner Cloud 的共享 vCPU 套餐分三条产品线:

  • CX(Intel) — 老款 Intel 共享 vCPU,部分地区正在淘汰
  • CPX(AMD EPYC) — 当前 x86 默认选择,单线程性能最强
  • CAX(ARM Ampere) — 价格最低,每欧元性能表现极强

对于 API 驱动的 AI 智能体(调用 OpenAI、Anthropic、OpenRouter 或自己的 Ollama 实例,并在本地编排工具调用),各产品线中最小的套餐就够用了:

套餐 vCPU 内存 NVMe 欧洲价格 备注
CAX11(ARM) 2 4 GB 40 GB ~€3.79/月 最便宜的可用选项
CX22(Intel) 2 4 GB 40 GB ~€3.79/月 部分地区即将停售
CPX11(AMD) 2 2 GB 40 GB ~€4.59/月 最佳单线程 x86
CPX21(AMD) 3 4 GB 80 GB ~€7.55/月 适合多智能体或浏览器工具

美国地区价格略高(同等 CX22 规格约 $4.59–$4.99)。Hetzner 于 2026 年 6 月 15 日调整了价格——新订单使用新费率,已有服务器保留旧费率直到重新扩缩容。

建议:从 CAX11 或 CX22 起步。2 vCPU + 4 GB 内存足以运行一个智能体、一个 Telegram 网关、一个轻量反向代理和 Docker 守护进程,偶尔的无头浏览器任务也能应对。如果你计划运行多个智能体、用 Playwright 抓页面,或在夜间批量执行技能,可以升级到 CPX21。

如果你的智能体运行时暂未提供 ARM 镜像,请留在 CX22 或 CPX11。目前主流运行时(Hermes Agent、OpenClaw、n8n)均已提供 linux/arm64 镜像,因此 CAX 产品线通常可以直接使用。

第二步:在 SSH 连接前完成服务器配置与安全加固

这一步是最常被跳过的,也是最容易在深夜出问题的地方。Hetzner 提供两层防火墙(边缘级 Cloud Firewall 和主机级 UFW),两层都要用。Cloud Firewall 应在服务器启动前配置完毕,确保服务器从未在非预期端口上接受过任何数据包。

在 Hetzner 控制台中创建 Cloud Firewall,配置以下入站规则:

  • TCP 22 仅允许你的 IP(或固定办公网段的小 CIDR)
  • TCP 80 允许 0.0.0.0/0, ::/0(仅当此服务器运行反向代理时)
  • TCP 443 允许 0.0.0.0/0, ::/0(仅当需要 HTTPS 用于 Webhook 或 Web UI 时)
  • ICMP 允许 0.0.0.0/0, ::/0(使 ping 可用于监控)

出站:保持默认的"全部放行"——智能体需要访问模型 API。

创建服务器时绑定防火墙,操作系统选择 Ubuntu 24.04 LTS。在 SSH 密钥面板中添加你笔记本的公钥,禁止密码登录。

写实风格的暗色控制面板,配有发光绿色网络盾牌图标,代表云端防火墙保护

服务器启动后,以 root 身份 SSH 登录,立即执行以下四项操作:

# 1. 更新补丁
apt update && apt upgrade -y && apt install -y ufw fail2ban unattended-upgrades

# 2. 创建非 root 用户
adduser --disabled-password --gecos "" agent
usermod -aG sudo agent
mkdir -p /home/agent/.ssh && cp ~/.ssh/authorized_keys /home/agent/.ssh/
chown -R agent:agent /home/agent/.ssh && chmod 600 /home/agent/.ssh/authorized_keys

# 3. 加固 SSH
sed -i 's/^#*PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
sed -i 's/^#*PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
systemctl restart ssh

# 4. 主机防火墙(UFW),与 Cloud Firewall 冗余,但是有效的安全兜底
ufw default deny incoming && ufw default allow outgoing
ufw allow OpenSSH && ufw allow 80/tcp && ufw allow 443/tcp
ufw --force enable

然后启用自动安全更新和 fail2ban 的默认配置:

dpkg-reconfigure -plow unattended-upgrades   # answer Yes
systemctl enable --now fail2ban

fail2ban 默认会在 10 分钟内 5 次 SSH 登录失败后封禁对应 IP。Cloud Firewall 已在边缘拦截了大部分攻击,fail2ban 则负责处理漏网之鱼(同事、配置有误的 CI runner,或者你自己)。

退出 root,以 agent 身份重新登录,后续操作均在该账户下进行。

第三步:安装 Docker

在 2026 年,Docker 是在 VPS 上运行 AI 智能体最简洁的方式。智能体保持隔离,依赖不会污染宿主机,更新只需一条 pull && up 命令。

# 以 agent 用户身份,通过 sudo 执行
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker agent
newgrp docker
docker run --rm hello-world

如果 hello-world 输出正常,Docker 即可使用。

第四步:用 Docker Compose 部署智能体

在服务器上创建 ~/agent/docker-compose.yml。以下示例针对 Hermes Agent,但结构对 OpenClaw、Open WebUI + LLM 服务商,或任何其他容器化智能体运行时同样适用。

services:
  agent:
    image: ghcr.io/your-runtime/agent:latest
    container_name: agent
    restart: unless-stopped
    env_file: .env
    volumes:
      - ./data:/data
      - ./skills:/skills
      - ./memory:/memory
    ports:
      - "127.0.0.1:8080:8080"   # web UI bound to localhost only

然后创建 ~/agent/.env

# 模型服务商(BYOK - 自带 API 密钥)
OPENAI_API_KEY=sk-...
# 或以下任一:
# ANTHROPIC_API_KEY=...
# OPENROUTER_API_KEY=...

# 消息网关
TELEGRAM_BOT_TOKEN=...
TELEGRAM_ALLOWED_USERS=12345678   # your Telegram user ID

# 持久化
DATA_DIR=/data
MEMORY_DIR=/memory

执行 chmod 600 .env 防止同机其他用户读取你的密钥,然后启动服务:

docker compose up -d
docker compose logs -f agent

restart: unless-stopped 策略确保智能体在服务器重启后自动恢复运行。如果你倾向于原生安装而非 Docker,等效方案是创建一个配置了 Restart=alwaysWantedBy=multi-user.targetsystemd 单元。

第五步:接入 Telegram 并测试

如果你选择了 Telegram 作为消息入口(大多数自托管用户的选择,因为 Bot API 免费且响应即时),测试流程很简单:

  1. 在 Telegram 上与 @BotFather 对话,运行 /newbot,将 token 保存到 .env
  2. @userinfobot 对话获取你的 Telegram 数字用户 ID,填入 TELEGRAM_ALLOWED_USERS
  3. 执行 docker compose restart agent
  4. 在 Telegram 中打开你的新机器人,发送"hello"。

几秒内你应该收到回复。如果没有,docker compose logs -f agent 通常能直接指出问题所在(token 缺失、用户 ID 错误、模型服务商返回 401)。

关于 Telegram 接入的深度教程(群组、话题、语音模式、故障排查),请参阅如何在 Telegram 上构建 AI 智能体

暗色主题聊天气泡的手机特写,绿色强调色,写实风格

第六步:备份与监控(最容易被跳过的部分)

两项低成本措施,在第一次出问题时就能证明其价值:

  • Hetzner 快照:在控制台中为服务器启用每日快照。约 €0.012/GB/月,40 GB 磁盘大约 €0.50/月。在每次执行 docker compose pull 前打一个"before-update"标签的快照。
  • 可用性监控:BetterStack 或 UptimeRobot 均有免费方案。每 5 分钟检测一次 https://your-domain/health(或 TCP 检查)。凌晨三点 Telegram 网关断连时,你能在午饭前收到通知,而不是吃午饭时才发现。

对于智能体自身的状态(记忆文件、技能、对话历史),添加一行 cron 任务,将挂载卷打包为 /var/backups/agent-$(date +%F).tar.gz 并轮转旧备份。每周用 rsync 将其同步到第二台便宜 VPS、S3 兼容存储桶,或你的本地电脑。

第七步:更新

每周,在快照已经做好的前提下执行:

cd ~/agent
docker compose pull
docker compose up -d
docker image prune -f

整个过程通常不到一分钟。如果新镜像有问题,从 Hetzner 控制台恢复快照即可——唯一会丢失的是快照到当前时刻之间的对话记录,这些数据存储在智能体的内存卷中。

迟早会遇到的问题

一份简短而诚实的清单:

  • Telegram 长轮询在网络抖动时断开。 大多数运行时会自动重连,但如果你的不会,可用性监控就派上用场了。
  • docker compose pull 带来了破坏性配置变更。 在生产环境中将镜像标签固定到具体版本,而非 :latest
  • 模型服务商触发限流,智能体停止响应且无明显报错。务必记录服务商返回的 HTTP 状态码,并优先选择提供用量控制台的服务商。
  • 磁盘被写满,因为某个技能向 /tmp 写入文件但没有轮转清理。du -sh /*docker system df 应该成为你调试时的肌肉记忆。
  • 添加新服务时忘记更新防火墙规则。 Cloud Firewall 和 UFW 两层都需要开放新端口,否则你会花 20 分钟调试来自正确地址的"连接被拒绝"问题。

以上这些都不是 Hetzner 独有的问题,而是自己运维任何服务都要付出的代价。

当 VPS 的账单逻辑不再成立

如果你读到这里,觉得上面的步骤很有趣——太好了,这正是 Hetzner 擅长的工作流。价格实惠、性能稳定、透明可控。

如果这些步骤听起来更像是"用周末换来的麻烦",那么对比的天平就会倾斜。托管服务用 €4/月和一个周日换来的是:Telegram 网关已内置、BYOK 对接你的服务商、持久化记忆卷、快照备份,以及"稳定在线"的承诺。我们的托管 vs 自托管指南详细梳理了完整的成本账,包括你的时间值多少钱。

如果你想走托管路线,立即注册 Hermify——30 分钟内即可在生产级基础设施上运行一个智能体,无需配置 Cloud Firewall,无需调试 fail2ban。如果你更愿意在 Hetzner 上自己动手,本指南已经帮你把路铺好了。

来源

运行你自己的 Hermes Agent

自带 API 密钥,连接 Telegram,60 秒内即可上线一个自我改进的 AI 智能体。

立即开始