automa/Makefile
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

166 lines
4.8 KiB
Makefile

# Automa - Unified Makefile
# Provides common operations across all services
.PHONY: help all status up down logs restart clean minecraft teamspeak nextcloud
# Default target
help:
@echo "Automa - Self-hosted Services Manager"
@echo ""
@echo "Usage: make [target]"
@echo ""
@echo "Global Commands:"
@echo " help Show this help message"
@echo " status Show status of all services"
@echo " all-up Start all services"
@echo " all-down Stop all services"
@echo ""
@echo "Service-specific Commands:"
@echo " Minecraft:"
@echo " minecraft-up Start Minecraft server"
@echo " minecraft-down Stop Minecraft server"
@echo " minecraft-logs View Minecraft logs"
@echo " minecraft-restart Restart Minecraft server"
@echo " minecraft-status Show server status"
@echo " minecraft-setup Initialize environment"
@echo " minecraft-mods-download Download mods from Modrinth"
@echo " minecraft-mods-list List installed mods"
@echo " minecraft-mods-update Update all mods"
@echo " minecraft-backup Create full backup"
@echo " minecraft-backup-world Backup world data only"
@echo " minecraft-backup-list List available backups"
@echo ""
@echo " teamspeak-up Start TeamSpeak server"
@echo " teamspeak-down Stop TeamSpeak server"
@echo " teamspeak-logs View TeamSpeak logs"
@echo " teamspeak-restart Restart TeamSpeak server"
@echo ""
@echo " nextcloud-up Start Nextcloud"
@echo " nextcloud-down Stop Nextcloud"
@echo " nextcloud-logs View Nextcloud logs"
@echo " nextcloud-restart Restart Nextcloud"
@echo ""
@echo "Utility Commands:"
@echo " check Check prerequisites"
@echo " clean Remove stopped containers and unused volumes"
# Check prerequisites
check:
@echo "Checking prerequisites..."
@command -v docker >/dev/null 2>&1 || { echo "Docker not found. Install: https://docs.docker.com/get-docker/"; exit 1; }
@command -v docker compose >/dev/null 2>&1 || command -v docker-compose >/dev/null 2>&1 || { echo "Docker Compose not found."; exit 1; }
@echo "✓ All prerequisites satisfied"
# Status check for all services
status:
@echo "=== Service Status ==="
@echo ""
@echo "Minecraft:"
@cd minecraft && docker compose ps 2>/dev/null || echo " Not running"
@echo ""
@echo "TeamSpeak:"
@cd teamspeak && docker compose ps 2>/dev/null || echo " Not running"
@echo ""
@echo "Nextcloud:"
@cd nextcloud && docker compose ps 2>/dev/null || echo " Not running"
# Start all services
all-up:
@echo "Starting all services..."
@cd minecraft && docker compose up -d
@cd teamspeak && docker compose up -d
@cd nextcloud && docker compose up -d
@echo "✓ All services started"
# Stop all services
all-down:
@echo "Stopping all services..."
@cd minecraft && docker compose down
@cd teamspeak && docker compose down
@cd nextcloud && docker compose down
@echo "✓ All services stopped"
# Minecraft
minecraft-up:
@cd minecraft && docker compose up -d
@echo "✓ Minecraft server started"
minecraft-down:
@cd minecraft && docker compose down
@echo "✓ Minecraft server stopped"
minecraft-logs:
@cd minecraft && docker compose logs -f
minecraft-restart:
@cd minecraft && docker compose restart
@echo "✓ Minecraft server restarted"
minecraft-status:
@cd minecraft && ./scripts/monitor.sh status
minecraft-setup:
@cd minecraft && ./scripts/setup.sh
minecraft-mods-download:
@cd minecraft && ./scripts/mod-manager.sh download
minecraft-mods-list:
@cd minecraft && ./scripts/mod-manager.sh list
minecraft-mods-update:
@cd minecraft && ./scripts/mod-manager.sh update
minecraft-mods-check:
@cd minecraft && ./scripts/mod-manager.sh check
minecraft-backup:
@cd minecraft && ./scripts/backup.sh backup all
minecraft-backup-world:
@cd minecraft && ./scripts/backup.sh backup world
minecraft-backup-list:
@cd minecraft && ./scripts/backup.sh list
minecraft-backup-cleanup:
@cd minecraft && ./scripts/backup.sh cleanup
# TeamSpeak
teamspeak-up:
@cd teamspeak && docker compose up -d
@echo "✓ TeamSpeak server started"
teamspeak-down:
@cd teamspeak && docker compose down
@echo "✓ TeamSpeak server stopped"
teamspeak-logs:
@cd teamspeak && docker compose logs -f
teamspeak-restart:
@cd teamspeak && docker compose restart
@echo "✓ TeamSpeak server restarted"
# Nextcloud
nextcloud-up:
@cd nextcloud && docker compose up -d
@echo "✓ Nextcloud started"
nextcloud-down:
@cd nextcloud && docker compose down
@echo "✓ Nextcloud stopped"
nextcloud-logs:
@cd nextcloud && docker compose logs -f
nextcloud-restart:
@cd nextcloud && docker compose restart
@echo "✓ Nextcloud restarted"
# Cleanup
clean:
@echo "Cleaning up Docker resources..."
@docker container prune -f
@docker volume prune -f
@echo "✓ Cleanup complete"