Initial_commit_SecMPS_v2

This commit is contained in:
2026-05-15 23:22:48 +08:00
commit 23ea4fe05f
13830 changed files with 298675 additions and 0 deletions

View File

@@ -0,0 +1,107 @@
#!/bin/bash
# Docker 离线安装脚本ARM64
# 适用于统信UOS20 / 龙蜥 / 欧拉 / Debian ARM64
set -e
DOCKER_VERSION="27.5.1"
COMPOSE_VERSION="2.29.1"
INSTALL_DIR="/usr/bin"
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
echo -e "${GREEN}========================================${NC}"
echo -e "${GREEN} Docker CE 离线安装脚本 (ARM64) ${NC}"
echo -e "${GREEN}========================================${NC}"
# 检查架构
ARCH=$(uname -m)
if [ "$ARCH" != "aarch64" ]; then
echo -e "${RED}错误: 当前架构为 $ARCH,本脚本仅支持 aarch64 (ARM64)${NC}"
exit 1
fi
# 检查root权限
if [ "$EUID" -ne 0 ]; then
echo -e "${RED}错误: 请使用 root 用户运行本脚本${NC}"
exit 1
fi
# 检查安装包是否存在
if [ ! -f "docker-${DOCKER_VERSION}.tgz" ]; then
echo -e "${RED}错误: 未找到 docker-${DOCKER_VERSION}.tgz${NC}"
echo "请确保安装包位于当前目录"
exit 1
fi
echo -e "${YELLOW}[1/6] 正在解压 Docker 安装包...${NC}"
tar -xzf "docker-${DOCKER_VERSION}.tgz"
echo -e "${YELLOW}[2/6] 正在复制可执行文件...${NC}"
cp -p docker/* "${INSTALL_DIR}/"
# 安装 docker-compose
if [ -f "docker-compose-linux-aarch64" ]; then
echo -e "${YELLOW}[3/6] 正在安装 Docker Compose...${NC}"
cp -p docker-compose-linux-aarch64 "${INSTALL_DIR}/docker-compose"
chmod +x "${INSTALL_DIR}/docker-compose"
else
echo -e "${YELLOW}[3/6] 跳过 Docker Compose (未找到安装包)${NC}"
fi
echo -e "${YELLOW}[4/6] 正在创建 systemd 服务...${NC}"
cat > /etc/systemd/system/docker.service << 'EOF'
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
EOF
echo -e "${YELLOW}[5/6] 正在启动 Docker 服务...${NC}"
systemctl daemon-reload
systemctl start docker
systemctl enable docker
# 创建 docker 组
if ! getent group docker > /dev/null 2>&1; then
groupadd docker
fi
echo -e "${YELLOW}[6/6] 验证安装...${NC}"
if docker --version; then
echo -e "${GREEN}========================================${NC}"
echo -e "${GREEN} Docker 安装成功! ${NC}"
echo -e "${GREEN}========================================${NC}"
docker --version
docker-compose --version 2>/dev/null || true
else
echo -e "${RED}Docker 安装可能失败,请检查日志${NC}"
exit 1
fi
# 清理临时文件
rm -rf docker/
echo -e "${GREEN}安装完成!${NC}"
echo -e "${YELLOW}提示: 如需非root用户使用docker请执行: usermod -aG docker <用户名>${NC}"

View File

@@ -0,0 +1,101 @@
#!/bin/bash
# GoWVP + ZLMediaKit 一键部署脚本
# 适用于统信UOS20 ARM64 离线环境
set -e
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
INSTALL_DIR="/opt/owl-zlmediakit"
DATA_DIR="${INSTALL_DIR}/data"
echo -e "${GREEN}========================================${NC}"
echo -e "${GREEN} GoWVP + ZLMediaKit 部署脚本 ${NC}"
echo -e "${GREEN}========================================${NC}"
# 检查root权限
if [ "$EUID" -ne 0 ]; then
echo -e "${RED}错误: 请使用 root 用户运行${NC}"
exit 1
fi
# 检查架构
ARCH=$(uname -m)
if [ "$ARCH" != "aarch64" ]; then
echo -e "${RED}错误: 当前架构为 $ARCH,本脚本仅支持 aarch64${NC}"
exit 1
fi
# 创建目录
echo -e "${YELLOW}[1/6] 创建数据目录...${NC}"
mkdir -p "${DATA_DIR}"/record
mkdir -p "${DATA_DIR}"/log
mkdir -p "${DATA_DIR}"/gowvp-configs
mkdir -p "${DATA_DIR}"/snap
# 复制配置文件
echo -e "${YELLOW}[2/6] 复制配置文件...${NC}"
cp configs/zlm-config.ini "${DATA_DIR}/"
cp configs/docker-compose.yml "${INSTALL_DIR}/"
# 加载Docker镜像
echo -e "${YELLOW}[3/6] 加载 Docker 镜像...${NC}"
if [ -f "docker-images/zlmediakit-master-arm64.tar" ]; then
docker load -i docker-images/zlmediakit-master-arm64.tar
echo -e "${GREEN} ✓ ZLMediaKit 镜像已加载${NC}"
else
echo -e "${RED} ✗ 未找到 ZLMediaKit 镜像文件${NC}"
exit 1
fi
if [ -f "docker-images/gowvp-latest-arm64.tar" ]; then
docker load -i docker-images/gowvp-latest-arm64.tar
echo -e "${GREEN} ✓ GoWVP 镜像已加载${NC}"
else
echo -e "${RED} ✗ 未找到 GoWVP 镜像文件${NC}"
exit 1
fi
# 启动服务
echo -e "${YELLOW}[4/6] 启动服务...${NC}"
cd "${INSTALL_DIR}"
docker-compose up -d
# 等待服务启动
echo -e "${YELLOW}[5/6] 等待服务启动 (约30秒)...${NC}"
sleep 10
echo -e "${YELLOW} 继续等待...${NC}"
sleep 10
echo -e "${YELLOW} 即将完成...${NC}"
sleep 10
# 验证服务
echo -e "${YELLOW}[6/6] 验证服务状态...${NC}"
if docker ps | grep -q zlmediakit; then
echo -e "${GREEN} ✓ ZLMediaKit 容器正在运行${NC}"
else
echo -e "${RED} ✗ ZLMediaKit 容器未运行${NC}"
fi
if docker ps | grep -q gowvp; then
echo -e "${GREEN} ✓ GoWVP 容器正在运行${NC}"
else
echo -e "${RED} ✗ GoWVP 容器未运行${NC}"
fi
echo -e "${GREEN}========================================${NC}"
echo -e "${GREEN} 部署完成! ${NC}"
echo -e "${GREEN}========================================${NC}"
echo ""
echo -e "${YELLOW}访问地址:${NC}"
echo -e " ZLMediaKit: http://<服务器IP>"
echo -e " GoWVP管理界面: http://<服务器IP>:15123"
echo ""
echo -e "${YELLOW}常用命令:${NC}"
echo -e " 查看日志: docker logs -f zlmediakit"
echo -e " 查看日志: docker logs -f gowvp"
echo -e " 停止服务: docker-compose down"
echo -e " 重启服务: docker-compose restart"

View File

@@ -0,0 +1,104 @@
#!/bin/bash
# 部署验证脚本
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
SERVER_IP=$(hostname -I | awk '{print $1}')
PASS=0
FAIL=0
check_service() {
local name=$1
local url=$2
echo -n "检查 ${name} ... "
if curl -s -o /dev/null -w "%{http_code}" "${url}" | grep -q "200\|302\|401"; then
echo -e "${GREEN}通过${NC}"
((PASS++))
else
echo -e "${RED}失败${NC}"
((FAIL++))
fi
}
echo -e "${YELLOW}========================================${NC}"
echo -e "${YELLOW} GoWVP + ZLMediaKit 部署验证 ${NC}"
echo -e "${YELLOW}========================================${NC}"
echo "服务器IP: ${SERVER_IP}"
echo ""
# 1. 检查 Docker 服务
echo -n "检查 Docker 服务 ... "
if systemctl is-active docker >/dev/null 2>&1; then
echo -e "${GREEN}通过${NC}"
((PASS++))
else
echo -e "${RED}失败${NC}"
((FAIL++))
fi
# 2. 检查容器运行状态
echo -n "检查 ZLMediaKit 容器 ... "
if docker ps | grep -q zlmediakit; then
echo -e "${GREEN}通过${NC}"
((PASS++))
else
echo -e "${RED}失败${NC}"
((FAIL++))
fi
echo -n "检查 GoWVP 容器 ... "
if docker ps | grep -q gowvp; then
echo -e "${GREEN}通过${NC}"
((PASS++))
else
echo -e "${RED}失败${NC}"
((FAIL++))
fi
# 3. 检查端口监听
echo -n "检查 HTTP 80 端口 ... "
if netstat -tlnp 2>/dev/null | grep -q ":80 " || ss -tlnp 2>/dev/null | grep -q ":80 "; then
echo -e "${GREEN}通过${NC}"
((PASS++))
else
echo -e "${RED}失败${NC}"
((FAIL++))
fi
echo -n "检查 GoWVP 15123 端口 ... "
if netstat -tlnp 2>/dev/null | grep -q ":15123 " || ss -tlnp 2>/dev/null | grep -q ":15123 "; then
echo -e "${GREEN}通过${NC}"
((PASS++))
else
echo -e "${RED}失败${NC}"
((FAIL++))
fi
# 4. HTTP API 测试
check_service "ZLMediaKit API" "http://${SERVER_IP}/index/api/getApiList"
check_service "GoWVP Web界面" "http://${SERVER_IP}:15123"
# 5. 检查日志是否有错误
echo -n "检查 ZLMediaKit 日志错误 ... "
if docker logs zlmediakit 2>&1 | grep -qi "error\|fatal"; then
echo -e "${YELLOW}警告: 发现错误日志${NC}"
else
echo -e "${GREEN}通过${NC}"
((PASS++))
fi
echo ""
echo -e "${YELLOW}========================================${NC}"
echo -e "${GREEN} 验证完成: ${PASS} 通过, ${FAIL} 失败 ${NC}"
echo -e "${YELLOW}========================================${NC}"
if [ $FAIL -eq 0 ]; then
echo -e "${GREEN}所有检查通过!部署成功!${NC}"
exit 0
else
echo -e "${RED}部分检查未通过,请查看上方详情${NC}"
exit 1
fi