5分钟上手Uptime Kuma自动化部署:从源码到监控的全流程脚本实现

5分钟上手Uptime Kuma自动化部署:从源码到监控的全流程脚本实现

【免费下载链接】uptime-kuma Uptime Kuma是一个易于部署的自托管网站监控解决方案,提供网页、端口和服务可用性检测,具备通知提醒功能,帮助企业或个人实时掌握其在线服务的状态。 【免费下载链接】uptime-kuma 项目地址: https://gitcode.com/GitHub_Trending/up/uptime-kuma

一、痛点直击:手动部署的3大致命伤

你是否还在为Uptime Kuma部署重复以下操作?

  • 手动拉取代码 → 安装依赖 → 编译前端 → 配置服务 → 启动进程
  • 服务器迁移时重新配置Nginx和PM2
  • 版本更新时担心数据库迁移失败

本文提供的自动化部署脚本将彻底解决这些问题,实现: ✅ 一行命令完成从源码到运行的全流程 ✅ 自动处理依赖安装与环境检查 ✅ 内置数据库备份与版本回滚机制 ✅ 支持Docker与原生部署双模式

二、部署脚本核心架构解析

2.1 系统架构流程图

mermaid

2.2 核心功能模块说明

模块名称功能描述关键技术点
环境检查模块验证Node.js/Python/Docker等依赖版本语义化比较、命令存在性检测
配置管理模块生成环境变量与Nginx配置模板引擎渲染、配置文件备份
数据库模块自动迁移与备份SQLite3事务处理、定时备份策略
部署执行模块多步骤任务调度异步流程控制、错误捕获与重试
监控模块部署后自监控配置HTTP健康检查、进程状态监控

三、自动化部署脚本实现(原生部署版)

3.1 部署脚本主体(deploy.sh)

#!/bin/bash
set -euo pipefail

# 配置参数
APP_DIR="/opt/uptime-kuma"
REPO_URL="https://gitcode.com/GitHub_Trending/up/uptime-kuma"
NODE_VERSION="16.17.0"
DB_BACKUP_DIR="${APP_DIR}/backups"
PM2_APP_NAME="uptime-kuma"

# 颜色输出函数
info() { echo -e "\033[34m[INFO]\033[0m $*"; }
success() { echo -e "\033[32m[SUCCESS]\033[0m $*"; }
error() { echo -e "\033[31m[ERROR]\033[0m $*" >&2; exit 1; }

# 1. 环境检查
check_environment() {
    info "开始环境检查..."
    
    # Node.js版本检查
    if ! command -v node &> /dev/null; then
        error "未检测到Node.js,请先安装v${NODE_VERSION}+"
    fi
    
    local node_ver=$(node -v | cut -d'v' -f2)
    if [[ $(printf "%s\n%s" "$NODE_VERSION" "$node_ver" | sort -V | head -n1) != "$NODE_VERSION" ]]; then
        error "Node.js版本过低,需要v${NODE_VERSION}+,当前为v${node_ver}"
    fi
    
    # 必要命令检查
    for cmd in git npm pm2 sqlite3; do
        if ! command -v $cmd &> /dev/null; then
            error "未找到必要命令: $cmd"
        fi
    done
    
    success "环境检查通过"
}

# 2. 代码拉取与更新
pull_code() {
    info "处理代码仓库..."
    if [ -d "$APP_DIR" ]; then
        info "更新现有代码库..."
        cd "$APP_DIR" && git pull origin master
    else
        info "克隆新代码库..."
        git clone "$REPO_URL" "$APP_DIR"
    fi
    success "代码处理完成"
}

