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 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 (Docker will be auto-guided if not present)
239
- - A server with a **public IP** (Alibaba Cloud, AWS, etc.), or an existing remote Rocket.Chat server
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: Install Plugin + Deploy Rocket.Chat
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
- openclaw plugins install openclaw-rocketchat
246
- openclaw rocketchat setup
247
+ bash install-rc.sh
247
248
  ```
248
249
 
249
- First, choose a deployment mode:
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
- Choose deployment mode:
255
- 1) Local (Docker) — RC and OpenClaw on the same machine
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
- > Option 1 works for most users (everything on one machine).
261
- > Option 2 is for when OpenClaw is on a home LAN, server is low-spec, or your company already has RC.
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
- **After choosing 1 (local), you'll see:**
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
- Port [default 3000]: 3000
284
+ > Custom port: `RC_PORT=4000 bash install-rc.sh`
285
+ > No Docker? The script auto-installs it.
272
286
 
273
- Create your phone login account
274
- Username: zhangsan
275
- Password: ********
276
- Confirm: ********
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
- ║ 🎉 Deployment complete!
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
- **You only type 3 things: port, username, password. Everything else is automatic.**
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/) 已安装(Docker 未安装时会自动引导安装)
239
- - 一台有**公网 IP** 的服务器(阿里云、腾讯云、AWS 等均可),或者已有远程 Rocket.Chat 服务器
238
+ - [OpenClaw](https://docs.openclaw.ai/) 已安装
239
+ - 一台有**公网 IP** 的服务器(阿里云、腾讯云、AWS 等均可)
240
240
  - 防火墙/安全组已放行 **3000 端口**(或你自定义的端口)
241
241
 
242
- ### 第一步:安装插件 + 部署 Rocket.Chat
242
+ ### 第一步:部署 Rocket.Chat
243
+
244
+ 在你的服务器上运行一键安装脚本(本地或远程 VPS 都是同一条命令):
243
245
 
244
246
  ```bash
245
- openclaw plugins install openclaw-rocketchat
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
- 1) 本地部署(Docker)—— RC 和 OpenClaw 在同一台机器
256
- 2) 连接远程服务器 —— RC 已部署在另一台公网服务器
257
- 请选择: 1
256
+ 你会看到:
257
+
258
258
  ```
259
+ ╔══════════════════════════════════════════════════╗
260
+ ║ Rocket.Chat 一键安装(OpenClaw 远程部署专用) ║
261
+ ╚══════════════════════════════════════════════════╝
259
262
 
260
- > 1 适合大多数用户(一台机器搞定一切)。
261
- > 2 适合 OpenClaw 在家庭内网、服务器配置不足、或公司已有 RC 实例的情况。
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
- **选 1(本地部署)后你会看到:**
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
- 端口 [默认 3000]: 3000
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
- **你只需要输入 3 样东西:端口、用户名、密码。其他全部自动。**
340
+ **两步搞定:先部署 RC,再配置插件。**
305
341
 
306
342
  ### 第二步:添加 AI 机器人
307
343
 
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"AA+BA,wBAAsB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgCpE"}
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
- // 首次部署 Rocket.Chat + 创建管理员 + 创建用户 + 写入配置
4
- // 支持两种模式:本地 Docker 部署 / 连接远程 RC 服务器
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, getDockerDir, } from "../config/credentials.js";
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
- // 3.1 生成 Docker 配置
138
- step("生成 Docker 配置...");
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("远程模式:连接已部署在其他服务器上的 Rocket.Chat。");
199
- info("适用场景:");
200
- info(" - OpenClaw 在家庭内网,RC 在公网 VPS");
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("远程 Rocket.Chat 服务器地址\n (例如 http://123.45.67.89:3000 https://chat.example.com)");
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
- const version = await rc.getServerVersion();
226
- success(`连接成功!Rocket.Chat 版本: ${version}`);
52
+ rcVersion = await rc.getServerVersion();
53
+ success(`连接成功!Rocket.Chat 版本: ${rcVersion}`);
227
54
  }
228
- catch (err) {
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. 如果 OpenClaw 在内网,确保能访问公网地址");
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
- info("是否需要创建手机登录账号?");
288
- info("(如果你已有账号,可以跳过这步)");
289
- console.log("");
290
- const createAccount = await confirm("创建手机登录账号?");
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
- port = new URL(cleanUrl).port ? parseInt(new URL(cleanUrl).port, 10) : (cleanUrl.startsWith("https") ? 443 : 80);
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
- const username = await ask(" 用户名");
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, port) {
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
- if (port > 0) {
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("📱 手机操作:");
@@ -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 ""
@@ -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.1.4",
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.1.4",
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",