AutoStopper

一个自动根据玩家活动停止和启动 Minecraft 服务器容器的 Velocity 代理插件。

资源图片
# AutoStopper AutoStopper 是一个 Velocity 代理插件,可以根据玩家活动自动停止和启动 Minecraft 服务器容器。它有助于服务器管理员通过关闭不活跃的基于 Docker 的 Minecraft 服务器来节省资源。 ## 功能 - 自动监控服务器活动 - 在可配置的超时时间后停止不活跃的 Docker 容器 - 在玩家尝试连接时按需启动服务器 - 在启动服务器后无缝地将玩家连接到服务器 - 维护服务器状态跟踪 ## 要求 - Velocity 代理服务器(3.3.0 或更高版本) - 带有 itzg/minecraft-server 容器的 Docker 环境 - Docker 套接字挂载到 Velocity 容器 - Java 21+ ## 安装 1. 从 [releases](https://github.com/criseda/AutoStopper/releases) 页面下载最新的 AutoStopper JAR 2. 将 JAR 放置在 Velocity 服务器的 `plugins` 目录中 3. 启动 (或重启) 您的 Velocity 服务器 4. 编辑生成的配置文件以匹配您的设置 ## 配置文件 首次运行后,AutoStopper 将在 `plugins/AutoStopper` 目录中生成一个 `config.yml`: ```yaml # 服务器不活动多长时间后停止(秒) inactivity_timeout_seconds: 900 # AutoStopper 应该管理的服务器列表 monitored_servers: - server_name: purpur container_name: purpur-server - server_name: fabric container_name: fabric-server ``` ### 配置文件选项 - `inactivity_timeout_seconds`: 服务器必须不活动的时间(秒),在被关闭之前(默认:900 秒/15 分钟) - `monitored_servers`: 服务器映射列表 - `server_name`: Velocity 配置文件中服务器的名称 - `container_name`: 对应的 Docker 容器名称 ## Docker 设置 AutoStopper 需要将 Docker 套接字挂载到您的 Velocity 容器。以下是一个示例 `docker-compose.yml` 设置: ```yaml services: velocity: image: itzg/mc-proxy container_name: velocity-server environment: TYPE: "VELOCITY" ONLINE_MODE: "true" VELOCITY_VERSION: "latest" VELOCITY_BUILD_ID: "latest" REPLACE_ENV_VARIABLES: "true" ports: - "25565:25565" volumes: - ./velocity_server:/server - /var/run/docker.sock:/var/run/docker.sock # 必须用于 AutoStopper networks: - mc-network restart: unless-stopped # 在容器中安装 Docker CLI entrypoint: bash -c command: > "if [ ! -f /usr/bin/docker ]; then apt-get update && apt-get install -y curl && curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh && apt-get clean; fi && exec /usr/bin/run-bungeecord.sh" # 可以由 AutoStopper 管理的 Minecraft 服务器示例 purpur: image: itzg/minecraft-server:java21 container_name: purpur-server environment: TYPE: "PURPUR" VERSION: "1.21.4" EULA: "TRUE" ONLINE_MODE: "FALSE" volumes: - ./purpur_data:/data networks: - mc-network restart: "no" # 重要:让 AutoStopper 管理容器生命周期 fabric: image: itzg/minecraft-server:java21 container_name: fabric-server environment: TYPE: "FABRIC" VERSION: "1.21.4" EULA: "TRUE" ONLINE_MODE: "FALSE" volumes: - ./fabric_data:/data networks: - mc-network restart: "no" # 重要:让 AutoStopper 管理容器生命周期 networks: mc-network: driver: bridge ``` ### 重要 Docker 配置文件注记 1. Velocity 容器必须安装了 Docker CLI,因此入口脚本会安装它 2. Docker 套接字必须挂载 (`/var/run/docker.sock:/var/run/docker.sock`) 3. 将管理服务器的 `restart` 设置为 `"no"`,以便 Docker 不会自动重启它们 4. 保持任何中心/大厅服务器的 `restart: unless-stopped`,如果您希望它们始终可用 ## 命令 - `/autostopper` 或 `/as` - 主命令 - `/autostopper help` - 显示帮助信息 - `/autostopper status` - 显示所有受监控服务器的状态 - `/autostopper reload` - 重新加载配置 (需要 `autostopper.admin` 权限) ## 权限 - `autostopper.admin` - 允许使用重新加载命令 ## 工作原理 1. 当玩家尝试连接到受监控的服务器时: - 如果服务器正在运行,连接将正常进行 - 如果服务器已停止,AutoStopper: - 启动 Docker 容器 - 等待服务器完全初始化 - 在服务器准备就绪后自动连接玩家 2. 该插件跟踪每个服务器的上次活动时间 3. 一个计划任务检查不活跃的服务器,并在配置的超时时间后停止它们 4. 可以将始终需要的服务器(例如中心/大厅)从监控中排除 ## 从源代码构建 1. 克隆存储库 2. 使用 Maven 构建: ```bash mvn clean package ``` 3. 在 `target/AutoStopper-1.1.1-SNAPSHOT.jar` 中找到 JAR 文件 ## 许可 本项目使用 MIT 许可授权 - 详情请参阅 LICENSE 文件。 ## 作者 - Criseda 为 Velocity 构建 - 使用 itzg/minecraft-server Docker 镜像