1 Star 0 Fork 0

OpenCloudOS/web-extra

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
deploy_opneclaw.sh 8.22 KB
一键复制 编辑 原始数据 按行查看 历史
郑尼茨 提交于 2026-02-09 16:01 +08:00 . feat: 支持插件安装选项与配置还原
#!/bin/bash
# OpenClaw 一键部署脚本 (OpenCloudOS 适配版)
set -e # 遇到错误立即退出
# --- 参数解析 ---
# 用法:
# ./deploy_opneclaw.sh # 默认安装全部插件
# ./deploy_opneclaw.sh --skip-plugins # 跳过所有插件安装
# ./deploy_opneclaw.sh --plugins wecom,qq # 只安装企业微信和QQ插件
# 可选插件名: wecom, qq, feishu, dingtalk
SKIP_PLUGINS=false
INSTALL_PLUGINS=()
AVAILABLE_PLUGINS=("wecom" "qq" "feishu" "dingtalk")
while [[ $# -gt 0 ]]; do
case "$1" in
--skip-plugins)
SKIP_PLUGINS=true
shift
;;
--plugins)
if [[ -z "$2" || "$2" == --* ]]; then
echo "错误: --plugins 需要指定插件名,可选: ${AVAILABLE_PLUGINS[*]}"
exit 1
fi
OLD_IFS="$IFS"
IFS=','
for item in $2; do
INSTALL_PLUGINS+=("$item")
done
IFS="$OLD_IFS"
for p in "${INSTALL_PLUGINS[@]}"; do
valid=false
for ap in "${AVAILABLE_PLUGINS[@]}"; do
[[ "$p" == "$ap" ]] && valid=true && break
done
if [[ "$valid" == false ]]; then
echo "错误: 未知插件 '$p',可选: ${AVAILABLE_PLUGINS[*]}"
exit 1
fi
done
shift 2
;;
-h|--help)
echo "用法: $0 [选项]"
echo ""
echo "选项:"
echo " --skip-plugins 跳过所有插件安装"
echo " --plugins <name,...> 只安装指定插件 (逗号分隔)"
echo " 可选: wecom, qq, feishu, dingtalk"
echo " -h, --help 显示帮助信息"
exit 0
;;
*)
echo "未知参数: $1 (使用 -h 查看帮助)"
exit 1
;;
esac
done
# 判断是否需要安装某个插件
should_install_plugin() {
local plugin_name="$1"
[[ "$SKIP_PLUGINS" == true ]] && return 1
[[ ${#INSTALL_PLUGINS[@]} -eq 0 ]] && return 0
local p
for p in "${INSTALL_PLUGINS[@]}"; do
[[ "$p" == "$plugin_name" ]] && return 0
done
return 1
}
# 临时目录清理:脚本异常退出时自动删除临时文件
TMP_DIRS_TO_CLEAN=()
cleanup() {
for dir in "${TMP_DIRS_TO_CLEAN[@]}"; do
[ -d "$dir" ] && rm -rf "$dir"
done
}
trap cleanup EXIT
echo "=========================================="
echo " OpenClaw 一键部署脚本 "
echo "=========================================="
# 检查 curl 是否安装
if ! command -v curl &> /dev/null; then
echo "未检测到 curl,正在尝试安装..."
if command -v dnf &> /dev/null; then
sudo dnf install -y curl
elif command -v yum &> /dev/null; then
sudo yum install -y curl
else
echo "警告: 无法自动安装 curl,请手动安装后重试。"
exit 1
fi
fi
# 检查 git 是否安装
if ! command -v git &> /dev/null; then
echo "未检测到 git,正在尝试安装..."
if command -v dnf &> /dev/null; then
sudo dnf install -y git
elif command -v yum &> /dev/null; then
sudo yum install -y git
else
echo "警告: 无法自动安装 git,请手动安装后重试。"
exit 1
fi
fi
# --- 安装 Node.js ---
echo ""
echo ">>> 检查 Node.js 环境..."
# 检查是否已安装 Node.js 且版本 >= 22
SKIP_NODE_INSTALL=false
if command -v node &> /dev/null; then
CURRENT_NODE_VER=$(node -v | sed 's/v//' | cut -d'.' -f1)
if [ "$CURRENT_NODE_VER" -ge 22 ] 2>/dev/null; then
echo "检测到 Node.js v$CURRENT_NODE_VER 已安装 (>= 22),跳过安装。"
SKIP_NODE_INSTALL=true
else
echo "当前 Node.js 版本 v$CURRENT_NODE_VER 低于 22,将进行升级..."
fi
fi
if [ "$SKIP_NODE_INSTALL" = false ]; then
echo ">>> 正在安装 Node.js 环境..."
# 检查 NVM 是否已安装
if [ -d "$HOME/.nvm" ]; then
echo "检测到 NVM 已安装,跳过 NVM 安装步骤。"
else
echo "正在安装 NVM..."
# 尝试使用官方脚本安装
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
fi
# 加载 NVM 环境 (确保在当前脚本中可用)
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
if ! command -v nvm &> /dev/null; then
echo "错误: NVM 加载失败,请检查安装日志。"
exit 1
fi
echo "正在安装 Node.js v24..."
nvm install 24
nvm use 24
nvm alias default 24
fi
# 验证版本
NODE_VER=$(node -v)
NPM_VER=$(npm -v)
echo "Node.js 版本: $NODE_VER"
echo "npm 版本: $NPM_VER"
# --- 安装 OpenClaw ---
echo ""
echo ">>> 正在安装 OpenClaw..."
# 配置 git 加速 (针对 OpenCloudOS/国内环境优化)
# 使用 ghfast.top 加速 GitHub HTTPS 访问
# 先保存原始配置,安装完后还原
GIT_INSTEADOF_KEY='url."https://ghfast.top/https://github.com/".insteadOf'
GIT_ORIGINAL_INSTEADOF=$(git config --global --get "$GIT_INSTEADOF_KEY" 2>/dev/null || echo "")
echo "配置 Git 使用 HTTPS 加速代理 (ghfast.top)..."
git config --global "$GIT_INSTEADOF_KEY" ssh://git@github.com/
# 安装 OpenClaw
echo "通过 npm 全局安装 OpenClaw (已屏蔽非必要警告)..."
npm install -g openclaw --loglevel error
# 验证安装
if command -v openclaw &> /dev/null; then
echo "OpenClaw 安装成功!"
openclaw --version
else
echo "错误: OpenClaw 安装失败。"
exit 1
fi
# --- 安装插件 ---
if [[ "$SKIP_PLUGINS" == true ]]; then
echo ""
echo ">>> 已跳过所有插件安装 (--skip-plugins)"
elif [[ ${#INSTALL_PLUGINS[@]} -gt 0 ]]; then
echo ""
echo ">>> 将安装指定插件: ${INSTALL_PLUGINS[*]}"
else
echo ""
echo ">>> 正在安装全部插件..."
fi
# 安装企业微信插件
if should_install_plugin "wecom"; then
echo "正在安装企业微信插件..."
if ! openclaw plugins install @marshulll/openclaw-wecom; then
echo "警告: 企业微信插件安装失败,请稍后手动安装: openclaw plugins install @marshulll/openclaw-wecom"
fi
fi
# 安装QQ相关插件
if should_install_plugin "qq"; then
echo "正在安装QQ插件..."
if ! openclaw plugins install https://github.com/sliverp/qqbot.git 2>/dev/null; then
echo "GitHub 直连失败,尝试使用加速链接..."
QQBOT_TMP_DIR=$(mktemp -d)
TMP_DIRS_TO_CLEAN+=("$QQBOT_TMP_DIR")
git clone https://ghfast.top/https://github.com/sliverp/qqbot.git "$QQBOT_TMP_DIR"
openclaw plugins install "$QQBOT_TMP_DIR"
rm -rf "$QQBOT_TMP_DIR"
fi
echo "QQ 插件安装完成。"
fi
# 安装飞书插件
if should_install_plugin "feishu"; then
echo "正在安装飞书插件..."
if ! openclaw plugins install @m1heng-clawd/feishu; then
echo "警告: 飞书插件安装失败,请稍后手动安装: openclaw plugins install @m1heng-clawd/feishu"
fi
fi
# 安装钉钉插件
if should_install_plugin "dingtalk"; then
echo "正在安装钉钉插件..."
if ! openclaw plugins install https://github.com/soimy/clawdbot-channel-dingtalk.git 2>/dev/null; then
echo "GitHub 直连失败,尝试使用加速链接..."
DINGTALK_TMP_DIR=$(mktemp -d)
TMP_DIRS_TO_CLEAN+=("$DINGTALK_TMP_DIR")
git clone https://ghfast.top/https://github.com/soimy/clawdbot-channel-dingtalk.git "$DINGTALK_TMP_DIR"
openclaw plugins install "$DINGTALK_TMP_DIR"
rm -rf "$DINGTALK_TMP_DIR"
fi
echo "钉钉插件安装完成。"
fi
# 还原 git 加速配置
echo "还原 Git 代理配置..."
if [[ -n "$GIT_ORIGINAL_INSTEADOF" ]]; then
git config --global "$GIT_INSTEADOF_KEY" "$GIT_ORIGINAL_INSTEADOF"
else
git config --global --unset "$GIT_INSTEADOF_KEY" || true
fi
# --- 交互式初始化 ---
echo ""
echo "=========================================="
echo " 安装完成!"
echo "=========================================="
echo ""
echo "请运行以下命令完成初始化配置:"
echo ""
echo " openclaw onboard"
echo ""
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/OpenCloudOS/web-extra.git
git@gitee.com:OpenCloudOS/web-extra.git
OpenCloudOS
web-extra
web-extra
master

搜索帮助