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

316 lines
6.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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. 环境初始化
```bash
# 检查环境并初始化目录结构
make minecraft-setup
```
### 2. 配置服务器
编辑 `.env` 文件,设置必要的配置:
```bash
# 用户权限(使用 id 命令查看)
UID=1000
GID=1000
# RCON 密码(远程管理)
RCON_PASSWORD=your_secure_password
# 时区
TZ=Asia/Shanghai
```
### 3. 下载 Mods可选
```bash
# 从 Modrinth 下载 mods根据 extras/mods.txt
make minecraft-mods-download
# 或手动将 mods 放入 mods/ 目录
```
### 4. 启动服务器
```bash
# 启动服务器
make minecraft-up
# 查看日志
make minecraft-logs
```
## 📋 常用命令
### 服务器管理
```bash
make minecraft-up # 启动服务器
make minecraft-down # 停止服务器
make minecraft-restart # 重启服务器
make minecraft-logs # 查看实时日志
make minecraft-status # 查看服务器状态
```
### Mods 管理
```bash
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
```
### 备份管理
```bash
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/` 目录:
```bash
# 环境初始化
./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`,然后重启服务器:
```bash
vim configs/server.properties
make minecraft-restart
```
#### 添加新 Mods
1. 在 Modrinth 找到 mod 的 slugURL中的ID
2. 添加到 `extras/mods.txt`
3. 运行下载命令:
```bash
make minecraft-mods-download
make minecraft-restart
```
#### 配置白名单
编辑 `configs/whitelist.json`,并在 `.env``configs/server.properties` 中启用白名单:
```properties
white-list=true
enforce-whitelist=true
```
## 🔍 监控与维护
### 实时监控
```bash
# 查看完整状态(容器、资源、玩家、错误)
make minecraft-status
# 持续监控模式每5秒刷新
cd minecraft && ./scripts/monitor.sh watch 5
```
### 日志管理
```bash
# 查看 Docker 容器日志
make minecraft-logs
# 查看自动化脚本日志
ls -lh logs/
tail -f logs/automation-*.log
```
### 定期备份
建议配置 cron 任务定期备份:
```bash
# 每天凌晨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` 中:
```yaml
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 统一管理
迁移步骤:
```bash
# 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
```
## 📝 故障排查
### 容器无法启动
```bash
# 检查 Docker 服务
docker info
# 查看容器日志
make minecraft-logs
# 检查环境配置
cat .env
```
### Mods 下载失败
```bash
# 检查网络连接
curl -I https://api.modrinth.com
# 查看详细日志
cat logs/automation-*.log
# 手动下载 mods 放入 mods/ 目录
```
### 性能问题
```bash
# 查看资源使用
cd minecraft && ./scripts/monitor.sh resources
# 调整内存配置
vim docker-compose.yml # 修改 MEMORY 和 INIT_MEMORY
# 重启服务器
make minecraft-restart
```
## 📚 相关资源
- [Docker 文档](https://docs.docker.com/)
- [itzg/minecraft-server 镜像](https://github.com/itzg/docker-minecraft-server)
- [Modrinth](https://modrinth.com/) - Mods 下载平台
- [Fabric](https://fabricmc.net/) - Mod 加载器
## 🤝 贡献
欢迎提交 Issue 和 Pull Request
## 📄 许可
MIT License