feat: install.sh 预装 ttyd,frpc.js 去掉运行时下载

install.sh:
- 移除系统自带 ttyd 包(避免与 clawd 托管的 ttyd 端口冲突)
- 安装阶段下载 ttyd 1.7.7 到 /etc/clawd/ttyd,自动检测 arch
- 下载失败时给出提示和手动下载地址

frpc.js:
- startTtyd() 不再尝试运行时下载,binary 不存在时报错提示重跑 install.sh
- pkill 改为杀所有 ttyd 进程(pkill -x ttyd),不限路径,
  避免系统自带 ttyd 占用 7681 端口导致 clawd 的 ttyd 启动失败

Made-with: Cursor
This commit is contained in:
stswangzhiping
2026-04-04 18:16:07 +08:00
parent 46dae37079
commit 3fe5586613
2 changed files with 38 additions and 9 deletions

View File

@@ -101,22 +101,18 @@ async function downloadTtyd() {
}
/**
* 启动 ttyd如未安装先下载)。
* 启动 ttyd由 install.sh 预装到 TTYD_BIN)。
* ttyd 绑定 127.0.0.1:7681供 frpc 代理。
*/
async function startTtyd() {
if (!fs.existsSync(TTYD_BIN)) {
try {
await downloadTtyd();
} catch (e) {
log.warn('ttyd', '下载失败:', e.message);
return false;
}
log.warn('ttyd', `未找到 ttyd${TTYD_BIN}),请重新运行 install.sh`);
return false;
}
// 终止旧进程
// 终止所有 ttyd 进程(包括系统自带的,避免端口冲突)
try {
execSync(`pkill -f "${TTYD_BIN}"`, { timeout: 3000 });
execSync('pkill -x ttyd 2>/dev/null; pkill -x ttyd.aarch64 2>/dev/null; true', { timeout: 3000, shell: true });
await new Promise(r => setTimeout(r, 500));
} catch (_) {}