信息层级:【有据可查】= 附官方文档或可信来源链接;【社区共识】= 社区用户普遍经验,未经官方确认;【待考察/推测】= 推测或暂未能核实,请谨慎对待。
🧭 本篇讲 VPS 作为正常服务器的用途:部署自建网关(New API 部署与使用:渠道、令牌、额度和备份)、跑 OpenClaw 这类常驻 Agent(OpenClaw 入门:独立环境、配置与安全边界)、托管网站后端、开发测试环境。不涉及用 VPS 搭建跨境代理或规避地区限制。
1. VPS 是什么?
【社区共识】VPS(Virtual Private Server,虚拟专用服务器)= 云厂商机房里一台分给你的虚拟电脑,有独立公网 IP、可 SSH 登录、按月/按量付费。
1.1 你真的需要 VPS 吗?
| 需求 | 更简单的替代 |
|---|---|
| 放个静态网站/博客 | 静态托管(域名与静态网站:发布、DNS 与 HTTPS),免服务器 |
| 只给自己用的 New API | 本机运行 + 不暴露公网 |
| 让 Agent 跑长任务 | Codex Web / 官方云 Agent(Codex 云端任务与 ChatGPT:从需求到代码审查) |
| 7×24 常驻机器人、团队内网关 | ✅ VPS 合适 |
2. 选购要点【社区共识】
| 维度 | 怎么看 |
|---|---|
| 地区 | 离用户近、符合数据合规要求;中国大陆机房对外提供网站需 ICP 备案(见 域名与静态网站:发布、DNS 与 HTTPS) |
| 配置 | 网关/机器人类入门:1–2 核、2–4GB 内存通常够用(Docker + PostgreSQL 建议 ≥2GB)【待考察:视负载】 |
| 系统 | 选 Ubuntu LTS / Debian 稳定版,教程最多 |
| 计费 | 按月 vs 按量;注意流量超额计费 |
| 快照/备份 | 是否支持、是否另收费 |
| 厂商条款 | 允许的用途(多数禁止滥发邮件、挖矿等) |
3. 拿到 VPS 后的第一小时:安全加固
以下以 Ubuntu/Debian 为例【有据可查:Ubuntu Server 文档、UFW】:
# 1. 更新
sudo apt update && sudo apt upgrade -y
# 2. 新建用户
sudo adduser alice
sudo usermod -aG sudo alice
# 3. 在【你自己的电脑】上生成密钥并上传
ssh-keygen -t ed25519
ssh-copy-id alice@你的VPS_IP
# 4. 确认密钥能登录后,再编辑 /etc/ssh/sshd_config:
# PasswordAuthentication no
# PermitRootLogin no
# 保存配置后先检查;若有错误或退出码非 0,先修正,不要继续重启
sudo sshd -t
# 仅检查通过后执行;部分发行版服务名为 sshd
sudo systemctl restart ssh
# 保持当前连接;在自己电脑的第二窗口重新用密钥登录 alice,再验证 sudo
# 5. 防火墙(先放行 SSH,再启用!)
sudo ufw allow OpenSSH
sudo ufw allow 80,443/tcp
sudo ufw enable
sudo ufw status
# 6. 自动安全更新
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure --priority=low unattended-upgrades
⚠️ 最常见的自锁事故:没确认密钥可用就关了密码登录,或启用防火墙前没放行 SSH。保持一个已登录的终端不关,另开一个窗口测试新配置。
【社区共识】也要检查云厂商控制台的安全组——它和系统内防火墙是两层,两边都要放行。
4. 部署服务的原则
| 原则 | 例子 |
|---|---|
| 管理界面不直接暴露公网 | New API 后台、OpenClaw 网关(OpenClaw 入门:独立环境、配置与安全边界 建议 gateway.bind: "loopback")、数据库端口 |
| 用 SSH 隧道访问内部服务 | ssh -L 3000:127.0.0.1:3000 alice@VPS 然后本机打开 localhost:3000 |
| 对外服务走 HTTPS 反代 | Caddy 可自动申请 Let's Encrypt 证书【有据可查:Caddy Automatic HTTPS】 |
| Docker 端口映射注意 | 【有据可查:Docker 官方】发布端口的流量可能绕过 UFW 常规规则;只需本机访问时映射为 127.0.0.1:3000:3000,并核对实际绑定与当前版本 |
秘密信息放 .env 并限制权限 |
chmod 600 .env |
5. 日常运维
| 频率 | 做什么 |
|---|---|
| 每周 | sudo apt update && sudo apt upgrade(若未开自动更新);看磁盘 df -h |
| 每月 | 检查登录日志 last、journalctl -u ssh;更新 Docker 镜像 |
| 每次大改前 | 打快照 |
| 定期 | 备份数据库到另一个地方(不要只存同一台 VPS) |
6. 让 Agent 帮你运维?
AI Agent 下载与安装:从第一个工具开始的思路同样适用:"先装好 Agent,再让 Agent 帮你配置"。但请注意:
- 在 VPS 上运行 Agent 时,使用沙箱或审批模式,不要开 YOLO(见 Codex 本地使用:安装、权限、项目规则与排错、Claude Code 使用:安装、权限与项目工作流、ZCode 使用:连接模型、执行模式与目标任务、Cursor 使用:项目规则、执行模式与自带 Key、Grok Build 使用:安装、权限、沙箱与目标任务、WorkBuddy 使用:工作空间、文档任务与模型设置、OpenClaw 入门:独立环境、配置与安全边界、Qoder 使用:IDE、CLI、权限与自定义模型);
- 不要把 root 权限、生产数据库密码直接交给 Agent;
- 让 Agent 先输出计划,你确认后再执行。
7. 本篇无法核实/需谨慎的点
- 不同负载下的最低配置需求。
- 各云厂商安全组/快照的具体操作界面。
- Docker 与 UFW 交互的细节因版本与配置而异。
小白练习:把本文流程逐项走通
练习目标:确认登录可恢复,再逐步收紧访问权限。
上文已介绍概念、配置和操作示例。下面侧重第一次实际操作时的顺序、检查点和结果核对;需要查具体参数时回到对应小节。命令逐条输入,看到上一条的结果后再继续。
-
先在云控制台确认公网 IP、SSH 端口和救援登录入口,再保存初始登录方式。
-
在自己的电脑准备 SSH 密钥;已存在的密钥不要覆盖。上传公钥后,从第二个终端测试普通用户登录与管理员权限。
-
保持原有连接窗口打开。更改 SSH 配置前备份文件,更改后先检查配置语法,再按系统文档 reload。
-
从第二个窗口重新测试登录;确认密钥登录可用后,再关闭密码与 root 直登。
-
防火墙先放行真实 SSH 端口,核对云安全组,再启用规则。非 22 端口不要照抄 OpenSSH 预设。
-
开网页服务后分别检查应用回环端口、HTTP 或 HTTPS 入口与备份;每次只调整一层,保留故障回退路径。
SSH 防止锁在门外:按顺序验收
【操作补充;配置检查有官方依据】第一,保留已经连上的终端,并确认云控制台的恢复入口可用;按原步骤创建普通用户、加入 sudo、生成并上传密钥。在自己的第二个终端先以该普通用户密钥登录,并验证 sudo 可用。
第二,备份要修改的 SSH 配置,再编辑禁用密码登录与 root 直登的设置。Ubuntu 默认还会读取 /etc/ssh/sshd_config.d/*.conf,较早取得的值可能优先,不能仅凭主文件里写了 no 就断言已经生效。保存后在服务器运行 sudo sshd -t;它检查语法与主机密钥,不会证明你能登录。报错时先修正。
第三,检查通过后按原步骤重启服务,保持旧终端,再从自己的第二窗口建立一次新的普通用户密钥连接并验证 sudo。随后按原顺序先放行实际 SSH 端口,再启用防火墙,并再次建立新连接验证;实际 SSH 端口不是 22 时,OpenSSH 预设未必适用。
【核对边界】第二窗口验证是防锁操作建议;sshd -t 和配置片段的优先规则已由 Ubuntu 官方文档确认。云安全组、系统防火墙和 Docker 端口发布仍要分别检查。
核对来源:Ubuntu 官方:OpenSSH server · Configure OpenSSH;OpenSSH 官方:sshd(8) 的 -t 与 -T;Docker 官方:Port publishing and mapping;Docker 官方:Packet filtering and firewalls · Docker and ufw。
