更新 te消息转发
This commit is contained in:
145
te消息转发
145
te消息转发
@@ -1,59 +1,134 @@
|
||||
#!/bin/bash
|
||||
|
||||
# =================配置部分=================
|
||||
# 部署目录 (默认在当前用户的 home 目录下创建 telegram-monitor)
|
||||
# 如果需要修改路径,请更改下面的 BASE_DIR 变量
|
||||
BASE_DIR="$HOME/telegram-monitor"
|
||||
# ================= 颜色定义 =================
|
||||
RED='\033[31m'
|
||||
GREEN='\033[32m'
|
||||
YELLOW='\033[33m'
|
||||
BLUE='\033[34m'
|
||||
PLAIN='\033[0m'
|
||||
|
||||
# 配置文件名称 (以容器命名)
|
||||
COMPOSE_FILE="telegram-monitor.yml"
|
||||
# =========================================
|
||||
# ================= 默认配置 =================
|
||||
DEFAULT_PORT=5005
|
||||
CONTAINER_NAME="telegram-monitor"
|
||||
IMAGE_NAME="ghcr.io/riniba/telegrammonitor:latest"
|
||||
YML_FILE="${CONTAINER_NAME}.yml"
|
||||
|
||||
echo "🚀 开始部署 Telegram Monitor..."
|
||||
|
||||
# 1. 创建文件夹
|
||||
if [ ! -d "$BASE_DIR" ]; then
|
||||
echo "📂 创建目录: $BASE_DIR"
|
||||
mkdir -p "$BASE_DIR/data"
|
||||
else
|
||||
echo "📂 目录已存在: $BASE_DIR"
|
||||
# 检查是否以 root 运行
|
||||
if [[ $EUID -ne 0 ]]; then
|
||||
echo -e "${RED}错误: 必须使用 root 用户运行此脚本!${PLAIN}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 进入目录
|
||||
cd "$BASE_DIR"
|
||||
clear
|
||||
echo -e "${BLUE}====================================================${PLAIN}"
|
||||
echo -e "${BLUE} Telegram Monitor 一键部署脚本 (优化版 v2.0) ${PLAIN}"
|
||||
echo -e "${BLUE}====================================================${PLAIN}"
|
||||
|
||||
# 2. 生成 telegram-monitor.yml 文件
|
||||
echo "📝 正在生成配置文件: $COMPOSE_FILE"
|
||||
cat > $COMPOSE_FILE <<EOF
|
||||
# 1. 检查 Docker 环境
|
||||
echo -e "${YELLOW}[1/6] 检查 Docker 环境...${PLAIN}"
|
||||
if ! command -v docker &> /dev/null; then
|
||||
echo -e "${RED}未检测到 Docker,请先安装 Docker!${PLAIN}"
|
||||
exit 1
|
||||
fi
|
||||
echo -e "${GREEN}Docker 已安装。${PLAIN}"
|
||||
|
||||
# 2. 设置安装路径
|
||||
echo -e "${YELLOW}[2/6] 配置安装路径...${PLAIN}"
|
||||
read -p "请输入安装路径 (默认: $HOME/telegram-monitor): " INSTALL_DIR
|
||||
if [ -z "$INSTALL_DIR" ]; then
|
||||
INSTALL_DIR="$HOME/telegram-monitor"
|
||||
fi
|
||||
echo -e "安装目录: ${GREEN}$INSTALL_DIR${PLAIN}"
|
||||
|
||||
# 创建目录
|
||||
if [ ! -d "$INSTALL_DIR/data" ]; then
|
||||
mkdir -p "$INSTALL_DIR/data"
|
||||
echo -e "已创建数据目录: $INSTALL_DIR/data"
|
||||
fi
|
||||
cd "$INSTALL_DIR"
|
||||
|
||||
# 3. 设置端口
|
||||
echo -e "${YELLOW}[3/6] 配置服务端口...${PLAIN}"
|
||||
read -p "请输入宿主机端口 (默认: $DEFAULT_PORT): " PORT
|
||||
if [ -z "$PORT" ]; then
|
||||
PORT=$DEFAULT_PORT
|
||||
fi
|
||||
|
||||
# 检查端口占用
|
||||
if lsof -Pi :$PORT -sTCP:LISTEN -t >/dev/null ; then
|
||||
echo -e "${RED}警告: 端口 $PORT 已经被占用!${PLAIN}"
|
||||
read -p "是否强制继续?(y/n): " FORCE_PORT
|
||||
if [[ "$FORCE_PORT" != "y" ]]; then
|
||||
echo "脚本已取消。"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
echo -e "使用端口: ${GREEN}$PORT${PLAIN}"
|
||||
|
||||
# 4. 清理旧容器
|
||||
echo -e "${YELLOW}[4/6] 清理旧环境...${PLAIN}"
|
||||
if docker ps -a --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
|
||||
echo -e "${YELLOW}发现同名容器,正在停止并删除...${PLAIN}"
|
||||
docker stop $CONTAINER_NAME >/dev/null 2>&1
|
||||
docker rm $CONTAINER_NAME >/dev/null 2>&1
|
||||
echo -e "${GREEN}旧容器已清理。${PLAIN}"
|
||||
fi
|
||||
|
||||
# 5. 生成配置文件 (符合你的命名习惯)
|
||||
echo -e "${YELLOW}[5/6] 生成配置文件 $YML_FILE ...${PLAIN}"
|
||||
cat > $YML_FILE <<EOF
|
||||
version: '3.8'
|
||||
services:
|
||||
telegram-monitor:
|
||||
image: ghcr.io/riniba/telegrammonitor:latest
|
||||
container_name: telegram-monitor
|
||||
image: $IMAGE_NAME
|
||||
container_name: $CONTAINER_NAME
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "5005:5005"
|
||||
- "$PORT:5005"
|
||||
volumes:
|
||||
- ./data:/app
|
||||
environment:
|
||||
- ASPNETCORE_ENVIRONMENT=Production
|
||||
EOF
|
||||
echo -e "${GREEN}配置文件已生成。${PLAIN}"
|
||||
|
||||
# 3. 启动容器
|
||||
echo "🐳 正在拉取镜像并启动服务..."
|
||||
# 6. 启动容器与健康检查
|
||||
echo -e "${YELLOW}[6/6] 拉取镜像并启动容器...${PLAIN}"
|
||||
|
||||
# 检查是否安装了 docker compose (新版) 还是 docker-compose (旧版)
|
||||
# 判断使用 docker compose 还是 docker-compose
|
||||
if docker compose version >/dev/null 2>&1; then
|
||||
docker compose -f $COMPOSE_FILE up -d
|
||||
CMD="docker compose"
|
||||
elif docker-compose version >/dev/null 2>&1; then
|
||||
docker-compose -f $COMPOSE_FILE up -d
|
||||
CMD="docker-compose"
|
||||
else
|
||||
echo "❌ 未检测到 Docker Compose,请先安装 Docker。"
|
||||
exit 1
|
||||
echo -e "${RED}错误: 未找到 docker-compose 插件。尝试直接使用 docker run 启动...${PLAIN}"
|
||||
docker run -d --name $CONTAINER_NAME --restart unless-stopped -p $PORT:5005 -v $INSTALL_DIR/data:/app -e ASPNETCORE_ENVIRONMENT=Production $IMAGE_NAME
|
||||
CMD="docker"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "✅ 部署完成!"
|
||||
echo "📂 数据目录位于: $BASE_DIR/data"
|
||||
echo "📄 配置文件位于: $BASE_DIR/$COMPOSE_FILE"
|
||||
echo "🌍 访问地址: http://服务器IP:5005"
|
||||
if [ "$CMD" != "docker" ]; then
|
||||
$CMD -f $YML_FILE up -d
|
||||
fi
|
||||
|
||||
echo -e "${BLUE}正在进行健康检查 (等待 5 秒)...${PLAIN}"
|
||||
sleep 5
|
||||
|
||||
# 检查容器状态
|
||||
STATUS=$(docker inspect --format='{{.State.Status}}' $CONTAINER_NAME 2>/dev/null)
|
||||
|
||||
if [ "$STATUS" == "running" ]; then
|
||||
IP=$(hostname -I | awk '{print $1}')
|
||||
echo -e "${BLUE}========================================${PLAIN}"
|
||||
echo -e "${GREEN}✅ 部署成功!${PLAIN}"
|
||||
echo -e "容器状态: ${GREEN}$STATUS${PLAIN}"
|
||||
echo -e "配置文件: $INSTALL_DIR/$YML_FILE"
|
||||
echo -e "数据目录: $INSTALL_DIR/data"
|
||||
echo -e "访问地址: ${GREEN}http://$IP:$PORT${PLAIN}"
|
||||
echo -e "${BLUE}========================================${PLAIN}"
|
||||
else
|
||||
echo -e "${BLUE}========================================${PLAIN}"
|
||||
echo -e "${RED}❌ 部署可能失败,容器状态: $STATUS${PLAIN}"
|
||||
echo -e "${YELLOW}请运行以下命令查看报错日志:${PLAIN}"
|
||||
echo -e "docker logs $CONTAINER_NAME"
|
||||
echo -e "${BLUE}========================================${PLAIN}"
|
||||
fi
|
||||
Reference in New Issue
Block a user