一个轻量的 Simpfun / 简幻欢 Minecraft 服务器网页控制面板。它通过你自己浏览器里捕获到的合法 Simpfun 控制台请求,提供状态查看、开机、关机、重启和强制关机按钮。
适合自用服务器管理。不要用它控制不属于你的服务器,也不要把自己的
Authorization令牌提交到公开仓库。
- 查看服务器名称、状态、地址、任务状态和运行时间
- 页面标题和服务器 ID 来自 Simpfun
detail/status接口返回值,服务器改名后页面会跟着变 - 根据当前状态自动限制按钮:
running:允许关机、重启、强制关机starting:只允许强制关机stopping:只允许强制关机stopped/ 其它状态:只允许开机
- 支持可选面板口令
SIMPFUN_WEB_TOKEN - 纯 Python 标准库后端,无需安装第三方依赖
- 前端不保存 Simpfun
Authorization,令牌只放在服务器环境变量里
.
├── app.py # Web 后端,提供静态页面和 /api/* 接口
├── simpfun_status.py # Simpfun API helper,可单独 CLI 使用
├── static/
│ ├── index.html
│ ├── script.js
│ └── style.css
├── .env.example # 环境变量示例,不含真实密钥
├── .gitignore
└── README.md
复制示例配置生成本机私有配置文件:
cp .env.example .env如果你的部署目录里没有 .env.example,说明你拉到的是旧版本或文件没有被提交;可以直接手动创建 .env:
nano .env然后把下面这段填进去并修改为自己的值:
SIMPFUN_INSTANCE_ID=你的实例ID
SIMPFUN_AUTHORIZATION=你的Authorization
SIMPFUN_WEB_TOKEN=你的面板口令
SIMPFUN_WEB_HOST=127.0.0.1
SIMPFUN_WEB_PORT=8080编辑 .env:
nano .env至少填写:
SIMPFUN_INSTANCE_ID=你的实例ID
SIMPFUN_AUTHORIZATION=你的Authorization
SIMPFUN_WEB_TOKEN=你的面板口令
SIMPFUN_WEB_HOST=127.0.0.1
SIMPFUN_WEB_PORT=8080实例 ID 来自 Simpfun 控制台地址:
https://simpfun.cn/console/ins/<这里就是实例ID>/
SIMPFUN_AUTHORIZATION 从浏览器 DevTools 的 Network/XHR 请求里复制,通常是 detail 请求的 Authorization 请求头值。
因为本项目不依赖 python-dotenv,开发时可以用 shell 加载 .env:
set -a
source .env
set +a
python3 app.py打开:
http://127.0.0.1:8080
也可以单独使用 CLI:
python3 simpfun_status.py status
python3 simpfun_status.py start
python3 simpfun_status.py stop
python3 simpfun_status.py restart
python3 simpfun_status.py kill推荐架构:Python 只监听 127.0.0.1:8080,公网通过 Nginx + HTTPS 反向代理到它。
cd /opt
git clone https://github.com/OctoberPrayRain/Simpfun_External.git
cd Simpfun_External
cp .env.example .env
nano .envsudo nano /etc/systemd/system/simpfun-web.service示例:
[Unit]
Description=Simpfun Web Control Panel
After=network.target
[Service]
Type=simple
WorkingDirectory=/opt/Simpfun_External
EnvironmentFile=/opt/Simpfun_External/.env
ExecStart=/usr/bin/python3 /opt/Simpfun_External/app.py
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target启动:
sudo systemctl daemon-reload
sudo systemctl enable --now simpfun-web
sudo systemctl status simpfun-web查看日志:
journalctl -u simpfun-web -f把 panel.example.com 换成你的域名:
server {
listen 80;
server_name panel.example.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}然后:
sudo nginx -t
sudo systemctl reload nginxHTTPS 可以用 Certbot:
sudo certbot --nginx -d panel.example.comGET /api/status:查询服务器状态GET /api/actions:查看支持的电源动作和状态规则POST /api/power:执行电源动作
请求体示例:
{"action":"restart"}支持动作:
start:开机stop:正常关机restart:重启kill:强制关机
.env已被.gitignore忽略,不要提交它- 不要把
SIMPFUN_AUTHORIZATION写进 README、issue、截图或前端 JS - 如果令牌意外公开,立刻退出 Simpfun 登录或重新登录刷新令牌
- 面板挂公网域名前建议务必设置
SIMPFUN_WEB_TOKEN - 建议只让 Python 监听
127.0.0.1,由 Nginx 对外提供 HTTPS