基于 flask
的简单API实现,可以用于获取服务器的性能数据及Minecraft的服务端参数。
-
运行之前,确保已经安装所有依赖:
pip3 install -r requirements.txt
-
必须设置环境变量
SECRET_KEY
:echo 'SECRET_KEY="your_secret_key"' > .env
-
该 API 设计上是同 Minecraft 服务器运行在一台机器上的,这样可以监测服务器的CPU和内存使用情况。
-
如果你需要在另一台机器上运行 API ,请修改
main.py
中的host
-
配置
server.properties
:enable-query=true query.port=25565
-
启动 API 服务器:
python3 main.py
-
⚠ 注意:API 服务器默认开在
25595
端口,强烈建议配置反向代理并设置SSL。配置示例见examples
。
SECRET_KEY
: 用于API的授权认证。
- 获取系统状态 (GET /api/status/system)
- 获取Minecraft服务器状态 (GET /api/status/minecraft)
X-API-KEY
: API密钥,需要与设置的SECRET_KEY
相匹配。
GET /api/status/system
返回系统的CPU百分比使用率,内存的总量、已使用量和使用百分比,以及磁盘的总量、已使用量和使用百分比。GET /api/status/minecraft
返回Minecraft服务器的状态,包括主机名、游戏类型、游戏ID、版本、插件、地图、主机端口以及玩家的数量、最大玩家数和玩家列表。
请求:
GET /api/status/system
Headers: X-API-KEY: your_secret_key
响应:
{
"cpu_percent": 23.5,
"memory": {
"total": 16777216000,
"used": 5872025600,
"percent": 35.0
},
"disk": {
"total": 250685575168,
"used": 105025527808,
"percent": 41.9
}
}
请求:
GET /api/status/minecraft
Headers: X-API-KEY: your_secret_key
响应:
{
"host_name": "My Minecraft Server",
"game_type": "SMP",
"game_id": "MINECRAFT",
"version": "1.18.2",
"plugins": ["Plugin1", "Plugin2"],
"map": "world",
"host_port": 25565,
"player": {
"num": 2,
"max": 20,
"list": ["player1", "player2"]
}
}
如果API密钥不匹配或未提供,将收到以下错误响应:
403 Forbidden
{
"error": "Invalid API key"
}