$6/月 AI 大脑:
Hetzner CPX11 VPS 指南
/** 一个 24/7 云端 Agent,成本比快餐还便宜。 */
廉价 Linux VPS 配合小型模型(4 位 Llama 3 8B)完全可以处理 Telegram/WhatsApp 消息回复、每日订阅汇总和网络爬取。无需 $1000 GPU。
1. 创建 Hetzner 服务器
- 创建 Hetzner Cloud 账号。
- 新建项目,选择新建服务器。
- 位置:选择最近的数据中心。
- 镜像:Ubuntu 24.04 LTS。
- 类型:共享 vCPU,CPX11(2 vCPU,2GB RAM,40GB 硬盘)。
- 添加 SSH 密钥,点击创建。
2. 关键:创建 Swap 空间
2GB RAM 不足以加载 4GB+ 的 LLM,必须创建 Swap 文件。
3. 通过 Docker 部署 OpenClaw
使用 Docker Compose 在纯 CPU 模式下运行 OpenClaw 和 Ollama。
CPU 优化秘籍
选哪档 Hetzner,以及它到底给你什么
Hetzner 便宜的共享 vCPU 套餐没有 GPU,所以 VPS 就是一台 CPU 推理机。这对编排和小模型没问题,对其他场景则很难受。选配置时先看内存,因为装不下的模型会开始交换,而那个吞吐差距一点也不细微。
| 套餐档位 | 内存 | 现实用途 |
|---|---|---|
| CX22(2 vCPU) | 4 GB | 跑网关、通道和技能,模型放在别处。1B–3B 装得下但很慢。 |
| CX32(4 vCPU) | 8 GB | 本地跑 3B 模型,还留得下网关和一个数据库。自托管 Agent 常见的甜点位。 |
| CX42(8 vCPU) | 16 GB | CPU 上跑 7B–8B。能跑,但每秒 token 数是个位数;适合批处理,不适合聊天。 |
| 独享 vCPU | 不定 | 只有在共享 vCPU 上确实遇到 steal time 时才值得。先测再花钱。 |
共享 vCPU 套餐上的 CPU 推理,大约比同一模型在 Apple Silicon 上慢一个数量级,而且共享套餐还可能被邻居抢占产生 steal time。如果你想让本地模型有交互感,VPS 就是错的形态——用 VPS 跑常开的网关,让它去调用跑在你自己硬件上的模型,或者调用托管 API。
开服务器
按顺序做。先创建非特权用户再加固 SSH,是因为万一把自己锁在外面还能通过 Hetzner 的网页控制台救回来——但不用救显然更省事。
# On your laptop — generate a key if you do not already have one: ssh-keygen -t ed25519 -C "openclaw-vps" # Paste the PUBLIC key (~/.ssh/id_ed25519.pub) into Hetzner Cloud # when creating the server. Never upload the private key anywhere.
公网服务器上的密码登录,在 IP 上线几分钟内就会被攻击。一开始就用密钥;私钥永远不要离开你的笔记本。
ssh root@<server-ip> apt update && apt full-upgrade -y apt install -y curl git ufw fail2ban unattended-upgrades dpkg-reconfigure --priority=low unattended-upgrades
unattended-upgrades 在 VPS 上比在家里更重要:这台机器永久暴露在公网上,而你不会一直盯着它。
adduser --disabled-password --gecos "" deploy usermod -aG sudo deploy rsync --archive --chown=deploy:deploy ~/.ssh /home/deploy/ # verify you can log in as deploy in a SECOND terminal # before you close this one: # ssh deploy@<server-ip>
开第二个终端确认新用户能登录,再关掉 root 会话。这一步就是大家会跳过、然后后悔的那一步。
curl -fsSL https://openclaw.ai/install.sh | bash openclaw --version openclaw doctor
用 deploy 用户装,不要用 root。这个服务不需要 root,给了它 root 就等于把一个漏洞变成整台机器沦陷。
在暴露任何东西之前先加固
一个自托管 Agent 持有你各种账号的凭据,往往还有连到其他机器的 shell 权限。它比普通的业余 VPS 是更高价值的目标,所以这一节请当作必做而不是可选。
sudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config sudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config sudo sshd -t && sudo systemctl reload ssh
sshd -t 会在你 reload 之前校验配置。跳过这一步,是把自己锁在远程机器外面的经典方式。
sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow OpenSSH sudo ufw enable sudo ufw status verbose # Note what is NOT here: port 18789 is never opened.
这里最重要的是缺席的那一行:网关端口从头到尾没有对公网开放。一个公网可达的 Agent 端点,就是一个背后挂着你全部凭据的远程代码执行面。
# Bind the gateway to loopback only. openclaw config set gateway.bind 127.0.0.1 openclaw config set gateway.port 18789 # Reach it from your laptop over an SSH tunnel instead: # ssh -N -L 18789:127.0.0.1:18789 deploy@<server-ip> # then open http://127.0.0.1:18789 locally.
SSH 隧道让你在笔记本上打开 Web UI,不需要暴露端口,也不需要再多加固一个服务。如果确实需要一个公网 HTTPS 端点接 webhook,用带鉴权的隧道,而不是直接开端口。
sudo systemctl enable --now fail2ban sudo fail2ban-client status sshd # and confirm the firewall survived a reboot: sudo reboot # ... then: sudo ufw status
只活到下次重启的规则不算规则。重启再复查一遍,然后才算这台机器做完了。
什么时候 VPS 是错的选择
- ✗你希望本地模型跑得快。没有 GPU 的话,任何档位都做不到。
- ✗工作负载敏感,而你并不接受数据放在别人的硬件上。
- ✗你本来就有一台一直开着的机器。相比每月账单,家里的 Mac Mini 或树莓派在电费上几乎不增加成本。
- ✗你只是偶尔需要 GPU。那就按小时租 GPU 跑那些任务,而不是每月为一台做不了这件事的 CPU 机器付钱。