openclaw-rocketchat 0.1.4 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +66 -30
- package/README.md +67 -31
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +38 -220
- package/dist/cli/setup.js.map +1 -1
- package/install-rc.sh +302 -0
- package/openclaw.plugin.json +1 -1
- package/package.json +3 -2
package/README.en.md
CHANGED
|
@@ -235,60 +235,96 @@ Deploy once, access from phone, computer, tablet, or browser. Messages sync acro
|
|
|
235
235
|
|
|
236
236
|
### Prerequisites
|
|
237
237
|
|
|
238
|
-
- [OpenClaw](https://docs.openclaw.ai/) installed
|
|
239
|
-
- A server with a **public IP** (
|
|
238
|
+
- [OpenClaw](https://docs.openclaw.ai/) installed
|
|
239
|
+
- A server with a **public IP** (AWS, DigitalOcean, etc.)
|
|
240
240
|
- Firewall / security group allows **port 3000** (or your custom port)
|
|
241
241
|
|
|
242
|
-
### Step 1:
|
|
242
|
+
### Step 1: Deploy Rocket.Chat
|
|
243
|
+
|
|
244
|
+
Run the one-click install script on your server (works for both local and remote):
|
|
243
245
|
|
|
244
246
|
```bash
|
|
245
|
-
|
|
246
|
-
openclaw rocketchat setup
|
|
247
|
+
bash install-rc.sh
|
|
247
248
|
```
|
|
248
249
|
|
|
249
|
-
|
|
250
|
+
Or install remotely without downloading first:
|
|
250
251
|
|
|
252
|
+
```bash
|
|
253
|
+
curl -fsSL https://raw.githubusercontent.com/Kxiandaoyan/openclaw-rocketchat/main/install-rc.sh | bash
|
|
251
254
|
```
|
|
252
|
-
=== Rocket.Chat Deployment Wizard ===
|
|
253
255
|
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
2) Connect to remote server — RC already deployed elsewhere
|
|
257
|
-
Choose: 1
|
|
256
|
+
You'll see:
|
|
257
|
+
|
|
258
258
|
```
|
|
259
|
+
╔══════════════════════════════════════════════════╗
|
|
260
|
+
║ Rocket.Chat One-Click Install ║
|
|
261
|
+
╚══════════════════════════════════════════════════╝
|
|
259
262
|
|
|
260
|
-
|
|
261
|
-
|
|
263
|
+
⏳ Detecting Docker...
|
|
264
|
+
✅ Docker installed (v29.2.1)
|
|
265
|
+
✅ Docker Compose installed (v5.0.2)
|
|
266
|
+
✅ Port 3000 available
|
|
267
|
+
⏳ Generating docker-compose.yml...
|
|
268
|
+
✅ Config generated
|
|
269
|
+
⏳ Pulling images & starting (first time ~2-5 min)...
|
|
270
|
+
✅ Rocket.Chat is ready!
|
|
262
271
|
|
|
263
|
-
|
|
272
|
+
╔══════════════════════════════════════════════════════════╗
|
|
273
|
+
║ 🎉 Rocket.Chat installed! ║
|
|
274
|
+
╚══════════════════════════════════════════════════════════╝
|
|
264
275
|
|
|
276
|
+
Server address: http://123.45.67.89:3000
|
|
277
|
+
|
|
278
|
+
📌 Next steps:
|
|
279
|
+
1️⃣ Make sure firewall allows port 3000
|
|
280
|
+
2️⃣ On your OpenClaw machine, run:
|
|
281
|
+
openclaw rocketchat setup
|
|
265
282
|
```
|
|
266
|
-
⏳ Checking environment...
|
|
267
|
-
Docker: Installed (v27.1.1)
|
|
268
|
-
Docker Compose: Installed (v2.29.1)
|
|
269
|
-
Port 3000: Available
|
|
270
283
|
|
|
271
|
-
|
|
284
|
+
> Custom port: `RC_PORT=4000 bash install-rc.sh`
|
|
285
|
+
> No Docker? The script auto-installs it.
|
|
272
286
|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
287
|
+
### Step 2: Install Plugin + Configure Connection
|
|
288
|
+
|
|
289
|
+
Back on your OpenClaw machine:
|
|
290
|
+
|
|
291
|
+
```bash
|
|
292
|
+
openclaw plugins install openclaw-rocketchat
|
|
293
|
+
openclaw rocketchat setup
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
You'll see:
|
|
297
|
+
|
|
298
|
+
```
|
|
299
|
+
=== Rocket.Chat Setup Wizard ===
|
|
300
|
+
|
|
301
|
+
Rocket.Chat server address
|
|
302
|
+
(local: http://127.0.0.1:3000, remote: http://PUBLIC_IP:PORT)
|
|
303
|
+
[default http://127.0.0.1:3000]: http://123.45.67.89:3000
|
|
304
|
+
|
|
305
|
+
⏳ Testing connection to http://123.45.67.89:3000 ...
|
|
306
|
+
✅ Connected! Rocket.Chat version: 8.1.0
|
|
307
|
+
|
|
308
|
+
Admin account
|
|
309
|
+
1) Auto-create new admin (recommended for fresh installs)
|
|
310
|
+
2) Use existing admin account
|
|
311
|
+
Choose: 1
|
|
277
312
|
|
|
278
|
-
⏳ Generating Docker config...
|
|
279
|
-
✅ Docker config generated
|
|
280
|
-
⏳ Pulling images & starting (first time ~2-5 min)...
|
|
281
|
-
⏳ Waiting for service... (30s)
|
|
282
|
-
✅ Rocket.Chat is ready
|
|
283
313
|
⏳ Creating admin (internal, you don't need to remember)...
|
|
284
314
|
✅ Admin created
|
|
315
|
+
|
|
316
|
+
Create your phone login account
|
|
317
|
+
Username: zhangsan
|
|
318
|
+
Password: ********
|
|
319
|
+
Confirm: ********
|
|
320
|
+
|
|
285
321
|
⏳ Creating account zhangsan...
|
|
286
322
|
✅ Account zhangsan created
|
|
287
323
|
⏳ Writing openclaw.json config...
|
|
288
324
|
✅ Config saved
|
|
289
325
|
|
|
290
326
|
╔══════════════════════════════════════════╗
|
|
291
|
-
║ 🎉
|
|
327
|
+
║ 🎉 Setup complete! ║
|
|
292
328
|
╚══════════════════════════════════════════╝
|
|
293
329
|
|
|
294
330
|
📱 Phone setup:
|
|
@@ -300,7 +336,7 @@ Create your phone login account
|
|
|
300
336
|
💡 Next: openclaw rocketchat add-bot
|
|
301
337
|
```
|
|
302
338
|
|
|
303
|
-
**
|
|
339
|
+
**Two steps: deploy RC, then configure the plugin.**
|
|
304
340
|
|
|
305
341
|
### Step 2: Add an AI Bot
|
|
306
342
|
|
package/README.md
CHANGED
|
@@ -235,60 +235,96 @@ Rocket.Chat 官方客户端下载:[rocket.chat/download-apps](https://www.rock
|
|
|
235
235
|
|
|
236
236
|
### 前置条件
|
|
237
237
|
|
|
238
|
-
- [OpenClaw](https://docs.openclaw.ai/)
|
|
239
|
-
- 一台有**公网 IP** 的服务器(阿里云、腾讯云、AWS
|
|
238
|
+
- [OpenClaw](https://docs.openclaw.ai/) 已安装
|
|
239
|
+
- 一台有**公网 IP** 的服务器(阿里云、腾讯云、AWS 等均可)
|
|
240
240
|
- 防火墙/安全组已放行 **3000 端口**(或你自定义的端口)
|
|
241
241
|
|
|
242
|
-
###
|
|
242
|
+
### 第一步:部署 Rocket.Chat
|
|
243
|
+
|
|
244
|
+
在你的服务器上运行一键安装脚本(本地或远程 VPS 都是同一条命令):
|
|
243
245
|
|
|
244
246
|
```bash
|
|
245
|
-
|
|
246
|
-
openclaw rocketchat setup
|
|
247
|
+
bash install-rc.sh
|
|
247
248
|
```
|
|
248
249
|
|
|
249
|
-
|
|
250
|
+
或者远程一键安装(不用提前下载脚本):
|
|
250
251
|
|
|
252
|
+
```bash
|
|
253
|
+
curl -fsSL https://raw.githubusercontent.com/Kxiandaoyan/openclaw-rocketchat/main/install-rc.sh | bash
|
|
251
254
|
```
|
|
252
|
-
=== Rocket.Chat 部署向导 ===
|
|
253
255
|
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
2) 连接远程服务器 —— RC 已部署在另一台公网服务器
|
|
257
|
-
请选择: 1
|
|
256
|
+
你会看到:
|
|
257
|
+
|
|
258
258
|
```
|
|
259
|
+
╔══════════════════════════════════════════════════╗
|
|
260
|
+
║ Rocket.Chat 一键安装(OpenClaw 远程部署专用) ║
|
|
261
|
+
╚══════════════════════════════════════════════════╝
|
|
259
262
|
|
|
260
|
-
|
|
261
|
-
|
|
263
|
+
⏳ 检测 Docker...
|
|
264
|
+
✅ Docker 已安装 (v29.2.1)
|
|
265
|
+
✅ Docker Compose 已安装 (v5.0.2)
|
|
266
|
+
✅ 端口 3000 可用
|
|
267
|
+
⏳ 生成 docker-compose.yml...
|
|
268
|
+
✅ 配置文件已生成
|
|
269
|
+
⏳ 拉取镜像并启动容器(首次约 2-5 分钟)...
|
|
270
|
+
✅ Rocket.Chat 已就绪!
|
|
262
271
|
|
|
263
|
-
|
|
272
|
+
╔══════════════════════════════════════════════════════════╗
|
|
273
|
+
║ 🎉 Rocket.Chat 安装完成! ║
|
|
274
|
+
╚══════════════════════════════════════════════════════════╝
|
|
264
275
|
|
|
276
|
+
服务器地址: http://123.45.67.89:3000
|
|
277
|
+
|
|
278
|
+
📌 接下来的步骤:
|
|
279
|
+
1️⃣ 确保防火墙已放行端口 3000
|
|
280
|
+
2️⃣ 回到你的 OpenClaw 机器,运行:
|
|
281
|
+
openclaw rocketchat setup
|
|
265
282
|
```
|
|
266
|
-
⏳ 检测环境...
|
|
267
|
-
Docker: 已安装 (v27.1.1)
|
|
268
|
-
Docker Compose: 已安装 (v2.29.1)
|
|
269
|
-
端口 3000: 可用
|
|
270
283
|
|
|
271
|
-
|
|
284
|
+
> 指定端口:`RC_PORT=4000 bash install-rc.sh`
|
|
285
|
+
> Docker 没装?脚本会自动安装。
|
|
286
|
+
|
|
287
|
+
### 第二步:安装插件 + 配置连接
|
|
288
|
+
|
|
289
|
+
回到你的 OpenClaw 机器,运行:
|
|
290
|
+
|
|
291
|
+
```bash
|
|
292
|
+
openclaw plugins install openclaw-rocketchat
|
|
293
|
+
openclaw rocketchat setup
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
你会看到:
|
|
297
|
+
|
|
298
|
+
```
|
|
299
|
+
=== Rocket.Chat 配置向导 ===
|
|
300
|
+
|
|
301
|
+
Rocket.Chat 服务器地址
|
|
302
|
+
(本机部署填 http://127.0.0.1:3000,远程填 http://公网IP:端口)
|
|
303
|
+
[默认 http://127.0.0.1:3000]: http://123.45.67.89:3000
|
|
304
|
+
|
|
305
|
+
⏳ 测试连接 http://123.45.67.89:3000 ...
|
|
306
|
+
✅ 连接成功!Rocket.Chat 版本: 8.1.0
|
|
307
|
+
|
|
308
|
+
管理员账号
|
|
309
|
+
1) 自动创建新管理员(推荐,适用于新装的 Rocket.Chat)
|
|
310
|
+
2) 使用已有管理员账号
|
|
311
|
+
请选择: 1
|
|
272
312
|
|
|
273
|
-
创建你的手机登录账号
|
|
274
|
-
用户名: zhangsan
|
|
275
|
-
密码: ********
|
|
276
|
-
确认密码: ********
|
|
277
|
-
|
|
278
|
-
⏳ 生成 Docker 配置...
|
|
279
|
-
✅ Docker 配置已生成
|
|
280
|
-
⏳ 拉取镜像并启动(首次约 2-5 分钟)...
|
|
281
|
-
⏳ 等待服务就绪... (30s)
|
|
282
|
-
✅ Rocket.Chat 服务已就绪
|
|
283
313
|
⏳ 创建管理员(内部使用,你不需要记住)...
|
|
284
314
|
✅ 管理员已创建
|
|
315
|
+
|
|
316
|
+
创建你的手机登录账号
|
|
317
|
+
用户名: zhangsan
|
|
318
|
+
密码: ********
|
|
319
|
+
确认密码: ********
|
|
320
|
+
|
|
285
321
|
⏳ 创建账号 zhangsan...
|
|
286
322
|
✅ 账号 zhangsan 已创建
|
|
287
323
|
⏳ 写入 openclaw.json 配置...
|
|
288
324
|
✅ 配置已写入
|
|
289
325
|
|
|
290
326
|
╔══════════════════════════════════════════╗
|
|
291
|
-
║ 🎉
|
|
327
|
+
║ 🎉 配置完成! ║
|
|
292
328
|
╚══════════════════════════════════════════╝
|
|
293
329
|
|
|
294
330
|
📱 手机操作:
|
|
@@ -301,7 +337,7 @@ openclaw rocketchat setup
|
|
|
301
337
|
openclaw rocketchat add-bot
|
|
302
338
|
```
|
|
303
339
|
|
|
304
|
-
|
|
340
|
+
**两步搞定:先部署 RC,再配置插件。**
|
|
305
341
|
|
|
306
342
|
### 第二步:添加 AI 机器人
|
|
307
343
|
|
package/dist/cli/setup.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"AA6BA,wBAAsB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqJpE"}
|
package/dist/cli/setup.js
CHANGED
|
@@ -1,210 +1,36 @@
|
|
|
1
1
|
// ============================================================
|
|
2
2
|
// CLI: openclaw rocketchat setup
|
|
3
|
-
//
|
|
4
|
-
//
|
|
3
|
+
// 连接 Rocket.Chat 服务器 + 创建管理员 + 创建用户 + 写入配置
|
|
4
|
+
//
|
|
5
|
+
// Docker 部署已独立到 install-rc.sh,本命令只负责"连接和配置"
|
|
5
6
|
// ============================================================
|
|
6
|
-
import { DockerManager } from "../docker/manager.js";
|
|
7
7
|
import { RocketChatRestClient } from "../rc-api/rest-client.js";
|
|
8
8
|
import { ConfigWriter } from "../config/writer.js";
|
|
9
|
-
import { saveAdminCredentials, saveUserRecord, generatePassword, generateAdminUsername, isSetupDone,
|
|
9
|
+
import { saveAdminCredentials, saveUserRecord, generatePassword, generateAdminUsername, isSetupDone, } from "../config/credentials.js";
|
|
10
10
|
import { ask, askPassword, confirm, select, heading, step, success, error, warn, info, } from "./prompts.js";
|
|
11
11
|
export async function setupCommand(configPath) {
|
|
12
|
-
heading("Rocket.Chat
|
|
12
|
+
heading("Rocket.Chat 配置向导");
|
|
13
13
|
// 检查是否已经 setup 过
|
|
14
14
|
if (isSetupDone()) {
|
|
15
15
|
warn("检测到已有 Rocket.Chat 配置。");
|
|
16
|
-
const proceed = await confirm("
|
|
16
|
+
const proceed = await confirm("要重新配置吗?(会覆盖现有配置)");
|
|
17
17
|
if (!proceed) {
|
|
18
18
|
info("已取消。");
|
|
19
19
|
return;
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
-
// ----------------------------------------------------------
|
|
23
|
-
// 0. 选择部署模式
|
|
24
|
-
// ----------------------------------------------------------
|
|
25
|
-
const deployMode = await select("选择部署方式", [
|
|
26
|
-
{
|
|
27
|
-
label: "本地部署(Docker)—— RC 和 OpenClaw 在同一台机器",
|
|
28
|
-
value: "local",
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
label: "连接远程服务器 —— RC 已部署在另一台公网服务器",
|
|
32
|
-
value: "remote",
|
|
33
|
-
},
|
|
34
|
-
]);
|
|
35
|
-
if (deployMode === "local") {
|
|
36
|
-
await setupLocal(configPath);
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
39
|
-
await setupRemote(configPath);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
// ==============================================================
|
|
43
|
-
// 本地 Docker 部署
|
|
44
|
-
// ==============================================================
|
|
45
|
-
async function setupLocal(configPath) {
|
|
46
|
-
// ----------------------------------------------------------
|
|
47
|
-
// 1. 环境检测
|
|
48
|
-
// ----------------------------------------------------------
|
|
49
|
-
step("检测环境...");
|
|
50
|
-
const dockerDir = getDockerDir();
|
|
51
|
-
const docker = new DockerManager(dockerDir);
|
|
52
|
-
const dockerCheck = await docker.isDockerInstalled();
|
|
53
|
-
if (!dockerCheck.installed) {
|
|
54
|
-
warn("未检测到 Docker!");
|
|
55
|
-
console.log("");
|
|
56
|
-
info("Docker 是运行 Rocket.Chat 的必备工具,请根据你的系统安装:");
|
|
57
|
-
console.log("");
|
|
58
|
-
info(" 📦 Windows / macOS:");
|
|
59
|
-
info(" 下载 Docker Desktop: https://www.docker.com/products/docker-desktop/");
|
|
60
|
-
info(" 安装后启动 Docker Desktop,然后重新运行本命令。");
|
|
61
|
-
console.log("");
|
|
62
|
-
info(" 🐧 Linux (Ubuntu/Debian):");
|
|
63
|
-
info(" curl -fsSL https://get.docker.com | sh");
|
|
64
|
-
info(" sudo usermod -aG docker $USER");
|
|
65
|
-
info(" (注销后重新登录,然后重新运行本命令)");
|
|
66
|
-
console.log("");
|
|
67
|
-
info(" 🐧 Linux (CentOS/RHEL):");
|
|
68
|
-
info(" curl -fsSL https://get.docker.com | sh");
|
|
69
|
-
info(" sudo systemctl enable --now docker");
|
|
70
|
-
info(" sudo usermod -aG docker $USER");
|
|
71
|
-
console.log("");
|
|
72
|
-
const tryInstall = await confirm("是否尝试自动安装 Docker?(仅 Linux 有效)");
|
|
73
|
-
if (tryInstall) {
|
|
74
|
-
step("尝试自动安装 Docker...");
|
|
75
|
-
try {
|
|
76
|
-
const { execFile: execFileCb } = await import("node:child_process");
|
|
77
|
-
const { promisify } = await import("node:util");
|
|
78
|
-
const execFileAsync = promisify(execFileCb);
|
|
79
|
-
await execFileAsync("sh", ["-c", "curl -fsSL https://get.docker.com | sh"], { timeout: 300000 });
|
|
80
|
-
success("Docker 安装完成!");
|
|
81
|
-
// 重新检测
|
|
82
|
-
const recheck = await docker.isDockerInstalled();
|
|
83
|
-
if (!recheck.installed) {
|
|
84
|
-
error("安装后仍无法检测到 Docker,请手动检查。");
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
catch (err) {
|
|
89
|
-
error(`自动安装失败: ${err.message}`);
|
|
90
|
-
info("请按上面的说明手动安装 Docker,然后重新运行本命令。");
|
|
91
|
-
return;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
info("请安装 Docker 后重新运行: openclaw rocketchat setup");
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
info(`Docker: 已安装 (v${dockerCheck.version || "latest"})`);
|
|
100
|
-
const composeCheck = await docker.isComposeInstalled();
|
|
101
|
-
if (!composeCheck.installed) {
|
|
102
|
-
error("未检测到 Docker Compose!");
|
|
103
|
-
info("Docker Desktop 自带 Compose。如果你用的是 Linux,请运行:");
|
|
104
|
-
info(" sudo apt install docker-compose-plugin");
|
|
105
|
-
info("或参考: https://docs.docker.com/compose/install/");
|
|
106
|
-
return;
|
|
107
|
-
}
|
|
108
|
-
info(`Docker Compose: 已安装 (v${composeCheck.version})`);
|
|
109
|
-
// ----------------------------------------------------------
|
|
110
|
-
// 2. 用户输入
|
|
111
|
-
// ----------------------------------------------------------
|
|
112
|
-
// 端口
|
|
113
|
-
const portStr = await ask("端口\n (Rocket.Chat 服务端口,手机连接时需要用到)", "3000");
|
|
114
|
-
const port = parseInt(portStr, 10) || 3000;
|
|
115
|
-
if (port < 1 || port > 65535) {
|
|
116
|
-
error("端口号必须在 1-65535 之间!");
|
|
117
|
-
return;
|
|
118
|
-
}
|
|
119
|
-
const portAvailable = await docker.isPortAvailable(port);
|
|
120
|
-
if (!portAvailable) {
|
|
121
|
-
warn(`端口 ${port} 已被占用!`);
|
|
122
|
-
const proceed = await confirm("继续吗?(可能是已运行的 Rocket.Chat)");
|
|
123
|
-
if (!proceed)
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
else {
|
|
127
|
-
info(`端口 ${port}: 可用`);
|
|
128
|
-
}
|
|
129
|
-
// 用户账号
|
|
130
|
-
const { username, password } = await promptUserAccount();
|
|
131
|
-
if (!username)
|
|
132
|
-
return;
|
|
133
|
-
// ----------------------------------------------------------
|
|
134
|
-
// 3. 部署
|
|
135
|
-
// ----------------------------------------------------------
|
|
136
22
|
console.log("");
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
await docker.generateComposeFile(port);
|
|
140
|
-
success("Docker 配置已生成");
|
|
141
|
-
// 3.2 拉取镜像和启动容器
|
|
142
|
-
step("拉取镜像并启动(首次约 2-5 分钟)...");
|
|
143
|
-
try {
|
|
144
|
-
await docker.start();
|
|
145
|
-
}
|
|
146
|
-
catch (err) {
|
|
147
|
-
error(`Docker 启动失败: ${err.message}`);
|
|
148
|
-
info("请检查 Docker 是否正在运行。");
|
|
149
|
-
return;
|
|
150
|
-
}
|
|
151
|
-
// 3.3 等待就绪
|
|
152
|
-
try {
|
|
153
|
-
await docker.waitForReady(port, 120000, (msg) => {
|
|
154
|
-
step(msg);
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
catch (err) {
|
|
158
|
-
error(err.message);
|
|
159
|
-
return;
|
|
160
|
-
}
|
|
161
|
-
success("Rocket.Chat 服务已就绪");
|
|
162
|
-
// ----------------------------------------------------------
|
|
163
|
-
// 4. 创建账号
|
|
164
|
-
// ----------------------------------------------------------
|
|
165
|
-
const serverUrl = `http://127.0.0.1:${port}`;
|
|
166
|
-
const rc = new RocketChatRestClient(serverUrl);
|
|
167
|
-
const adminCreated = await createAdminAccount(rc, serverUrl, port);
|
|
168
|
-
if (!adminCreated)
|
|
169
|
-
return;
|
|
170
|
-
await createPersonalAccount(rc, username, password);
|
|
171
|
-
// ----------------------------------------------------------
|
|
172
|
-
// 5. 写入 openclaw.json 配置
|
|
173
|
-
// ----------------------------------------------------------
|
|
174
|
-
step("写入 openclaw.json 配置...");
|
|
175
|
-
const hostIp = docker.getHostIp();
|
|
176
|
-
const publicUrl = `http://${hostIp}:${port}`;
|
|
177
|
-
try {
|
|
178
|
-
const configWriter = new ConfigWriter(configPath);
|
|
179
|
-
await configWriter.readConfig();
|
|
180
|
-
configWriter.setRocketchatChannel(publicUrl, port);
|
|
181
|
-
await configWriter.save();
|
|
182
|
-
success("配置已写入");
|
|
183
|
-
}
|
|
184
|
-
catch (err) {
|
|
185
|
-
error(`配置写入失败: ${err.message}`);
|
|
186
|
-
return;
|
|
187
|
-
}
|
|
188
|
-
// ----------------------------------------------------------
|
|
189
|
-
// 6. 完成提示
|
|
190
|
-
// ----------------------------------------------------------
|
|
191
|
-
printFinishBanner(publicUrl, username, port);
|
|
192
|
-
}
|
|
193
|
-
// ==============================================================
|
|
194
|
-
// 远程模式:连接已有的 Rocket.Chat 服务器
|
|
195
|
-
// ==============================================================
|
|
196
|
-
async function setupRemote(configPath) {
|
|
23
|
+
info("本命令用于连接 Rocket.Chat 服务器并配置插件。");
|
|
24
|
+
info("如果还没有部署 Rocket.Chat,请先运行 install-rc.sh:");
|
|
197
25
|
console.log("");
|
|
198
|
-
info("
|
|
199
|
-
info("
|
|
200
|
-
info("
|
|
201
|
-
info(" - 服务器内存不足,RC 单独部署在另一台机器");
|
|
202
|
-
info(" - 公司已有 Rocket.Chat 实例");
|
|
26
|
+
info(" 本机部署: bash install-rc.sh");
|
|
27
|
+
info(" 远程 VPS: SSH 到 VPS 上运行 bash install-rc.sh");
|
|
28
|
+
info(" 指定端口: RC_PORT=4000 bash install-rc.sh");
|
|
203
29
|
console.log("");
|
|
204
30
|
// ----------------------------------------------------------
|
|
205
|
-
// 1.
|
|
31
|
+
// 1. 输入服务器地址
|
|
206
32
|
// ----------------------------------------------------------
|
|
207
|
-
const serverUrl = await ask("
|
|
33
|
+
const serverUrl = await ask("Rocket.Chat 服务器地址\n (本机部署填 http://127.0.0.1:3000,远程填 http://公网IP:端口)", "http://127.0.0.1:3000");
|
|
208
34
|
if (!serverUrl) {
|
|
209
35
|
error("地址不能为空!");
|
|
210
36
|
return;
|
|
@@ -221,17 +47,20 @@ async function setupRemote(configPath) {
|
|
|
221
47
|
// ----------------------------------------------------------
|
|
222
48
|
step(`测试连接 ${cleanUrl} ...`);
|
|
223
49
|
const rc = new RocketChatRestClient(cleanUrl);
|
|
50
|
+
let rcVersion = "";
|
|
224
51
|
try {
|
|
225
|
-
|
|
226
|
-
success(`连接成功!Rocket.Chat 版本: ${
|
|
52
|
+
rcVersion = await rc.getServerVersion();
|
|
53
|
+
success(`连接成功!Rocket.Chat 版本: ${rcVersion}`);
|
|
227
54
|
}
|
|
228
|
-
catch
|
|
55
|
+
catch {
|
|
229
56
|
error(`无法连接到 ${cleanUrl}`);
|
|
230
57
|
info("请检查:");
|
|
231
|
-
info(" 1.
|
|
232
|
-
info(" 2.
|
|
58
|
+
info(" 1. Rocket.Chat 是否已启动(docker ps 查看)");
|
|
59
|
+
info(" 2. 服务器地址和端口是否正确");
|
|
233
60
|
info(" 3. 防火墙是否已放行对应端口");
|
|
234
|
-
info(" 4.
|
|
61
|
+
info(" 4. 如果是远程服务器,确保本机能访问该地址");
|
|
62
|
+
console.log("");
|
|
63
|
+
info("💡 还没部署 Rocket.Chat?运行: bash install-rc.sh");
|
|
235
64
|
return;
|
|
236
65
|
}
|
|
237
66
|
// ----------------------------------------------------------
|
|
@@ -250,13 +79,11 @@ async function setupRemote(configPath) {
|
|
|
250
79
|
},
|
|
251
80
|
]);
|
|
252
81
|
if (adminMode === "create") {
|
|
253
|
-
|
|
254
|
-
const adminCreated = await createAdminAccount(rc, cleanUrl, 0);
|
|
82
|
+
const adminCreated = await createAdminAccount(rc, cleanUrl);
|
|
255
83
|
if (!adminCreated)
|
|
256
84
|
return;
|
|
257
85
|
}
|
|
258
86
|
else {
|
|
259
|
-
// 使用已有管理员
|
|
260
87
|
const existingAdminUser = await ask("管理员用户名");
|
|
261
88
|
const existingAdminPass = await askPassword("管理员密码");
|
|
262
89
|
if (!existingAdminUser || !existingAdminPass) {
|
|
@@ -281,21 +108,13 @@ async function setupRemote(configPath) {
|
|
|
281
108
|
}
|
|
282
109
|
}
|
|
283
110
|
// ----------------------------------------------------------
|
|
284
|
-
// 4.
|
|
111
|
+
// 4. 创建手机登录账号
|
|
285
112
|
// ----------------------------------------------------------
|
|
286
113
|
console.log("");
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
let username = "";
|
|
292
|
-
if (createAccount) {
|
|
293
|
-
const result = await promptUserAccount();
|
|
294
|
-
username = result.username;
|
|
295
|
-
if (!username)
|
|
296
|
-
return;
|
|
297
|
-
await createPersonalAccount(rc, username, result.password);
|
|
298
|
-
}
|
|
114
|
+
const { username, password } = await promptUserAccount();
|
|
115
|
+
if (!username)
|
|
116
|
+
return;
|
|
117
|
+
await createPersonalAccount(rc, username, password);
|
|
299
118
|
// ----------------------------------------------------------
|
|
300
119
|
// 5. 写入 openclaw.json 配置
|
|
301
120
|
// ----------------------------------------------------------
|
|
@@ -303,7 +122,8 @@ async function setupRemote(configPath) {
|
|
|
303
122
|
// 从 URL 提取端口
|
|
304
123
|
let port = 3000;
|
|
305
124
|
try {
|
|
306
|
-
|
|
125
|
+
const url = new URL(cleanUrl);
|
|
126
|
+
port = url.port ? parseInt(url.port, 10) : (cleanUrl.startsWith("https") ? 443 : 80);
|
|
307
127
|
}
|
|
308
128
|
catch {
|
|
309
129
|
// 保持默认
|
|
@@ -325,14 +145,14 @@ async function setupRemote(configPath) {
|
|
|
325
145
|
printFinishBanner(cleanUrl, username, port);
|
|
326
146
|
}
|
|
327
147
|
// ==============================================================
|
|
328
|
-
//
|
|
148
|
+
// 辅助函数
|
|
329
149
|
// ==============================================================
|
|
330
150
|
/** 提示输入用户名和密码 */
|
|
331
151
|
async function promptUserAccount() {
|
|
332
|
-
console.log("");
|
|
333
152
|
info("创建你的手机登录账号");
|
|
334
153
|
info("(用这个账号在 Rocket.Chat App 上登录)");
|
|
335
|
-
|
|
154
|
+
console.log("");
|
|
155
|
+
const username = await ask("用户名");
|
|
336
156
|
if (!username) {
|
|
337
157
|
error("用户名不能为空!");
|
|
338
158
|
return { username: "", password: null };
|
|
@@ -341,7 +161,7 @@ async function promptUserAccount() {
|
|
|
341
161
|
error("用户名只能包含英文字母、数字、点、下划线和连字符!");
|
|
342
162
|
return { username: "", password: null };
|
|
343
163
|
}
|
|
344
|
-
const password = await askPassword("
|
|
164
|
+
const password = await askPassword("密码");
|
|
345
165
|
if (!password) {
|
|
346
166
|
error("密码不能为空!");
|
|
347
167
|
return { username: "", password: null };
|
|
@@ -350,7 +170,7 @@ async function promptUserAccount() {
|
|
|
350
170
|
error("密码至少 6 个字符!");
|
|
351
171
|
return { username: "", password: null };
|
|
352
172
|
}
|
|
353
|
-
const confirmPwd = await askPassword("
|
|
173
|
+
const confirmPwd = await askPassword("确认密码");
|
|
354
174
|
if (password !== confirmPwd) {
|
|
355
175
|
error("两次密码不一致!");
|
|
356
176
|
return { username: "", password: null };
|
|
@@ -358,7 +178,7 @@ async function promptUserAccount() {
|
|
|
358
178
|
return { username, password };
|
|
359
179
|
}
|
|
360
180
|
/** 创建管理员账号 */
|
|
361
|
-
async function createAdminAccount(rc, serverUrl
|
|
181
|
+
async function createAdminAccount(rc, serverUrl) {
|
|
362
182
|
step("创建管理员(内部使用,你不需要记住)...");
|
|
363
183
|
const adminUsername = generateAdminUsername();
|
|
364
184
|
const adminPassword = generatePassword();
|
|
@@ -392,9 +212,7 @@ async function createAdminAccount(rc, serverUrl, port) {
|
|
|
392
212
|
catch (err) {
|
|
393
213
|
error(`管理员创建失败: ${err.message}`);
|
|
394
214
|
info("你可能需要手动完成 Rocket.Chat 初始化。");
|
|
395
|
-
|
|
396
|
-
info(`访问 http://127.0.0.1:${port} 完成设置向导。`);
|
|
397
|
-
}
|
|
215
|
+
info(`访问 ${serverUrl} 完成设置向导后重新运行 setup。`);
|
|
398
216
|
return false;
|
|
399
217
|
}
|
|
400
218
|
}
|
|
@@ -425,7 +243,7 @@ async function createPersonalAccount(rc, username, password) {
|
|
|
425
243
|
function printFinishBanner(publicUrl, username, port) {
|
|
426
244
|
console.log("");
|
|
427
245
|
console.log("╔══════════════════════════════════════════╗");
|
|
428
|
-
console.log("║ 🎉
|
|
246
|
+
console.log("║ 🎉 配置完成! ║");
|
|
429
247
|
console.log("╚══════════════════════════════════════════╝");
|
|
430
248
|
console.log("");
|
|
431
249
|
info("📱 手机操作:");
|
package/dist/cli/setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"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"}
|
package/install-rc.sh
ADDED
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# ==============================================================
|
|
3
|
+
# Rocket.Chat 一键安装脚本
|
|
4
|
+
# 在任意 Linux/macOS 上快速部署 Rocket.Chat + MongoDB(Docker)
|
|
5
|
+
#
|
|
6
|
+
# 适用于所有场景:
|
|
7
|
+
# - 本地部署:在 OpenClaw 同一台机器上运行
|
|
8
|
+
# - 远程部署:在公网 VPS 上运行,OpenClaw 在另一台机器
|
|
9
|
+
#
|
|
10
|
+
# 部署完成后运行 openclaw rocketchat setup 连接并配置
|
|
11
|
+
#
|
|
12
|
+
# 用法:
|
|
13
|
+
# bash install-rc.sh
|
|
14
|
+
# 或远程一键安装:
|
|
15
|
+
# curl -fsSL https://raw.githubusercontent.com/Kxiandaoyan/openclaw-rocketchat/main/install-rc.sh | bash
|
|
16
|
+
# 或指定端口:
|
|
17
|
+
# RC_PORT=4000 bash install-rc.sh
|
|
18
|
+
# ==============================================================
|
|
19
|
+
|
|
20
|
+
set -euo pipefail
|
|
21
|
+
|
|
22
|
+
# -----------------------------------------------
|
|
23
|
+
# 配色
|
|
24
|
+
# -----------------------------------------------
|
|
25
|
+
RED='\033[0;31m'
|
|
26
|
+
GREEN='\033[0;32m'
|
|
27
|
+
YELLOW='\033[1;33m'
|
|
28
|
+
BLUE='\033[0;34m'
|
|
29
|
+
CYAN='\033[0;36m'
|
|
30
|
+
NC='\033[0m' # No Color
|
|
31
|
+
|
|
32
|
+
info() { echo -e "${BLUE}ℹ ${NC}$1"; }
|
|
33
|
+
success() { echo -e "${GREEN}✅ ${NC}$1"; }
|
|
34
|
+
warn() { echo -e "${YELLOW}⚠️ ${NC}$1"; }
|
|
35
|
+
err() { echo -e "${RED}❌ ${NC}$1"; }
|
|
36
|
+
step() { echo -e "${CYAN}⏳ ${NC}$1"; }
|
|
37
|
+
|
|
38
|
+
# -----------------------------------------------
|
|
39
|
+
# 参数
|
|
40
|
+
# -----------------------------------------------
|
|
41
|
+
RC_PORT="${RC_PORT:-3000}"
|
|
42
|
+
INSTALL_DIR="${RC_INSTALL_DIR:-$HOME/rocketchat}"
|
|
43
|
+
|
|
44
|
+
echo ""
|
|
45
|
+
echo "╔══════════════════════════════════════════════════╗"
|
|
46
|
+
echo "║ Rocket.Chat 一键安装(OpenClaw 远程部署专用) ║"
|
|
47
|
+
echo "╚══════════════════════════════════════════════════╝"
|
|
48
|
+
echo ""
|
|
49
|
+
info "端口: ${RC_PORT}"
|
|
50
|
+
info "安装目录: ${INSTALL_DIR}"
|
|
51
|
+
echo ""
|
|
52
|
+
|
|
53
|
+
# -----------------------------------------------
|
|
54
|
+
# 1. 检测操作系统
|
|
55
|
+
# -----------------------------------------------
|
|
56
|
+
OS="$(uname -s)"
|
|
57
|
+
if [[ "$OS" != "Linux" && "$OS" != "Darwin" ]]; then
|
|
58
|
+
err "此脚本仅支持 Linux 和 macOS!"
|
|
59
|
+
exit 1
|
|
60
|
+
fi
|
|
61
|
+
|
|
62
|
+
# -----------------------------------------------
|
|
63
|
+
# 2. 检测 / 安装 Docker
|
|
64
|
+
# -----------------------------------------------
|
|
65
|
+
step "检测 Docker..."
|
|
66
|
+
|
|
67
|
+
if command -v docker &>/dev/null; then
|
|
68
|
+
DOCKER_VERSION=$(docker --version 2>/dev/null | grep -oP '\d+\.\d+\.\d+' || echo "unknown")
|
|
69
|
+
success "Docker 已安装 (v${DOCKER_VERSION})"
|
|
70
|
+
else
|
|
71
|
+
warn "未检测到 Docker!"
|
|
72
|
+
echo ""
|
|
73
|
+
|
|
74
|
+
if [[ "$OS" == "Linux" ]]; then
|
|
75
|
+
info "正在自动安装 Docker..."
|
|
76
|
+
step "运行官方安装脚本(可能需要 sudo 密码)..."
|
|
77
|
+
curl -fsSL https://get.docker.com | sh
|
|
78
|
+
|
|
79
|
+
# 将当前用户加入 docker 组
|
|
80
|
+
if [[ "$(id -u)" -ne 0 ]]; then
|
|
81
|
+
sudo usermod -aG docker "$USER"
|
|
82
|
+
info "已将 $USER 加入 docker 组"
|
|
83
|
+
info "如果后续 docker 命令报权限错误,请注销后重新登录"
|
|
84
|
+
fi
|
|
85
|
+
|
|
86
|
+
# 启动 docker 服务
|
|
87
|
+
sudo systemctl enable --now docker 2>/dev/null || true
|
|
88
|
+
|
|
89
|
+
success "Docker 安装完成!"
|
|
90
|
+
elif [[ "$OS" == "Darwin" ]]; then
|
|
91
|
+
err "macOS 请手动安装 Docker Desktop:"
|
|
92
|
+
info " 下载地址: https://www.docker.com/products/docker-desktop/"
|
|
93
|
+
info " 安装后启动 Docker Desktop,然后重新运行此脚本"
|
|
94
|
+
exit 1
|
|
95
|
+
fi
|
|
96
|
+
fi
|
|
97
|
+
|
|
98
|
+
# 验证 Docker Compose
|
|
99
|
+
step "检测 Docker Compose..."
|
|
100
|
+
if docker compose version &>/dev/null; then
|
|
101
|
+
COMPOSE_VERSION=$(docker compose version --short 2>/dev/null || echo "unknown")
|
|
102
|
+
success "Docker Compose 已安装 (v${COMPOSE_VERSION})"
|
|
103
|
+
elif docker-compose version &>/dev/null; then
|
|
104
|
+
# 旧版独立 docker-compose
|
|
105
|
+
COMPOSE_VERSION=$(docker-compose version --short 2>/dev/null || echo "unknown")
|
|
106
|
+
success "Docker Compose 已安装 (v${COMPOSE_VERSION})"
|
|
107
|
+
COMPOSE_CMD="docker-compose"
|
|
108
|
+
else
|
|
109
|
+
err "未检测到 Docker Compose!"
|
|
110
|
+
if [[ "$OS" == "Linux" ]]; then
|
|
111
|
+
info "尝试安装 docker-compose-plugin..."
|
|
112
|
+
sudo apt-get update -qq && sudo apt-get install -y -qq docker-compose-plugin 2>/dev/null \
|
|
113
|
+
|| sudo yum install -y docker-compose-plugin 2>/dev/null \
|
|
114
|
+
|| { err "自动安装失败,请手动安装: https://docs.docker.com/compose/install/"; exit 1; }
|
|
115
|
+
success "Docker Compose 安装完成!"
|
|
116
|
+
else
|
|
117
|
+
err "请安装 Docker Compose: https://docs.docker.com/compose/install/"
|
|
118
|
+
exit 1
|
|
119
|
+
fi
|
|
120
|
+
fi
|
|
121
|
+
|
|
122
|
+
# 确定 compose 命令
|
|
123
|
+
COMPOSE_CMD="${COMPOSE_CMD:-docker compose}"
|
|
124
|
+
|
|
125
|
+
# -----------------------------------------------
|
|
126
|
+
# 3. 检测端口
|
|
127
|
+
# -----------------------------------------------
|
|
128
|
+
step "检测端口 ${RC_PORT}..."
|
|
129
|
+
|
|
130
|
+
if command -v ss &>/dev/null; then
|
|
131
|
+
if ss -tlnp 2>/dev/null | grep -q ":${RC_PORT} "; then
|
|
132
|
+
warn "端口 ${RC_PORT} 已被占用!"
|
|
133
|
+
info "如果是已有的 Rocket.Chat 实例,可以直接使用。"
|
|
134
|
+
info "否则请设置 RC_PORT 环境变量使用其他端口:"
|
|
135
|
+
info " RC_PORT=4000 bash install-rc.sh"
|
|
136
|
+
read -p "继续安装吗?[y/N]: " -r
|
|
137
|
+
if [[ ! "$REPLY" =~ ^[Yy]$ ]]; then
|
|
138
|
+
info "已取消。"
|
|
139
|
+
exit 0
|
|
140
|
+
fi
|
|
141
|
+
else
|
|
142
|
+
success "端口 ${RC_PORT} 可用"
|
|
143
|
+
fi
|
|
144
|
+
elif command -v lsof &>/dev/null; then
|
|
145
|
+
if lsof -i ":${RC_PORT}" &>/dev/null; then
|
|
146
|
+
warn "端口 ${RC_PORT} 可能被占用!"
|
|
147
|
+
else
|
|
148
|
+
success "端口 ${RC_PORT} 可用"
|
|
149
|
+
fi
|
|
150
|
+
else
|
|
151
|
+
info "无法检测端口状态,跳过检测"
|
|
152
|
+
fi
|
|
153
|
+
|
|
154
|
+
# -----------------------------------------------
|
|
155
|
+
# 4. 生成 Docker Compose 配置
|
|
156
|
+
# -----------------------------------------------
|
|
157
|
+
step "创建安装目录 ${INSTALL_DIR}..."
|
|
158
|
+
mkdir -p "${INSTALL_DIR}"
|
|
159
|
+
|
|
160
|
+
step "生成 docker-compose.yml..."
|
|
161
|
+
cat > "${INSTALL_DIR}/docker-compose.yml" << 'COMPOSE_EOF'
|
|
162
|
+
# Auto-generated by install-rc.sh (OpenClaw Rocket.Chat plugin)
|
|
163
|
+
# Do not edit manually unless you know what you're doing
|
|
164
|
+
|
|
165
|
+
services:
|
|
166
|
+
rocketchat:
|
|
167
|
+
image: registry.rocket.chat/rocketchat/rocket.chat:latest
|
|
168
|
+
restart: unless-stopped
|
|
169
|
+
ports:
|
|
170
|
+
- "${RC_PORT:-3000}:3000"
|
|
171
|
+
environment:
|
|
172
|
+
MONGO_URL: "mongodb://mongodb:27017/rocketchat?replicaSet=rs0"
|
|
173
|
+
ROOT_URL: "http://localhost:${RC_PORT:-3000}"
|
|
174
|
+
PORT: 3000
|
|
175
|
+
DEPLOY_METHOD: docker
|
|
176
|
+
OVERWRITE_SETTING_Show_Setup_Wizard: "completed"
|
|
177
|
+
OVERWRITE_SETTING_Accounts_RegistrationForm: "Disabled"
|
|
178
|
+
depends_on:
|
|
179
|
+
- mongodb
|
|
180
|
+
|
|
181
|
+
mongodb:
|
|
182
|
+
image: mongodb/mongodb-community-server:8.2-ubi8
|
|
183
|
+
restart: on-failure
|
|
184
|
+
volumes:
|
|
185
|
+
- mongodb_data:/data/db
|
|
186
|
+
environment:
|
|
187
|
+
MONGODB_REPLICA_SET_NAME: rs0
|
|
188
|
+
MONGODB_PORT_NUMBER: 27017
|
|
189
|
+
MONGODB_INITIAL_PRIMARY_HOST: mongodb
|
|
190
|
+
entrypoint: >
|
|
191
|
+
bash -c "
|
|
192
|
+
mongod --replSet $$MONGODB_REPLICA_SET_NAME --bind_ip_all &
|
|
193
|
+
sleep 2;
|
|
194
|
+
until mongosh --eval \"db.adminCommand('ping')\"; do
|
|
195
|
+
echo 'Waiting for MongoDB...';
|
|
196
|
+
sleep 1;
|
|
197
|
+
done;
|
|
198
|
+
mongosh --eval \"rs.initiate({_id: '$$MONGODB_REPLICA_SET_NAME', members: [{ _id: 0, host: '$$MONGODB_INITIAL_PRIMARY_HOST:$$MONGODB_PORT_NUMBER' }]})\";
|
|
199
|
+
echo 'ReplicaSet initiated';
|
|
200
|
+
wait"
|
|
201
|
+
|
|
202
|
+
volumes:
|
|
203
|
+
mongodb_data:
|
|
204
|
+
COMPOSE_EOF
|
|
205
|
+
|
|
206
|
+
# 写入 .env
|
|
207
|
+
echo "RC_PORT=${RC_PORT}" > "${INSTALL_DIR}/.env"
|
|
208
|
+
|
|
209
|
+
success "配置文件已生成"
|
|
210
|
+
|
|
211
|
+
# -----------------------------------------------
|
|
212
|
+
# 5. 拉取镜像并启动
|
|
213
|
+
# -----------------------------------------------
|
|
214
|
+
step "拉取镜像并启动容器(首次约 2-5 分钟)..."
|
|
215
|
+
cd "${INSTALL_DIR}"
|
|
216
|
+
${COMPOSE_CMD} pull --quiet 2>/dev/null || ${COMPOSE_CMD} pull
|
|
217
|
+
${COMPOSE_CMD} up -d
|
|
218
|
+
|
|
219
|
+
# -----------------------------------------------
|
|
220
|
+
# 6. 等待就绪
|
|
221
|
+
# -----------------------------------------------
|
|
222
|
+
step "等待 Rocket.Chat 启动..."
|
|
223
|
+
|
|
224
|
+
MAX_WAIT=120
|
|
225
|
+
WAITED=0
|
|
226
|
+
INTERVAL=5
|
|
227
|
+
|
|
228
|
+
while [ $WAITED -lt $MAX_WAIT ]; do
|
|
229
|
+
# 尝试访问 /api/v1/info
|
|
230
|
+
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" "http://127.0.0.1:${RC_PORT}/api/v1/info" 2>/dev/null || echo "000")
|
|
231
|
+
|
|
232
|
+
if [ "$HTTP_CODE" = "200" ]; then
|
|
233
|
+
success "Rocket.Chat 已就绪!"
|
|
234
|
+
break
|
|
235
|
+
fi
|
|
236
|
+
|
|
237
|
+
WAITED=$((WAITED + INTERVAL))
|
|
238
|
+
if [ $WAITED -lt $MAX_WAIT ]; then
|
|
239
|
+
step "等待中... (${WAITED}s/${MAX_WAIT}s)"
|
|
240
|
+
sleep $INTERVAL
|
|
241
|
+
fi
|
|
242
|
+
done
|
|
243
|
+
|
|
244
|
+
if [ $WAITED -ge $MAX_WAIT ]; then
|
|
245
|
+
warn "等待超时,Rocket.Chat 可能还在启动中。"
|
|
246
|
+
info "可以手动检查: curl http://127.0.0.1:${RC_PORT}/api/v1/info"
|
|
247
|
+
info "或查看日志: cd ${INSTALL_DIR} && ${COMPOSE_CMD} logs -f rocketchat"
|
|
248
|
+
fi
|
|
249
|
+
|
|
250
|
+
# -----------------------------------------------
|
|
251
|
+
# 7. 获取公网 IP
|
|
252
|
+
# -----------------------------------------------
|
|
253
|
+
step "获取服务器公网 IP..."
|
|
254
|
+
|
|
255
|
+
PUBLIC_IP=""
|
|
256
|
+
# 尝试多个 IP 查询服务
|
|
257
|
+
for url in "https://ifconfig.me" "https://api.ipify.org" "https://icanhazip.com"; do
|
|
258
|
+
PUBLIC_IP=$(curl -s --max-time 5 "$url" 2>/dev/null | tr -d '[:space:]')
|
|
259
|
+
if [[ "$PUBLIC_IP" =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
|
260
|
+
break
|
|
261
|
+
fi
|
|
262
|
+
PUBLIC_IP=""
|
|
263
|
+
done
|
|
264
|
+
|
|
265
|
+
if [ -z "$PUBLIC_IP" ]; then
|
|
266
|
+
warn "无法自动获取公网 IP"
|
|
267
|
+
PUBLIC_IP="<你的公网IP>"
|
|
268
|
+
fi
|
|
269
|
+
|
|
270
|
+
# -----------------------------------------------
|
|
271
|
+
# 8. 完成
|
|
272
|
+
# -----------------------------------------------
|
|
273
|
+
echo ""
|
|
274
|
+
echo "╔══════════════════════════════════════════════════════════╗"
|
|
275
|
+
echo "║ 🎉 Rocket.Chat 安装完成! ║"
|
|
276
|
+
echo "╚══════════════════════════════════════════════════════════╝"
|
|
277
|
+
echo ""
|
|
278
|
+
info "服务器地址: http://${PUBLIC_IP}:${RC_PORT}"
|
|
279
|
+
info "安装目录: ${INSTALL_DIR}"
|
|
280
|
+
echo ""
|
|
281
|
+
info "📌 接下来的步骤:"
|
|
282
|
+
echo ""
|
|
283
|
+
info " 1️⃣ 确保防火墙已放行端口 ${RC_PORT}"
|
|
284
|
+
info " 阿里云: 安全组 → 添加 TCP ${RC_PORT}"
|
|
285
|
+
info " 腾讯云: 防火墙 → 添加 TCP ${RC_PORT}"
|
|
286
|
+
info " Ubuntu: sudo ufw allow ${RC_PORT}/tcp"
|
|
287
|
+
info " CentOS: sudo firewall-cmd --add-port=${RC_PORT}/tcp --permanent && sudo firewall-cmd --reload"
|
|
288
|
+
echo ""
|
|
289
|
+
info " 2️⃣ 回到你的 OpenClaw 机器,运行:"
|
|
290
|
+
echo ""
|
|
291
|
+
echo -e " ${CYAN}openclaw rocketchat setup${NC}"
|
|
292
|
+
echo ""
|
|
293
|
+
info " 选择「连接远程服务器」,输入地址:"
|
|
294
|
+
echo -e " ${GREEN}http://${PUBLIC_IP}:${RC_PORT}${NC}"
|
|
295
|
+
echo ""
|
|
296
|
+
info "🔧 常用管理命令:"
|
|
297
|
+
info " 查看日志: cd ${INSTALL_DIR} && ${COMPOSE_CMD} logs -f"
|
|
298
|
+
info " 停止服务: cd ${INSTALL_DIR} && ${COMPOSE_CMD} stop"
|
|
299
|
+
info " 启动服务: cd ${INSTALL_DIR} && ${COMPOSE_CMD} start"
|
|
300
|
+
info " 重启服务: cd ${INSTALL_DIR} && ${COMPOSE_CMD} restart"
|
|
301
|
+
info " 完全卸载: cd ${INSTALL_DIR} && ${COMPOSE_CMD} down -v"
|
|
302
|
+
echo ""
|
package/openclaw.plugin.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"id": "openclaw-rocketchat",
|
|
3
3
|
"name": "Rocket.Chat",
|
|
4
4
|
"description": "Rocket.Chat channel plugin for OpenClaw — connect via mobile app, ideal for China mainland users",
|
|
5
|
-
"version": "0.
|
|
5
|
+
"version": "0.2.0",
|
|
6
6
|
"channels": ["rocketchat"],
|
|
7
7
|
"configSchema": {
|
|
8
8
|
"type": "object",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openclaw-rocketchat",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Rocket.Chat channel plugin for OpenClaw — connect via mobile app, ideal for China mainland users",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -30,7 +30,8 @@
|
|
|
30
30
|
},
|
|
31
31
|
"files": [
|
|
32
32
|
"dist/",
|
|
33
|
-
"openclaw.plugin.json"
|
|
33
|
+
"openclaw.plugin.json",
|
|
34
|
+
"install-rc.sh"
|
|
34
35
|
],
|
|
35
36
|
"keywords": [
|
|
36
37
|
"openclaw",
|