automa/minecraft/README.md
m1ngsama 0fe7ed79ad refactor: 重构Minecraft服务器自动化管理方案
## 重构内容

### 新增自动化脚本系统 (scripts/)
- utils.sh: 通用工具库(日志、Docker操作、备份、网络检查)
- setup.sh: 环境初始化脚本(目录结构、权限、配置验证)
- mod-manager.sh: Mods管理(Modrinth下载、更新、清理)
- backup.sh: 备份管理(世界/配置/mods备份、恢复、清理)
- monitor.sh: 服务器监控(状态、资源、玩家、日志分析)

### 增强Makefile集成
新增命令:
- minecraft-status: 服务器状态检查
- minecraft-setup: 环境初始化
- minecraft-mods-*: Mods管理命令
- minecraft-backup-*: 备份管理命令

### 完善文档
- 重写README: 详细的使用指南、故障排查、迁移指南
- 新增CHANGELOG: 完整的重构说明和技术细节

## 架构改进

### 整合原有设计
- 继承src/automatic/的日志系统设计
- 改进Modrinth API集成逻辑
- 优化部署流程和备份机制

### 新增优势
- Docker优先的容器化方案
- 模块化脚本设计,职责单一
- Makefile统一管理入口
- 完整的生命周期自动化

## 技术特性

- 完善的错误处理和日志记录
- macOS/Linux跨平台兼容
- 敏感信息安全管理
- 持续监控模式

## 向后兼容

- 保留src/automatic/旧脚本(供参考)
- 配置文件格式完全兼容
- Docker Compose配置无变化
2025-12-09 10:00:00 +08:00

6.9 KiB
Raw Permalink Blame History

Automa Minecraft 服务器

基于 Docker Compose 的 Minecraft Fabric 1.21.1 服务器,提供完整的自动化管理方案。

📁 目录结构

minecraft/
├── docker-compose.yml       # Docker Compose 配置
├── .env                     # 环境变量配置(需自定义)
├── configs/                 # 服务器配置文件
│   ├── server.properties    # 服务器属性配置
│   └── whitelist.json       # 白名单配置
├── mods/                    # Mods 存放目录
├── data/                    # 持久化数据(世界、日志等)
├── backups/                 # 自动备份目录
├── logs/                    # 自动化脚本日志
├── extras/
│   └── mods.txt            # Modrinth Mods 列表
└── scripts/                # 自动化脚本
    ├── utils.sh            # 工具库
    ├── setup.sh            # 环境初始化
    ├── mod-manager.sh      # Mods 管理
    ├── backup.sh           # 备份管理
    └── monitor.sh          # 服务器监控

🚀 快速开始

1. 环境初始化

# 检查环境并初始化目录结构
make minecraft-setup

2. 配置服务器

编辑 .env 文件,设置必要的配置:

# 用户权限(使用 id 命令查看)
UID=1000
GID=1000

# RCON 密码(远程管理)
RCON_PASSWORD=your_secure_password

# 时区
TZ=Asia/Shanghai

3. 下载 Mods可选

# 从 Modrinth 下载 mods根据 extras/mods.txt
make minecraft-mods-download

# 或手动将 mods 放入 mods/ 目录

4. 启动服务器

# 启动服务器
make minecraft-up

# 查看日志
make minecraft-logs

📋 常用命令

服务器管理

make minecraft-up          # 启动服务器
make minecraft-down        # 停止服务器
make minecraft-restart     # 重启服务器
make minecraft-logs        # 查看实时日志
make minecraft-status      # 查看服务器状态

Mods 管理

make minecraft-mods-download   # 下载所有 mods
make minecraft-mods-list       # 列出已安装的 mods
make minecraft-mods-update     # 更新所有 mods
make minecraft-mods-check      # 检查 mods 状态

Mods 配置在 extras/mods.txt 中,每行一个 Modrinth slug

fabric-api
sodium
lithium
iris

备份管理

make minecraft-backup           # 完整备份世界、配置、mods
make minecraft-backup-world     # 仅备份世界数据
make minecraft-backup-list      # 列出所有备份
make minecraft-backup-cleanup   # 清理旧备份

备份存储在 backups/ 目录,按类型分类:

  • backups/worlds/ - 世界数据备份
  • backups/configs/ - 配置文件备份
  • backups/mods/ - Mods 备份

