f41f945fe0
- bilibili-short-to-long.sh: B站短链接转长链接工具 - 支持短链接、BV号、AV号多种格式 - 自动清理URL中的tracking参数 - 友好的输出格式 - install-browser-for-openclaw.sh: OpenClaw浏览器环境一键安装脚本 - 支持Ubuntu/Debian/CentOS - 自动安装Chromium浏览器 - 配置OpenClaw Gateway
253 lines
6.1 KiB
Bash
Executable File
253 lines
6.1 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
# ============================================================================
|
||
# OpenClaw浏览器环境一键安装脚本
|
||
# ============================================================================
|
||
# 用途:在Ubuntu/Debian服务器上安装Chromium浏览器,供OpenClaw Gateway使用
|
||
# 适用场景:无桌面环境的服务器,需要浏览器进行自动化操作
|
||
# ============================================================================
|
||
|
||
set -e # 遇到错误立即退出
|
||
|
||
# 颜色输出
|
||
RED='\033[0;31m'
|
||
GREEN='\033[0;32m'
|
||
YELLOW='\033[1;33m'
|
||
NC='\033[0m' # No Color
|
||
|
||
# 日志函数
|
||
log_info() {
|
||
echo -e "${GREEN}[INFO]${NC} $1"
|
||
}
|
||
|
||
log_warn() {
|
||
echo -e "${YELLOW}[WARN]${NC} $1"
|
||
}
|
||
|
||
log_error() {
|
||
echo -e "${RED}[ERROR]${NC} $1"
|
||
}
|
||
|
||
# 检查是否为root用户
|
||
check_root() {
|
||
if [ "$EUID" -ne 0 ]; then
|
||
log_error "请使用sudo运行此脚本: sudo $0"
|
||
exit 1
|
||
fi
|
||
}
|
||
|
||
# 检测系统
|
||
detect_os() {
|
||
if [ -f /etc/os-release ]; then
|
||
. /etc/os-release
|
||
OS=$ID
|
||
OS_VERSION=$VERSION_ID
|
||
else
|
||
log_error "无法检测操作系统类型"
|
||
exit 1
|
||
fi
|
||
|
||
log_info "检测到系统: $OS $OS_VERSION"
|
||
}
|
||
|
||
# 检查snap是否可用
|
||
check_snap() {
|
||
if command -v snap &> /dev/null; then
|
||
log_info "snap已安装"
|
||
return 0
|
||
else
|
||
log_warn "snap未安装"
|
||
return 1
|
||
fi
|
||
}
|
||
|
||
# 安装snap
|
||
install_snap() {
|
||
log_info "正在安装snap..."
|
||
|
||
case $OS in
|
||
ubuntu|debian)
|
||
apt update
|
||
apt install -y snapd
|
||
;;
|
||
centos|rhel|fedora)
|
||
yum install -y snapd
|
||
ln -s /var/lib/snapd/snap /snap
|
||
;;
|
||
*)
|
||
log_error "不支持的操作系统: $OS"
|
||
exit 1
|
||
;;
|
||
esac
|
||
|
||
# 等待snapd启动
|
||
log_info "等待snapd启动..."
|
||
sleep 5
|
||
|
||
# 检查snap是否安装成功
|
||
if command -v snap &> /dev/null; then
|
||
log_info "snap安装成功"
|
||
else
|
||
log_error "snap安装失败"
|
||
exit 1
|
||
fi
|
||
}
|
||
|
||
# 安装Chromium(通过snap)
|
||
install_chromium_snap() {
|
||
log_info "正在通过snap安装Chromium..."
|
||
|
||
# 安装Chromium
|
||
snap install chromium --classic
|
||
|
||
# 等待安装完成
|
||
log_info "等待Chromium安装完成..."
|
||
sleep 10
|
||
|
||
# 验证安装
|
||
if snap list | grep -q chromium; then
|
||
log_info "Chromium安装成功"
|
||
|
||
# 显示Chromium路径
|
||
CHROMIUM_PATH=$(which chromium 2>/dev/null || echo "/snap/bin/chromium")
|
||
log_info "Chromium路径: $CHROMIUM_PATH"
|
||
|
||
return 0
|
||
else
|
||
log_error "Chromium安装失败"
|
||
return 1
|
||
fi
|
||
}
|
||
|
||
# 安装Chromium(通过apt,备选方案)
|
||
install_chromium_apt() {
|
||
log_info "尝试通过apt安装Chromium..."
|
||
|
||
case $OS in
|
||
ubuntu|debian)
|
||
apt update
|
||
apt install -y chromium-browser
|
||
;;
|
||
*)
|
||
log_error "不支持的操作系统: $OS"
|
||
return 1
|
||
;;
|
||
esac
|
||
|
||
# 验证安装
|
||
if command -v chromium-browser &> /dev/null || command -v chromium &> /dev/null; then
|
||
log_info "Chromium安装成功"
|
||
return 0
|
||
else
|
||
log_error "Chromium安装失败"
|
||
return 1
|
||
fi
|
||
}
|
||
|
||
# 配置OpenClaw Gateway使用Chromium
|
||
configure_openclaw() {
|
||
log_info "配置OpenClaw Gateway..."
|
||
|
||
# 检查OpenClaw配置文件
|
||
OPENCLAW_CONFIG="$HOME/.openclaw/openclaw.json"
|
||
|
||
if [ ! -f "$OPENCLAW_CONFIG" ]; then
|
||
log_warn "未找到OpenClaw配置文件: $OPENCLAW_CONFIG"
|
||
log_info "跳过Gateway配置"
|
||
return 0
|
||
fi
|
||
|
||
# 获取Chromium路径
|
||
CHROMIUM_PATH=$(which chromium 2>/dev/null || echo "/snap/bin/chromium")
|
||
|
||
# 提示用户可能需要更新配置
|
||
log_info "Chromium已安装,路径: $CHROMIUM_PATH"
|
||
log_info "如果OpenClaw Gateway无法自动检测,请手动配置:"
|
||
echo " executablePath: \"$CHROMIUM_PATH\""
|
||
echo " headless: true"
|
||
echo " noSandbox: true"
|
||
}
|
||
|
||
# 测试Chromium是否可用
|
||
test_chromium() {
|
||
log_info "测试Chromium是否可用..."
|
||
|
||
CHROMIUM_CMD=$(which chromium 2>/dev/null || which chromium-browser 2>/dev/null || echo "/snap/bin/chromium")
|
||
|
||
if $CHROMIUM_CMD --version &> /dev/null; then
|
||
VERSION=$($CHROMIUM_CMD --version)
|
||
log_info "Chromium版本: $VERSION"
|
||
return 0
|
||
else
|
||
log_warn "Chromium可能需要图形库,无法显示版本(在无头环境中是正常的)"
|
||
return 0
|
||
fi
|
||
}
|
||
|
||
# 重启OpenClaw Gateway
|
||
restart_gateway() {
|
||
log_info "重启OpenClaw Gateway..."
|
||
|
||
if command -v openclaw &> /dev/null; then
|
||
openclaw gateway restart
|
||
log_info "OpenClaw Gateway已重启"
|
||
else
|
||
log_warn "未找到openclaw命令,请手动重启Gateway"
|
||
fi
|
||
}
|
||
|
||
# 主函数
|
||
main() {
|
||
log_info "========================================"
|
||
log_info "OpenClaw浏览器环境安装脚本"
|
||
log_info "========================================"
|
||
|
||
check_root
|
||
detect_os
|
||
|
||
# 安装snap(如果需要)
|
||
if ! check_snap; then
|
||
install_snap
|
||
fi
|
||
|
||
# 尝试安装Chromium
|
||
if install_chromium_snap; then
|
||
log_info "Chromium安装成功(snap方式)"
|
||
else
|
||
log_warn "snap安装失败,尝试apt方式..."
|
||
if install_chromium_apt; then
|
||
log_info "Chromium安装成功(apt方式)"
|
||
else
|
||
log_error "所有安装方式都失败了"
|
||
exit 1
|
||
fi
|
||
fi
|
||
|
||
# 测试Chromium
|
||
test_chromium
|
||
|
||
# 配置OpenClaw
|
||
configure_openclaw
|
||
|
||
# 询问是否重启Gateway
|
||
read -p "是否立即重启OpenClaw Gateway?(y/n) " -n 1 -r
|
||
echo
|
||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||
restart_gateway
|
||
fi
|
||
|
||
log_info "========================================"
|
||
log_info "安装完成!"
|
||
log_info "========================================"
|
||
log_info "Chromium已安装并可以供OpenClaw使用"
|
||
log_info ""
|
||
log_info "验证方法:"
|
||
log_info " 1. 运行: openclaw status"
|
||
log_info " 2. 检查浏览器状态"
|
||
log_info " 3. 使用browser工具测试"
|
||
log_info "========================================"
|
||
}
|
||
|
||
# 运行主函数
|
||
main "$@"
|