在VPS上安全部署OpenClaw
在VPS上安装并加固OpenClaw,配置网关认证、TLS反向代理、Docker沙箱、防火墙加固和systemd隔离。每个步骤都包含验证命令。
OpenClaw是一个开源、自托管的AI助手,可连接消息应用(WhatsApp、Telegram、Discord、Slack、Signal)和AI模型提供商。它在你的服务器上运行Gateway(网关)进程,接收消息,使用工具执行代理动作,并发送响应。所有数据都保留在你的基础设施上。
本指南介绍如何在运行Ubuntu 24.04的VPS上进行安全优先的部署。你将加固操作系统、安装OpenClaw、配置网关认证、使用Nginx和TLS设置反向代理、修复Docker/UFW防火墙绕过问题、启用Docker sandboxing(Docker沙箱)、锁定工具策略,并将网关作为加固的systemd服务运行。
为什么VPS上的OpenClaw安全性很重要?
OpenClaw运行的AI代理可以在你的服务器上执行shell命令、读取文件和浏览网页。配置不当的实例会让攻击者获得同样的能力。这不是理论推测。
2026年初,研究人员发现超过42,000个OpenClaw实例暴露在公共互联网上。63%存在远程利用漏洞。CVE-2026-25253(CVSS 8.8)允许通过恶意链接窃取认证令牌实现一键远程代码执行。攻击者可以窃取网关令牌、通过WebSocket连接、禁用确认提示、逃逸Docker沙箱并执行任意命令。
修复已在版本2026.1.29中发布,但仅打补丁是不够的。安全需要层层防护:网络隔离、认证、TLS、沙箱和工具限制协同工作。缺少任何一层(例如有网关认证但没有防火墙)都会留下直接被攻破的路径。
开始之前需要准备什么?
| 需求 | 详情 |
|---|---|
| VPS | Ubuntu 24.04,4+ vCPU,至少8 GB RAM |
| 域名 | A记录指向你的VPS IP(例如openclaw.example.com) |
| SSH访问 | 已配置密钥认证 |
| AI提供商API密钥 | Anthropic、OpenAI或Google Gemini |
| Node.js | 22或更新版本 |
| Docker | Engine 20+,带Compose插件 |
如果你需要VPS配置或SSH密钥设置方面的帮助,请参阅Secure a Linux VPS。
安装OpenClaw之前如何加固VPS?
安装任何东西之前,先锁定操作系统。如果你已经按照Secure a Linux VPS和SSH Security Configuration完成了配置,跳到下一节。
创建专用用户
以root运行服务是不必要的风险。创建一个openclaw系统用户:
sudo useradd -r -m -s /bin/bash openclaw
这会创建一个带主目录的系统账户。OpenClaw将配置存储在~/.openclaw中,因此需要主目录。
配置UFW
在暴露任何服务之前安装并启用防火墙:
sudo apt update && sudo apt install -y ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp comment 'SSH'
sudo ufw allow 80/tcp comment 'HTTP'
sudo ufw allow 443/tcp comment 'HTTPS'
sudo ufw enable
验证规则:
sudo ufw status verbose
你应该看到三个允许的端口和默认拒绝入站流量的策略。端口18789(OpenClaw网关)故意不在列表中。网关只绑定到localhost,通过Nginx访问。
安装fail2ban
sudo apt update && sudo apt install -y fail2ban
sudo systemctl enable --now fail2ban
验证它正在运行:
sudo systemctl status fail2ban
输出应显示active (running)。fail2ban监控SSH日志并在多次登录失败后封禁IP。
如何在Ubuntu上安装OpenClaw?
OpenClaw支持两种安装方式:npm(直接安装)和Docker。两种方式都在下面介绍。选择其中一种。Docker推荐用于VPS部署,因为容器隔离可以在代理进程被攻破时限制影响范围。
选项A:Docker安装(推荐)
如果尚未安装Docker:
sudo apt install -y ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
将openclaw用户添加到docker组:
sudo usermod -aG docker openclaw
注意:Docker组成员资格等同于主机上的root访问权限。OpenClaw的Docker功能需要这一权限,但这意味着openclaw用户可以控制系统上的所有容器。下面的systemd加固和沙箱隔离限制了OpenClaw进程的实际能力。
切换到openclaw用户并设置OpenClaw:
sudo -u openclaw -i
克隆仓库并使用官方预构建镜像运行安装:
git clone https://github.com/openclaw/openclaw.git ~/openclaw-src
cd ~/openclaw-src
OPENCLAW_IMAGE=ghcr.io/openclaw/openclaw:latest ./docker-setup.sh
设置OPENCLAW_IMAGE会告诉脚本从GitHub Container Registry拉取预构建镜像,而不是从源码构建。脚本会运行onboarding(引导配置)并通过Docker Compose启动网关。
容器内的网关默认绑定到所有接口(lan模式)。这对Docker部署来说是正确的,因为Docker的端口映射需要访问容器内的网关。外部访问通过主机级别的DOCKER-USER iptables规则阻止(下文介绍)。
验证网关正在运行:
curl -fsS http://127.0.0.1:18789/healthz
200 OK响应确认网关已启动。/readyz端点确认它已准备好接受连接:
curl -fsS http://127.0.0.1:18789/readyz
选项B:npm安装
使用NodeSource安装Node.js 22:
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs
验证版本:
node --version
输出应显示v22.x.x或更新版本。
切换到openclaw用户并安装:
sudo -u openclaw -i
npm install -g openclaw@latest
运行引导配置:
openclaw onboard
绑定模式选择loopback。引导向导会生成网关认证令牌并将其存储在~/.openclaw/openclaw.json中。
启动网关:
openclaw gateway start
验证:
curl -fsS http://127.0.0.1:18789/healthz
验证网关绑定
检查网关的监听地址:
ss -tulpn | grep 18789
npm安装: 输出应显示127.0.0.1:18789,而不是0.0.0.0:18789。如果看到0.0.0.0,停止网关并在openclaw.json中将gateway.bind设为"loopback"。
Docker安装: 你会看到docker-proxy进程的0.0.0.0:18789。这是预期行为。Docker的端口映射在所有主机接口上发布端口,以便localhost流量能到达容器。DOCKER-USER iptables规则(在下面的防火墙部分介绍)在网络层阻止外部访问。
锁定文件权限
配置文件包含你的认证令牌和API密钥:
chmod 700 /home/openclaw/.openclaw
chmod 600 /home/openclaw/.openclaw/openclaw.json
验证:
ls -la /home/openclaw/.openclaw/openclaw.json
你应该看到-rw-------。npm安装时所有者是openclaw。Docker安装时所有者可能显示为uid 1000(容器内的node用户)。这是正常的,容器需要此权限来读取配置。
如何配置网关认证?
OpenClaw的网关默认要求认证。如果未配置令牌或密码,网关会拒绝WebSocket连接(fail-closed,即默认拒绝)。引导向导会自动生成令牌。
OpenClaw支持三种认证模式:
| 模式 | 工作原理 | 适用场景 |
|---|---|---|
token |
每个请求中携带共享bearer令牌 | 单用户VPS(推荐) |
password |
基于密码的认证 | 多设备场景 |
trusted-proxy |
将认证委托给反向代理 | 企业/SSO场景 |
设置强令牌
如果你想替换自动生成的令牌,生成一个新的:
openssl rand -base64 32
将其存储为环境变量,而不是硬编码在配置文件中。创建环境文件:
sudo mkdir -p /etc/openclaw
sudo tee /etc/openclaw/env > /dev/null << 'EOF'
OPENCLAW_GATEWAY_TOKEN=your-generated-token-here
EOF
sudo chmod 600 /etc/openclaw/env
sudo chown openclaw:openclaw /etc/openclaw/env
编辑~/.openclaw/openclaw.json来引用环境变量:
{
gateway: {
bind: "loopback", // use "loopback" for npm, keep default for Docker
port: 18789,
auth: {
mode: "token",
token: "${OPENCLAW_GATEWAY_TOKEN}"
}
}
}
OpenClaw在其JSON5配置中支持${VARIABLE}替换,因此令牌在启动时从环境变量读取。Docker安装时,在openclaw-src目录内的.env文件中设置OPENCLAW_GATEWAY_TOKEN变量。docker-setup.sh脚本会自动生成此文件。
重启网关并测试未认证的请求是否被拒绝:
curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:18789/healthz
健康检查端点不需要认证就返回200(它是健康检查)。要测试WebSocket端点的认证强制执行,检查网关日志:
systemd/npm安装:
journalctl -u openclaw-gateway --no-pager -n 20
Docker安装:
cd ~/openclaw-src && docker compose logs openclaw-gateway --tail 20
查找auth required或connection rejected条目以确认默认拒绝行为。
如何为OpenClaw设置Nginx TLS反向代理?
网关绑定到localhost。Nginx在前端终止TLS并将WebSocket连接代理到网关。这样你可以获得加密连接而不暴露网关端口。
关于Nginx反向代理的背景知识,参阅Nginx Reverse Proxy。关于Let's Encrypt的TLS设置,参阅Nginx SSL/TLS with Let's Encrypt。
安装Nginx和Certbot
sudo apt install -y nginx certbot python3-certbot-nginx
获取TLS证书
sudo certbot --nginx -d openclaw.example.com
将openclaw.example.com替换为你的实际域名。Certbot会配置自动续期。
配置反向代理
创建Nginx server block:
sudo tee /etc/nginx/sites-available/openclaw.conf > /dev/null << 'NGINX'
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name openclaw.example.com;
ssl_certificate /etc/letsencrypt/live/openclaw.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/openclaw.example.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
# Hide Nginx version
server_tokens off;
# WebSocket proxy to OpenClaw gateway
location / {
proxy_pass http://127.0.0.1:18789;
# WebSocket support
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# Overwrite X-Forwarded-For, do not append
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
# Timeouts for long-running agent sessions
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
}
}
server {
listen 80;
listen [::]:80;
server_name openclaw.example.com;
return 301 https://$host$request_uri;
}
NGINX
注意:proxy_set_header X-Forwarded-For $remote_addr使用的是$remote_addr(覆写),而不是$proxy_add_x_forwarded_for(追加)。这是有意为之。追加模式允许客户端在header中注入伪造IP。OpenClaw文档明确推荐使用覆写方式。
启用站点并测试配置:
sudo ln -s /etc/nginx/sites-available/openclaw.conf /etc/nginx/sites-enabled/
sudo nginx -t
输出应显示syntax is ok和test is successful。重新加载Nginx:
sudo systemctl reload nginx
配置OpenClaw信任代理
通过在~/.openclaw/openclaw.json中添加trustedProxies来让网关信任Nginx的转发header:
{
gateway: {
bind: "loopback", // use "loopback" for npm, keep default for Docker
port: 18789,
trustedProxies: ["127.0.0.1"],
auth: {
mode: "token",
token: "${OPENCLAW_GATEWAY_TOKEN}"
}
}
}
重启网关以应用更改。从你的本地机器(不是服务器)验证TLS是否正常工作:
curl -I https://openclaw.example.com/healthz
你应该收到通过HTTPS的200响应。更多Nginx安全加固内容,请参阅Nginx安全加固指南(即将发布)。
如何修复Docker和UFW防火墙绕过问题?
Docker直接操作iptables,完全绕过UFW。如果你使用Docker运行OpenClaw并发布了端口,即使UFW阻止了该端口,它也可以从互联网访问。这是Docker部署中最常见的配置错误之一。
关于此问题的完整解释,参阅Docker UFW Firewall Fix。
修复方法使用DOCKER-USER链,Docker在将流量转发到容器之前会先处理此链。
阻止所有外部访问Docker端口
sudo iptables -I DOCKER-USER -i eth0 -j DROP
这会丢弃来自外部接口(eth0)的所有流量,这些流量本会被Docker转发到容器。如果你的接口名不同,请调整(用ip link show检查)。
允许回环流量
同一主机上的Nginx需要通过localhost访问网关容器:
sudo iptables -I DOCKER-USER -i lo -j ACCEPT
允许已建立的连接
sudo iptables -I DOCKER-USER -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
持久化规则
sudo apt install -y iptables-persistent
sudo netfilter-persistent save
验证规则
sudo iptables -L DOCKER-USER -n -v
你应该看到回环和已建立连接的ACCEPT规则在eth0的DROP规则之上。顺序很重要:iptables从上到下处理规则。
从外部机器测试网关端口不可达:
nmap -p 18789 your-server-ip
端口18789应显示filtered或closed,而不是open。
如何为OpenClaw启用Docker sandboxing(Docker沙箱)?
Docker sandboxing(Docker沙箱)在隔离容器中运行代理工具执行。当代理运行shell命令或写入文件时,操作发生在一次性容器中,而不是在主机上。
在~/.openclaw/openclaw.json中添加沙箱配置:
{
agents: {
defaults: {
sandbox: {
mode: "all",
scope: "session",
workspaceAccess: "none",
docker: {
image: "openclaw-sandbox:bookworm-slim",
network: "none",
user: "1000:1000",
memory: "1g",
cpus: 1
}
}
}
}
}
各设置含义:
| 设置 | 值 | 效果 |
|---|---|---|
mode |
"all" |
每个会话都在沙箱中运行,无例外 |
scope |
"session" |
每个聊天会话获得独立容器 |
workspaceAccess |
"none" |
沙箱无法看到代理工作区 |
network |
"none" |
沙箱无网络访问(防止数据泄露) |
memory |
"1g" |
容器RAM上限1 GB |
cpus |
1 |
容器CPU上限1核 |
构建沙箱镜像:
cd ~/openclaw-src
scripts/sandbox-setup.sh
验证沙箱配置:
openclaw sandbox explain
Docker安装时,通过compose运行:
cd ~/openclaw-src && docker compose exec openclaw-gateway node dist/index.js sandbox explain
此命令输出生效的沙箱模式、作用域、工作区访问权限、工具策略和任何覆盖项。确认输出中显示mode: all和network: none。
如果你需要特定工具的网络访问(例如web_search),按代理单独授权,而不是修改全局默认值。参阅下面的工具策略部分。
OpenClaw默认阻止危险的bind mount来源:/var/run/docker.sock、/etc、/proc、/sys和/dev都被拒绝。不要用自定义bind mount重新暴露它们。如果沙箱容器需要访问主机数据,使用带有明确路径的只读挂载:
{
agents: {
defaults: {
sandbox: {
docker: {
binds: ["/home/openclaw/shared-data:/data:ro"]
}
}
}
}
}
:ro后缀确保容器可以读取数据但不能修改。
如何锁定OpenClaw工具策略?
工具策略控制代理可以使用哪些工具。沙箱有独立于代理级权限的工具过滤器。拒绝(deny)始终优先于允许(allow)。
默认拒绝策略
在~/.openclaw/openclaw.json中设置限制性默认值:
{
tools: {
deny: ["exec", "write", "edit", "browser"],
allow: ["read", "web_search"]
}
}
这默认阻止命令执行、文件写入、文件编辑和浏览器访问。代理仍然可以读取文件和搜索网页。
按代理配置
为需要更多权限的特定代理覆盖默认值。在agents.list下添加配置:
{
agents: {
list: [
{
name: "coding-agent",
tools: {
allow: ["exec", "read", "write", "edit"],
deny: ["browser"]
},
sandbox: {
mode: "all",
docker: {
network: "none"
}
}
},
{
name: "messaging-agent",
tools: {
allow: ["read", "web_search"],
deny: ["exec", "write", "edit", "browser"]
}
}
]
}
}
coding-agent可以执行命令,但只能在无网络的沙箱容器中执行。messaging-agent可以读取和搜索,但不能执行任何操作。
禁用elevated模式
Elevated模式(提权模式)允许代理直接在网关主机上运行命令,绕过沙箱。禁用它:
{
tools: {
elevated: {
enabled: false
}
}
}
如果保持elevated模式启用,任何能与代理聊天的用户都可能运行主机命令。在VPS上,这就是远程代码执行。
多用户DM隔离
如果多人会向你的OpenClaw实例发送消息,启用per-peer DM作用域。默认情况下,所有DM共享一个主会话。这意味着用户A可以看到用户B的对话上下文。
{
session: {
dmScope: "per-peer"
}
}
这让每个发送者拥有独立的会话,具有隔离的上下文和沙箱容器。
如何将OpenClaw作为加固的systemd服务运行?
在systemd下运行OpenClaw意味着它会在启动时自动运行、崩溃时自动重启,并通过加固指令获得进程隔离。
创建服务单元
Docker安装时,创建以下unit文件:
sudo tee /etc/systemd/system/openclaw-gateway.service > /dev/null << 'EOF'
[Unit]
Description=OpenClaw Gateway
After=network-online.target docker.service
Wants=network-online.target
Requires=docker.service
[Service]
Type=simple
User=openclaw
Group=openclaw
WorkingDirectory=/home/openclaw/openclaw-src
EnvironmentFile=/etc/openclaw/env
ExecStart=/usr/bin/docker compose up --no-log-prefix openclaw-gateway
ExecStop=/usr/bin/docker compose down
Restart=always
RestartSec=10
# Security hardening
NoNewPrivileges=yes
PrivateTmp=yes
ProtectSystem=strict
ProtectHome=read-only
ReadWritePaths=/home/openclaw/.openclaw
CapabilityBoundingSet=
ProtectKernelTunables=yes
ProtectKernelModules=yes
ProtectControlGroups=yes
RestrictSUIDSGID=yes
MemoryMax=4G
[Install]
WantedBy=multi-user.target
EOF
npm安装时,替换ExecStart和ExecStop行:
ExecStart=/usr/bin/openclaw gateway start --foreground
ExecStop=/usr/bin/openclaw gateway stop
并删除Requires=docker.service行。
各加固指令的作用:
| 指令 | 防护效果 |
|---|---|
NoNewPrivileges |
防止进程通过setuid/setgid获取额外权限 |
PrivateTmp |
给服务提供独立的/tmp,对其他进程不可见 |
ProtectSystem=strict |
将整个文件系统挂载为只读,除了明确的ReadWritePaths |
ProtectHome=read-only |
防止向任何主目录写入,除了允许的路径 |
CapabilityBoundingSet= |
删除所有Linux capabilities(空集) |
ProtectKernelTunables |
阻止写入/proc/sys、/sys |
ProtectKernelModules |
防止加载内核模块 |
MemoryMax=4G |
服务超过4 GB RAM时会被终止,防止主机OOM |
启用并启动
sudo systemctl daemon-reload
sudo systemctl enable --now openclaw-gateway
enable使其在启动时自动运行。--now立即启动。
验证它正在运行:
sudo systemctl status openclaw-gateway
输出应显示active (running)。检查日志中是否有错误:
journalctl -u openclaw-gateway -f --no-pager -n 50
如何验证完整部署的安全性?
部署后按照此清单逐项检查,确认每层防护都在工作。
1. 运行OpenClaw内置安全审计
npm安装:
sudo -u openclaw openclaw security audit --deep
Docker安装:
cd ~/openclaw-src && docker compose exec openclaw-gateway node dist/index.js security audit --deep
这会标记常见的配置错误:未认证的网络暴露、提权工具权限、文件权限问题。在继续之前修复所有警告。
2. 确认网关绑定
ss -tulpn | grep 18789
npm安装: 预期127.0.0.1:18789。不应是0.0.0.0:18789。
Docker安装: 预期docker-proxy的0.0.0.0:18789。这是正常的。外部访问被DOCKER-USER iptables规则阻止。
3. 外部端口扫描
从你的本地机器(不是服务器):
nmap -p 18789 your-server-ip
预期结果:filtered或closed。
4. 验证TLS
curl -I https://openclaw.example.com/healthz
预期:通过HTTPS收到200,证书有效。
5. 测试认证强制执行
curl -s -o /dev/null -w "%{http_code}" https://openclaw.example.com/
网关应该要求非健康检查端点进行认证。
6. 检查沙箱隔离
npm安装:
sudo -u openclaw openclaw sandbox explain
Docker安装:
cd ~/openclaw-src && docker compose exec openclaw-gateway node dist/index.js sandbox explain
确认mode: all、network: none,且没有elevated覆盖。
7. 验证文件权限
ls -la /home/openclaw/.openclaw/openclaw.json
ls -la /etc/openclaw/env
两者都应显示600权限。env文件的所有者是openclaw。Docker安装时,openclaw.json的所有者可能是uid 1000(容器的node用户)。
8. 检查systemd加固
systemd-analyze security openclaw-gateway
这会对服务的安全属性评分。目标是5.0左右或更低(越低越安全)。基于Docker的服务通常在5.0-5.5之间,因为Docker需要访问命名空间和设备接口。上面的加固指令将评分从默认的约9.6降到约5.2。
9. 验证UFW和DOCKER-USER规则
sudo ufw status
sudo iptables -L DOCKER-USER -n -v
UFW应只显示端口22、80和443。DOCKER-USER链应丢弃外部流量。
10. 检查暴露的服务
ss -tulpn
应只出现SSH(22)、Nginx(80、443)和OpenClaw(npm为127.0.0.1:18789,Docker为通过docker-proxy的0.0.0.0:18789)。
如何保持OpenClaw更新和备份?
版本隐藏
隐藏网关响应中的OpenClaw版本。版本泄露帮助攻击者针对已知漏洞。在~/.openclaw/openclaw.json中:
{
gateway: {
exposeVersion: false
}
}
结合Nginx配置中已有的server_tokens off;指令,这可以防止对反向代理和应用程序的指纹识别。
更新
OpenClaw发布频繁。检查当前版本:
openclaw --version
Docker安装:
cd ~/openclaw-src && docker compose exec openclaw-gateway node dist/index.js --version
更新Docker安装:
cd ~/openclaw-src
git pull
docker compose pull
docker compose up -d openclaw-gateway
更新npm安装:
npm update -g openclaw
更新后,重启网关并重新运行安全审计:
sudo systemctl restart openclaw-gateway
npm:
sudo -u openclaw openclaw security audit
Docker:
cd ~/openclaw-src && docker compose exec openclaw-gateway node dist/index.js security audit
升级前阅读发布说明。配置格式的破坏性变更确实会发生。版本2026.3.7在同时存在token和password时引入了必需的gateway.auth.mode字段。升级后缺少此字段会将你锁在网关外面。
备份
备份配置目录:
sudo tar czf /root/openclaw-backup-$(date +%Y%m%d).tar.gz /home/openclaw/.openclaw
将备份存储在服务器之外。配置目录包含你的认证令牌、代理配置和对话状态。像保护生产配置一样保护备份:用gpg加密或存储在加密卷中。
日志管理
实时查看日志:
journalctl -u openclaw-gateway -f
OpenClaw日志可能包含对话片段。设置日志保留时间以限制暴露:
sudo tee /etc/systemd/journald.conf.d/openclaw.conf > /dev/null << 'EOF'
[Journal]
MaxRetentionSec=7d
MaxFileSec=1d
EOF
sudo systemctl restart systemd-journald
遇到问题?
| 症状 | 可能原因 | 修复方法 |
|---|---|---|
| 网关拒绝启动 | 端口18789已被占用 | ss -tulpn | grep 18789查找冲突进程 |
| WebSocket连接通过Nginx失败 | 缺少Upgrade和Connection header |
检查Nginx配置中的proxy_set_header指令 |
| 沙箱容器启动失败 | Docker socket权限 | 确保openclaw用户在docker组中并重新登录 |
openclaw security audit显示警告 |
更新后配置漂移 | 查看审计输出并应用推荐修复 |
| 网关可从外部IP访问 | Docker/UFW绕过 | 按上文添加DOCKER-USER iptables规则 |
| TLS证书错误 | Certbot续期失败 | 运行sudo certbot renew --dry-run诊断 |
| VPS上的OOM kill | systemd unit缺少MemoryMax |
在[Service]部分添加MemoryMax=4G |
Copyright 2026 Virtua.Cloud. All rights reserved.