b9ee546bc1
Co-authored-by: Cursor <cursoragent@cursor.com>
126 lines
3.1 KiB
Bash
126 lines
3.1 KiB
Bash
#!/usr/bin/env bash
|
|
#
|
|
# 云端浏览器一键部署脚本
|
|
# 安装路径: /opt/cloud-browser
|
|
# 运行用户: root
|
|
# 默认端口: 32450
|
|
# 默认账号: admin / admin
|
|
#
|
|
set -eu
|
|
|
|
INSTALL_DIR="/opt/cloud-browser"
|
|
REPO_URL="https://git.bz121.com/dekun/cloud-browser.git"
|
|
APP_PORT="32450"
|
|
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m'
|
|
|
|
log() { echo -e "${GREEN}[INFO]${NC} $*"; }
|
|
warn() { echo -e "${YELLOW}[WARN]${NC} $*"; }
|
|
err() { echo -e "${RED}[ERROR]${NC} $*" >&2; }
|
|
|
|
if [ "$(id -u)" -ne 0 ]; then
|
|
err "请使用 root 用户运行此脚本"
|
|
exit 1
|
|
fi
|
|
|
|
install_docker() {
|
|
if command -v docker >/dev/null 2>&1; then
|
|
log "Docker 已安装: $(docker --version)"
|
|
return
|
|
fi
|
|
warn "未检测到 Docker,正在安装..."
|
|
curl -fsSL https://get.docker.com | sh
|
|
systemctl enable docker
|
|
systemctl start docker
|
|
log "Docker 安装完成"
|
|
}
|
|
|
|
install_compose() {
|
|
if docker compose version >/dev/null 2>&1; then
|
|
log "Docker Compose 已就绪"
|
|
return
|
|
fi
|
|
err "Docker Compose 不可用,请手动安装后重试"
|
|
exit 1
|
|
}
|
|
|
|
clone_or_update() {
|
|
if [ -d "${INSTALL_DIR}/.git" ]; then
|
|
log "更新代码: ${INSTALL_DIR}"
|
|
git -C "${INSTALL_DIR}" pull --rebase
|
|
else
|
|
log "克隆代码到 ${INSTALL_DIR}"
|
|
mkdir -p "$(dirname "${INSTALL_DIR}")"
|
|
git clone "${REPO_URL}" "${INSTALL_DIR}"
|
|
fi
|
|
}
|
|
|
|
setup_env() {
|
|
cd "${INSTALL_DIR}"
|
|
if [ ! -f .env ]; then
|
|
cp .env.example .env
|
|
log "已创建 .env 配置文件"
|
|
fi
|
|
mkdir -p data
|
|
chmod 700 data
|
|
}
|
|
|
|
start_service() {
|
|
cd "${INSTALL_DIR}"
|
|
log "构建并启动容器..."
|
|
docker compose up -d --build
|
|
}
|
|
|
|
wait_health() {
|
|
retries=30
|
|
log "等待服务启动..."
|
|
while [ "$retries" -gt 0 ]; do
|
|
if curl -sf "http://127.0.0.1:${APP_PORT}/api/health" >/dev/null 2>&1; then
|
|
log "服务已就绪"
|
|
return 0
|
|
fi
|
|
retries=$((retries - 1))
|
|
sleep 2
|
|
done
|
|
err "服务启动超时,请检查日志: docker compose -f ${INSTALL_DIR}/docker-compose.yml logs -f app"
|
|
exit 1
|
|
}
|
|
|
|
print_summary() {
|
|
ip=$(curl -s --max-time 3 ifconfig.me 2>/dev/null || hostname -I 2>/dev/null | awk '{print $1}' || echo "YOUR_SERVER_IP")
|
|
echo ""
|
|
echo "=========================================="
|
|
echo " 云端浏览器部署完成"
|
|
echo "=========================================="
|
|
echo " 访问地址: http://${ip}:${APP_PORT}"
|
|
echo " 默认账号: admin"
|
|
echo " 默认密码: admin"
|
|
echo " 安装目录: ${INSTALL_DIR}"
|
|
echo ""
|
|
echo " 登录后请立即修改用户名和密码"
|
|
echo " 反向代理请自行在宝塔/Nginx 中配置"
|
|
echo ""
|
|
echo " 常用命令:"
|
|
echo " 查看日志: cd ${INSTALL_DIR} && docker compose logs -f app"
|
|
echo " 重启服务: cd ${INSTALL_DIR} && docker compose restart"
|
|
echo " 停止服务: cd ${INSTALL_DIR} && docker compose down"
|
|
echo " 更新部署: bash ${INSTALL_DIR}/deploy.sh"
|
|
echo "=========================================="
|
|
}
|
|
|
|
main() {
|
|
log "开始部署云端浏览器..."
|
|
install_docker
|
|
install_compose
|
|
clone_or_update
|
|
setup_env
|
|
start_service
|
|
wait_health
|
|
print_summary
|
|
}
|
|
|
|
main "$@"
|