一、前置准备
- 已部署好的 Proxmox VE (PVE) 节点(本文以 PVE 8.x 为例)
- Ubuntu 24.04.4 Desktop ISO 镜像(已上传至 PVE
local存储或者在线下载)
二、在 PVE 中创建 Ubuntu 24.04 虚拟机
1. 新建虚拟机(常规页)
- 登录 PVE 管理界面,点击「创建虚拟机」
- 常规 标签页:
- 节点:选择你的目标 PVE 节点(示例:
www) - VM ID:自定义(示例:
104) - 名称:自定义(示例:
OpenClaw) - 资源池:留空或按需选择
- 节点:选择你的目标 PVE 节点(示例:
- 点击「下一步」


2. 操作系统配置
- 操作系统 标签页:
- 选择「使用 CD/DVD 光盘镜像文件 (ISO)」
- 存储:选择存放 ISO 的存储(示例:
local) - ISO 镜像:选择
ubuntu-24.04.4-desktop-amd64.iso - 客户机操作系统:类别选
Linux,版本选6.x - 2.6 Kernel
- 点击「下一步」

3. 系统配置
- 系统 标签页:
- 显卡:
默认 - 机型:
默认 (i440fx) - BIOS:
默认 (SeaBIOS) - SCSI 控制器:
VirtIO SCSI single(性能最优) - 建议勾选「Qemu 代理」(方便后续 PVE 管理)
- 不勾选「添加 TPM」
- 显卡:
- 点击「下一步」
4. 磁盘配置
- 磁盘 标签页:
- 总线/设备:
SCSI - SCSI 控制器:
VirtIO SCSI single - 存储:选择目标存储(示例:
local) - 磁盘大小:推荐 32GiB 以上(满足系统+编译需求)
- 格式:
QEMU 映像格式 (qcow2)(节省空间) - 缓存:
默认 (无缓存) - 勾选「IO thread」(提升磁盘性能)
- 总线/设备:
- 点击「下一步」
5. CPU 配置
- CPU 标签页:
- 插槽:
1 - 核心:推荐 4 核(加快 OpenClaw 编译速度)
- 类别:
x86-64-v2-AES(兼容性与性能平衡)
- 插槽:
- 点击「下一步」

6. 内存配置
- 内存 标签页:
- 内存 (MiB):推荐 4096 MiB (4GB) 以上
- 点击「下一步」

7. 网络配置
- 网络 标签页:
- 桥接:
vmbr0(默认网桥) - 模型:
VirtIO (半虚拟化)(网络性能最优) - VLAN Tag:
no VLAN - MAC 地址:
auto - 勾选「防火墙」(按需)
- 桥接:
- 点击「下一步」

8. 确认创建
- 核对所有配置信息
- 点击「完成」,等待虚拟机创建完成
三、安装 Ubuntu 24.04 桌面版
1. 启动虚拟机并开始安装
- 选中新建的虚拟机,点击「启动」,打开控制台
- 启动后进入 Ubuntu 欢迎界面:
- 语言:选择「中文(简体)」→ 点击「下一步」

- 可访问性:直接点击「下一步」

- 键盘布局:选择「汉语」→ 点击「下一步」

- 连接到互联网:选择「使用有线连接」→ 点击「下一步」

- 更新可用:选择「跳过」(避免安装过程卡顿)→ 点击「下一步」

- 试用或安装:选择「安装 Ubuntu」→ 点击「下一步」

- 安装类型:选择「交互式安装」→ 点击「下一步」

- 应用程序:选择「默认集合」→ 点击「下一步」

- 专有软件:两个选项均不勾选 → 点击「下一步」

- 语言:选择「中文(简体)」→ 点击「下一步」
2. 磁盘分区与账户设置
- 安装类型:选择「擦除磁盘并安装 Ubuntu」→ 点击「下一步」

- 时区选择:在地图上点击中国区域,选择「Shanghai (Shanghai, China)」→ 点击「下一步」

- 设置账户:
- 您的姓名:自定义(示例:
crdz) - 电脑主机名:自定义(示例:
crdz) - 用户名:自定义(示例:
crdz,建议小写英文) - 密码:设置易记密码(后续
sudo会频繁使用) - 勾选「登录时需要密码」,不勾选「使用活动目录」

- 您的姓名:自定义(示例:
- 点击「下一步」,开始系统安装

3. 完成安装并重启
- 等待文件复制与配置完成(约 5–10 分钟)
- 安装完成后,点击「现在重启」

- 重启后,输入用户名和密码登录 Ubuntu 桌面

四、Ubuntu 系统初始化配置
1. 更新系统与安装基础工具
打开终端(快捷键 Ctrl+Alt+T),执行以下命令:
直接开启root用户,反正是虚拟机,自己决定打不打开,不打开有各种权限问题
# 执行命令设置 root 密码,按提示输入两次新密码
sudo passwd root
# 编辑 SSH 配置文件(查找可以用Ctrl+W,这是快捷键)
sudo nano /etc/ssh/sshd_config
# 允许 root 登录,去掉前面的符号,删除prohibit-password并修改为yes
PermitRootLogin yes
# 去掉前面的符号
PasswordAuthentication yes
# 更新软件源
sudo apt update && sudo apt upgrade -y
# 安装 QEMU 代理(PVE 管理必备)
sudo apt install -y qemu-guest-agent
sudo systemctl enable --now qemu-guest-agent
2. 安装 OpenClaw 编译依赖
# 安装编译所需依赖库
sudo apt install -y git cmake g++ libsdl2-dev libsdl2-mixer-dev libpng-dev libzip-dev
五、编译与安装 OpenClaw
1. 拉取 OpenClaw 源码
# 克隆官方仓库
git clone https://github.com/OpenClaw/OpenClaw.git
cd OpenClaw
2. 编译与安装
# 创建编译目录
mkdir build && cd build
# 生成构建文件
cmake ..
# 编译(使用所有 CPU 核心加速)
make -j$(nproc)
# 安装到系统
sudo make install
3. 准备资源文件
OpenClaw 仅提供引擎,需要原版资源才能运行:
- 将
data.pak和music.pak复制到 Ubuntu 虚拟机(可通过 SCP/共享文件夹传输) - 创建资源目录并放入文件:
mkdir -p ~/.local/share/openclaw/data # 假设资源文件在 ~/Downloads 目录下 cp ~/Downloads/{data.pak,music.pak} ~/.local/share/openclaw/data/
六、运行 OpenClaw
在终端中执行:
openclaw
即可启动 OpenClaw ,享受经典复古玩法!
七、使用kejilion的脚本来安装OpenClaw
1、开启Ubuntu的ssh
安装 OpenSSH 服务(若未安装)
打开 Ubuntu 终端(Ctrl+Alt+T),执行:
sudo apt update
sudo apt install -y openssh-server # 安装 SSH 服务
sudo systemctl enable ssh # 设置开机自启
sudo systemctl start ssh # 启动 SSH 服务
修改 SSH 配置文件(核心步骤)
编辑 SSH 主配置文件 sshd_config:
sudo nano /etc/ssh/sshd_config
在文件中找到/修改以下内容(按 Ctrl+W 可搜索关键词):
- 找到
#Port 22这一行,删除开头的#,并把22改为333(最终为Port 333); - 确保
PermitRootLogin设为no(禁止 root 直接登录,保持安全); - 确保
PasswordAuthentication设为yes(允许密码登录,新手友好)。
修改后按 Ctrl+O 保存,Ctrl+X 退出 nano 编辑器。
配置防火墙(允许 333 端口)
Ubuntu 24.04 默认使用 ufw 防火墙,需放行 333 端口:
sudo ufw allow 333/tcp # 放行 333 端口的 TCP 流量
sudo ufw reload # 重载防火墙规则
或者关闭防火墙,因为不需要
彻底关闭 Ubuntu 系统的 UFW 防火墙(测试/内网环境推荐),以下是永久生效的操作步骤:
1. 临时关闭 + 禁止开机自启(核心命令)
打开 Ubuntu 终端,执行以下命令:
# 1. 立即关闭防火墙
sudo ufw disable
# 2. 禁止防火墙开机自动启动(关键:确保重启后也关闭)
sudo systemctl disable ufw
# 3. 验证防火墙状态(确认已关闭)
sudo ufw status
# 输出 "Status: inactive" 即为关闭成功
#执行这两条命令(核心!)
systemctl daemon-reload
systemctl restart ssh.socket
systemctl restart ssh
2. 额外验证(可选)
确认防火墙服务已停止且不会自启:
# 检查服务状态
sudo systemctl status ufw
# 输出中会显示:
# ● ufw.service - Uncomplicated firewall
# Loaded: loaded (/lib/systemd/system/ufw.service; disabled; preset: enabled)
# Active: inactive (dead) # 已停止
# 检查 SSH 服务状态(确认无报错)
sudo systemctl status ssh
# 检查 333 端口是否监听
ss -tulpn | grep 333
若输出包含 LISTEN 且端口为 333,说明配置成功。
二、PVE 侧额外配置(关键!)
因为 Ubuntu 运行在 PVE 虚拟机中,需确保 PVE 未拦截 333 端口:
- 登录 PVE 管理界面,找到该 Ubuntu 虚拟机;
- 进入「选项」→「防火墙」,若启用了防火墙,需添加规则:
- 方向:入站;
- 协议:TCP;
- 端口:333;
- 动作:接受。
三、远程连接测试
使用 SSH 客户端(如 Xshell、Putty、终端)连接:
# 格式:ssh 用户名@虚拟机IP -p 端口
ssh crdz@192.168.1.100 -p 333
输入你的 Ubuntu 密码,能成功登录即表示配置完成。
使用脚本安装OpenClaw
bash <(curl -sL kejilion.sh)
选择11-114,然后选1安装

我理解这是默认情况下的个人使用,共享/多用户使用需要锁定。继续?选择y
选择快速设置
选择模型,我的是阿里的Coding Plan所以我选择的是Qwen
如果你是使用token的用户,那么你就选择自定义选项,填写URL、Token、和模型就可以了,Coding Plan不能获取所有模型会失败,所以我没选择
打开网页在网页上打开下面这个地址进行授权
认证成功
手动输入使用的模型,我用的是qwen3.5-plus
快速接入聊天工具,比如TG、飞书等,我选择跳过-Skip for now
设置搜索工具,继续跳过

现在设置skill技能,继续跳过
开启挂钩?按空格变绿,然后跳过
完成后一直选择0,退出脚本
现在这样核心是装好了,但是网关还需要安装并设置开机启动
先安装 Gateway 服务(root 权限下)
# 以 root 身份安装网关服务(解决 disabled 问题)
openclaw gateway install
启动 Gateway 服务并设为开机启动(root 下执行)
# 1. 重新加载 systemd 配置(让新安装的服务生效)
systemctl --user daemon-reload
# 2. 启动网关服务
systemctl --user start openclaw-gateway.service
# 3. 设为开机自启(避免每次重启都要手动启动)
systemctl --user enable openclaw-gateway.service
输入openclaw gateway配对网关
在Ubuntu的流浏览器输入地址+token配对一下
token用鼠标往上翻就可以看到

这就完成了一大半了,剩下的就是手动修改模型了。
在FinalShell输入命令临时给访问Root目录的权限
# 递归修改 /root 目录及其所有子目录、文件的权限为 755
sudo chmod -R 755 /root

修改.openclaw文件夹里面的openclaw.json文件,把模型名称和URL修改成Coding Plan的。URL:https://coding.dashscope.aliyuncs.com/v1


如果碰到权限问题,那么最简单的方式就是直接清空openclaw.json文件,然后把定义好的内容复制获取就完事了。
清空文件(在当前终端执行):
/root/.openclaw/openclaw.json
打开空文件:
nano /root/.openclaw/openclaw.json
然后复制配置文件的内容:
{
"meta": {
"lastTouchedVersion": "2026.3.11",
"lastTouchedAt": "2026-03-13T06:30:44.604Z"
},
"wizard": {
"lastRunAt": "2026-03-13T06:30:44.557Z",
"lastRunVersion": "2026.3.11",
"lastRunCommand": "doctor",
"lastRunMode": "local"
},
"models": {
"mode": "merge",
"providers": {
"qwen-coder": {
"baseUrl": "https://coding.dashscope.aliyuncs.com/v1",
"apiKey": "你的阿里云sk开头API Key",
"api": "openai-completions",
"models": [
{
"id": "qwen3.5-plus",
"name": "Qwen 3.5 Plus",
"api": "openai-completions",
"reasoning": false,
"input": [
"text"
],
"cost": {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
},
"contextWindow": 128000,
"maxTokens": 8192
},
{
"id": "qwen3-coder-next",
"name": "Qwen3 Coder Next",
"api": "openai-completions",
"reasoning": false,
"input": [
"text"
],
"cost": {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
},
"contextWindow": 200000,
"maxTokens": 8192
},
{
"id": "qwen3-coder-plus",
"name": "Qwen3 Coder Plus",
"api": "openai-completions",
"reasoning": false,
"input": [
"text"
],
"cost": {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
},
"contextWindow": 200000,
"maxTokens": 8192
}
]
}
}
},
"agents": {
"defaults": {
"model": {
"primary": "qwen-coder/qwen3.5-plus"
},
"models": {
"qwen-coder/qwen3.5-plus": {},
"qwen-coder/qwen3-coder-next": {},
"qwen-coder/qwen3-coder-plus": {}
},
"workspace": "/root/.openclaw/workspace",
"compaction": {
"mode": "safeguard"
},
"maxConcurrent": 4,
"subagents": {
"maxConcurrent": 8
}
}
},
"tools": {
"profile": "full"
},
"messages": {
"ackReactionScope": "group-mentions"
},
"commands": {
"native": "auto",
"nativeSkills": "auto",
"restart": true,
"ownerDisplay": "raw"
},
"session": {
"dmScope": "per-channel-peer",
"resetTriggers": [
"/new",
"/reset"
],
"reset": {
"mode": "idle",
"idleMinutes": 10080
},
"resetByType": {
"direct": {
"mode": "idle",
"idleMinutes": 10080
},
"group": {
"mode": "idle",
"idleMinutes": 120
},
"thread": {
"mode": "idle",
"idleMinutes": 1440
}
}
},
"channels": {
"telegram": {
"enabled": true,
"dmPolicy": "pairing",
"botToken": "8768314656:AAFOPf8lXJAyumFZoUKKorz6eH7-wHLHzaY",
"groupPolicy": "allowlist",
"streaming": "partial"
}
},
"gateway": {
"port": 18789,
"mode": "local",
"bind": "lan",
"controlUi": {
"allowedOrigins": [
"http://127.0.0.1",
"http://localhost",
]
},
"auth": {
"mode": "token",
"token": "66c72cbe84ae1071d61a1f582a0e1ab38e273e1a40fe4592"
},
"tailscale": {
"mode": "off",
"resetOnExit": false
},
"nodes": {
"denyCommands": [
"camera.snap",
"camera.clip",
"screen.record",
"contacts.add",
"calendar.add",
"reminders.add",
"sms.send"
]
}
},
"plugins": {
"slots": {},
"entries": {
"telegram": {
"enabled": true
},
"qwen-portal-auth": {
"enabled": true
},
"memory-core": {
"enabled": false
},
"memory-lancedb": {
"enabled": false
}
},
"installs": {
"openclaw-qqbot": {
"source": "npm",
"spec": "@tencent-connect/openclaw-qqbot@latest",
"installPath": "/root/.openclaw/extensions/openclaw-qqbot",
"version": "1.5.6",
"resolvedName": "@tencent-connect/openclaw-qqbot",
"resolvedVersion": "1.5.6",
"resolvedSpec": "@tencent-connect/openclaw-qqbot@1.5.6",
"integrity": "sha512-DNznnKZVIr0YPi3GpCggLr9MrKbRPGLG5SHWQJeY6J1K+Fo7yuq+tgh3HamTpbrTK7iBfEWb2MjT/CQbAm5sbA==",
"shasum": "62584d0ad35f34d8e2ec150d1f12e0f939ff53ab",
"resolvedAt": "2026-03-11T09:52:33.781Z",
"installedAt": "2026-03-11T09:52:52.157Z"
},
"openclaw-tavily": {
"source": "npm",
"spec": "openclaw-tavily",
"installPath": "/root/.openclaw/extensions/openclaw-tavily",
"version": "0.2.1",
"resolvedName": "openclaw-tavily",
"resolvedVersion": "0.2.1",
"resolvedSpec": "openclaw-tavily@0.2.1",
"integrity": "sha512-Y/cYTiKWGjWm8TF0/0DGyB80Kuke1oJKEPcFvjmHutXSZSx42RmMqZ3I6kMz12hw1eoxJwQ8a0EJQAvq45KciQ==",
"shasum": "544d324879914108c50cfd801d7cff704069970d",
"resolvedAt": "2026-03-13T05:01:53.532Z",
"installedAt": "2026-03-13T05:01:55.043Z"
},
"memos-local-openclaw-plugin": {
"source": "npm",
"spec": "@memtensor/memos-local-openclaw-plugin",
"installPath": "/root/.openclaw/extensions/memos-local-openclaw-plugin",
"version": "1.0.2",
"resolvedName": "@memtensor/memos-local-openclaw-plugin",
"resolvedVersion": "1.0.2",
"resolvedSpec": "@memtensor/memos-local-openclaw-plugin@1.0.2",
"integrity": "sha512-3D/kcQ4nzXr80IJhGwIZ6Tqz60AACjZFsN1cNKZUFXtzGcROpXiIf8AYKdoLSMGLR0/LwHWr3fBDEfPAqJ7HHQ==",
"shasum": "a8407f617410793dadd2f1a73e20883fcac786e0",
"resolvedAt": "2026-03-13T06:25:44.136Z",
"installedAt": "2026-03-13T06:26:09.153Z"
}
}
}
}
重启网关生效:
pkill -9 openclaw
openclaw gateway run
不出意外,在网页端就可以跟小龙虾对话了。
现在我们安装QQBot让我们用QQ控制小龙虾,这个简单直接官方走起。
官方平台:https://q.qq.com

登陆并创建好自己的机器人后,直接连接SSH然后输入官方三条命令

这样QQbot完成了对接,发条消息确认一下。

七、常见问题与解决
- 编译时 SDL2 路径报错: 手动指定 SDL2 路径后重新编译:
cmake -DSDL2_DIR=/usr/lib/x86_64-linux-gnu/cmake/SDL2/ .. make -j$(nproc) - 无声音: 安装 SDL2 混音器插件:
sudo apt install -y libsdl2-mixer-2.0-0 - PVE 无法获取虚拟机 IP: 确认 QEMU 代理已安装并启动:
sudo systemctl status qemu-guest-agentw
八、总结
通过本教程,你完成了从 PVE 虚拟机创建、Ubuntu 24.04 安装,到 OpenClaw 编译运行的全流程。