#!/usr/bin/env bash # # 云端浏览器一键部署脚本 # 安装路径: /opt/cloud-browser # 运行用户: root # 默认端口: 32450 # 默认账号: admin / admin # set -euo pipefail 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; 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; 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() { local retries=30 log "等待服务启动..." while [[ $retries -gt 0 ]]; do if curl -sf "http://127.0.0.1:${APP_PORT}/api/health" &>/dev/null; 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() { local ip 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 "$@"