🔧 高级用法

直接使用脚本

所有自动化脚本位于 scripts/ 目录:

# 环境初始化
./scripts/setup.sh

# Mods 管理
./scripts/mod-manager.sh download    # 下载 mods
./scripts/mod-manager.sh list        # 列出 mods
./scripts/mod-manager.sh update      # 更新 mods
./scripts/mod-manager.sh clean       # 清理 mods

# 备份管理
./scripts/backup.sh backup all       # 完整备份
./scripts/backup.sh backup world     # 仅备份世界
./scripts/backup.sh list             # 列出备份
./scripts/backup.sh restore <file>   # 恢复备份
./scripts/backup.sh cleanup 10       # 保留最近10个备份

# 服务器监控
./scripts/monitor.sh status          # 完整状态
./scripts/monitor.sh resources       # 资源使用
./scripts/monitor.sh players         # 在线玩家
./scripts/monitor.sh logs 50         # 最近50行日志
./scripts/monitor.sh watch 10        # 持续监控每10秒

自定义配置

修改服务器配置

编辑 configs/server.properties,然后重启服务器:

vim configs/server.properties
make minecraft-restart

添加新 Mods

  1. 在 Modrinth 找到 mod 的 slugURL中的ID
  2. 添加到 extras/mods.txt
  3. 运行下载命令:
make minecraft-mods-download
make minecraft-restart

配置白名单

编辑 configs/whitelist.json,并在 .envconfigs/server.properties 中启用白名单:

white-list=true
enforce-whitelist=true

🔍 监控与维护

实时监控

# 查看完整状态(容器、资源、玩家、错误)
make minecraft-status

# 持续监控模式每5秒刷新
cd minecraft && ./scripts/monitor.sh watch 5

日志管理

# 查看 Docker 容器日志
make minecraft-logs

# 查看自动化脚本日志
ls -lh logs/
tail -f logs/automation-*.log

定期备份

建议配置 cron 任务定期备份:

# 每天凌晨3点备份世界数据
0 3 * * * cd /path/to/automa && make minecraft-backup-world

# 每周清理旧备份保留最近10个
0 4 * * 0 cd /path/to/automa/minecraft && ./scripts/backup.sh cleanup 10

📊 性能优化

项目已包含性能优化 mods

  • Sodium - 渲染优化
  • Lithium - 服务器性能优化
  • Iris - 着色器支持

内存配置在 docker-compose.yml 中:

environment:
  MEMORY: "4G"        # 最大内存
  INIT_MEMORY: "2G"   # 初始内存

🛡️ 安全建议

  1. 修改 RCON 密码:在 .env 中设置强密码
  2. 配置防火墙仅开放必要端口25565, 25575
  3. 启用白名单:在 configs/server.properties 中配置
  4. 定期备份:使用自动化备份脚本
  5. 监控日志:定期检查错误日志

🔄 迁移指南

从旧版本迁移

如果你使用的是 src/automatic/ 下的旧脚本:

  1. 新方案使用 Docker Compose更易部署和维护
  2. Mods 管理统一使用 extras/mods.txt 格式
  3. 所有自动化功能集成到 scripts/ 目录
  4. 通过 Makefile 统一管理

迁移步骤:

# 1. 备份旧数据
cp -r old_server_dir/world minecraft/data/

# 2. 复制 mods如果手动管理
cp -r old_mods_dir/* minecraft/mods/

# 3. 初始化新环境
make minecraft-setup

# 4. 启动服务器
make minecraft-up

📝 故障排查

容器无法启动

# 检查 Docker 服务
docker info

# 查看容器日志
make minecraft-logs

# 检查环境配置
cat .env

Mods 下载失败

# 检查网络连接
curl -I https://api.modrinth.com

# 查看详细日志
cat logs/automation-*.log

# 手动下载 mods 放入 mods/ 目录

性能问题

# 查看资源使用
cd minecraft && ./scripts/monitor.sh resources

# 调整内存配置
vim docker-compose.yml  # 修改 MEMORY 和 INIT_MEMORY

# 重启服务器
make minecraft-restart

📚 相关资源

🤝 贡献

欢迎提交 Issue 和 Pull Request

📄 许可

MIT License