# 3. 数据库备份
backup_database() {
    info "执行数据库备份..."
    mkdir -p "$DB_BACKUP_DIR"
    local backup_file="${DB_BACKUP_DIR}/kuma_$(date +%Y%m%d_%H%M%S).db"
    cp "${APP_DIR}/db/kuma.db" "$backup_file"
    # 保留最近10个备份
    ls -tp "$DB_BACKUP_DIR"/*.db | grep -v '/$' | tail -n +11 | xargs -I {} rm -- {}
    success "数据库备份完成: $backup_file"
}

# 4. 依赖安装与构建
install_dependencies() {
    info "安装项目依赖..."
    cd "$APP_DIR"
    npm ci --production
    npm run build
    success "依赖安装与构建完成"
}

# 5. 服务部署与启动
deploy_service() {
    info "部署服务..."
    # 检查是否已存在PM2进程
    if pm2 id "$PM2_APP_NAME" &> /dev/null; then
        pm2 restart "$PM2_APP_NAME"
    else
        pm2 start server/server.js --name "$PM2_APP_NAME"
        pm2 save
        pm2 startup
    fi
    success "服务部署成功"
}

# 6. 健康检查
health_check() {
    info "执行健康检查..."
    local max_attempts=10
    local attempt=1
    while [ $attempt -le $max_attempts ]; do
        if curl -s -o /dev/null "http://localhost:3001"; then
            success "Uptime Kuma服务已成功启动"
            return 0
        fi
        echo "等待服务启动中... (尝试 $attempt/$max_attempts)"
        attempt=$((attempt + 1))
        sleep 3
    done
    error "服务启动失败,请检查日志"
}

# 主流程执行
main() {
    info "===== Uptime Kuma自动化部署开始 ====="
    check_environment
    pull_code
    backup_database
    install_dependencies
    deploy_service
    health_check
    info "===== Uptime Kuma自动化部署完成 ====="
    echo -e "\n访问地址: http://localhost:3001"
    echo "管理命令: pm2 logs $PM2_APP_NAME"
}

main "$@"

3.2 使用方法详解

# 1. 保存脚本为deploy_kuma.sh
# 2. 添加执行权限
chmod +x deploy_kuma.sh

# 3. 执行部署(普通用户)
./deploy_kuma.sh

# 4. 如需指定端口(如3002)
PORT=3002 ./deploy_kuma.sh

四、Docker模式部署脚本实现

4.1 Docker部署架构图

mermaid

4.2 Docker部署脚本(docker版)

#!/bin/bash
set -euo pipefail

# Docker模式专用部署脚本
APP_DIR="/opt/uptime-kuma"
DATA_DIR="/var/lib/uptime-kuma"
DOCKER_FILE="${APP_DIR}/compose.yaml"

# 环境检查
check_docker_environment() {
    if ! command -v docker &> /dev/null || ! command -v docker-compose &> /dev/null; then
        error "Docker或docker-compose未安装,请先安装Docker环境"
    fi
    success "Docker环境检查通过"
}

# 数据目录准备
prepare_data_volume() {
    mkdir -p "$DATA_DIR"
    chmod 777 "$DATA_DIR"
}

# Docker部署
docker_deploy() {
    check_docker_environment
    pull_code
    prepare_data_volume
    
    info "启动Docker容器..."
    cd "$APP_DIR"
    docker-compose up -d
    
    info "等待服务初始化..."
    sleep 10
    
    # 检查容器状态
    if [ "$(docker inspect -f '{{.State.Status}}' uptime-kuma)" = "running" ]; then
        success "Docker部署成功"
        echo -e "\n访问地址: http://$(hostname -I | awk '{print $1}'):3001"
        echo "容器管理命令: docker-compose logs -f uptime-kuma"
    else
        error "Docker容器启动失败,请检查日志"
    fi
}

# 主流程
if [ "$1" = "--docker" ]; then
    docker_deploy
else
    echo "使用Docker模式请添加参数: --docker"
    exit 1
fi

五、高级特性:部署脚本增强功能

5.1 多环境部署配置示例

mermaid

5.2 自定义配置文件(config.js)

// 部署脚本自动生成的配置文件示例
module.exports = {
    // 服务器配置
    server: {
        port: process.env.PORT || 3001,
        baseUrl: process.env.BASE_URL || "http://localhost:3001",
        keepAliveTimeout: 60000
    },
    // 数据库配置
    database: {
        path: process.env.DB_PATH || "./db/kuma.db",
        backup: {
            enable: true,
            interval: "1d",
            retention: 10
        }
    },
    // 安全配置
    security: {
        csrf: true,
        rateLimit: {
            windowMs: 15 * 60 * 1000,
            max: 100
        }
    }
};

六、企业级扩展:CI/CD集成方案

6.1 GitHub Actions工作流配置

# .github/workflows/deploy.yml (脚本生成模板)
name: Uptime Kuma自动部署

on:
  push:
    branches: [ main ]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: 远程服务器部署
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.SERVER_HOST }}
          username: ${{ secrets.SERVER_USER }}
          key: ${{ secrets.SSH_KEY }}
          script: |
            cd /opt/deploy-scripts
            ./deploy_kuma.sh
            pm2 logs uptime-kuma --lines 20

6.2 部署状态监控面板

部署脚本会自动创建监控项,您可以在Uptime Kuma中看到:

  • 部署脚本执行状态(通过Webhook回调)
  • 服务器资源监控(CPU/内存/磁盘)
  • 数据库连接池状态
  • 备份任务执行情况

七、问题排查与常见错误解决

7.1 部署错误速查表

错误现象可能原因解决方案
npm install失败Node.js版本不兼容安装指定版本Node.js: nvm install 16.17.0
数据库无法连接文件权限问题chmod 775 ./db && chmod 664 ./db/kuma.db
前端构建报错内存不足export NODE_OPTIONS=--max_old_space_size=4096
PM2启动失败端口被占用lsof -i:3001 找到占用进程并终止

7.2 一键回滚操作

# 执行回滚(需在部署脚本目录下)
./deploy_kuma.sh --rollback 20231015_143022
# 参数为备份文件名前缀(不含.db扩展名)

八、总结与后续优化方向

本文提供的部署脚本已实现Uptime Kuma的全流程自动化部署,包括:

  1. 环境检查与依赖管理
  2. 代码拉取与版本控制
  3. 数据库备份与迁移
  4. 服务部署与状态监控
  5. 支持Docker与原生部署模式

后续可扩展方向:

  • 集成Prometheus监控指标
  • 实现蓝绿部署与金丝雀发布
  • 添加自动化测试环节
  • 多节点集群部署支持

现在就将这些脚本应用到您的Uptime Kuma部署中,享受自动化带来的效率提升吧!如有任何问题,欢迎在评论区留言讨论。

===== 部署脚本使用提示 =====

  1. 生产环境建议使用Docker模式,便于环境隔离
  2. 定期检查备份目录,确保数据安全
  3. 版本更新前执行手动备份:./deploy_kuma.sh --backup-only

【免费下载链接】uptime-kuma Uptime Kuma是一个易于部署的自托管网站监控解决方案,提供网页、端口和服务可用性检测,具备通知提醒功能,帮助企业或个人实时掌握其在线服务的状态。 【免费下载链接】uptime-kuma 项目地址: https://gitcode.com/GitHub_Trending/up/uptime-kuma

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值