console-web 是一个使用 Flask 和 psutil 构建的极简系统状态面板,界面采用终端风格,实时展示 CPU、内存、磁盘、网络等信息。
- 黑客风格的单页界面
- 实时显示 CPU、内存、磁盘使用率
- 容器与宿主机运行时间
- 本地/公网 IP、磁盘 IO、网络 IO 以及实时上传/下载速度
- 对多家运营商的 TCP Ping 监测
- 查询任意 URL 的 IP、ISP 及 Ping 信息
- 内置网络工具:Ping、MTR,支持实时回显
pip install flask psutil
python app/main.py应用默认监听在 http://127.0.0.1:8080。页面中提供 Ping、MTR 按钮,可实时查看执行结果。
在 Alpine Linux 中可以直接通过以下命令部署并运行:
# 安装运行及编译依赖
apk add --no-cache \
python3 py3-pip git iputils mtr \
build-base python3-dev linux-headers
git clone https://github.com/podcctv/console-web.git /opt/console-web
cd /opt/console-web
# 安装 Python 依赖并启动服务
pip install --break-system-packages -r requirements.txt
python app/main.py如需开机自启,可创建 OpenRC 服务:
cat <<'EOF' >/etc/init.d/console-web
#!/sbin/openrc-run
command="/usr/bin/python3 /opt/console-web/app/main.py"
command_background="yes"
pidfile="/run/console-web.pid"
depend() {
need net
}
EOF
chmod +x /etc/init.d/console-web
rc-update add console-web default
service console-web startservice console-web stop
rc-update del console-web default
rm /etc/init.d/console-web
rm -rf /opt/console-web
apk del python3 py3-pip git iputils mtr可以直接构建镜像:
docker build -t console-web .
docker run -d -p 8180:8080 console-web或者使用仓库自带的脚本:
chmod +x console-web/deploy.sh # 赋予执行权限
./console-web/deploy.sh # 执行脚本
脚本会自动安装 Docker(如未安装)、拉取预构建镜像并在 8180 端口运行容器,默认限制容器内存为 128MB。运行时如未输入指令,将在 3 秒后默认重新部署,部署完成后会自动显示可访问的服务器 IP。
镜像内已预装 iputils-ping、mtr,因此 Web 终端提供的网络诊断命令可开箱即用。
在 Pella 等面板启动容器时,避免出现 Cannot find module '/app' 的 Node 报错,可按以下配置填写:
- 工作目录(Working Directory):
/workspace/console-web(或镜像内代码所在目录)。 - 命令(Command):
python - 主文件(Main file / App Entry):
app/main.py - 端口映射:容器
8080暴露到宿主机所需端口,例如8180:8080。
入口脚本 app/main.py 已直接调用 app.run(host="0.0.0.0", port=8080) 启动 Flask 服务,指定 Python 解释器与入口文件即可正常运行。若运行环境默认使用 WSGI/Gunicorn 启动,可直接指定 main:app 作为入口(项目根目录提供了同名的转发脚本,避免在子目录下找不到模块)。
如果面板要求填写“模块路径:对象名”的 WSGI 入口,请使用 app.main:app(或在项目根目录使用 main:app)。仓库中的 app/__init__.py 已确保 app/ 作为 Python 包被正确导入,无需额外处理;确保面板的工作目录指向代码根目录即可避免 No module named 'app' 之类的错误。
部分 PaaS/容器环境在启动 Gunicorn 时不会自动把当前项目目录加入 PYTHONPATH,导致出现 ModuleNotFoundError: No module named 'main' 报错。可以先在代码目录执行一次可编辑安装,确保 main 模块被正确注册:
pip install -e .
gunicorn -b 0.0.0.0:8080 main:apprequirements.txt 已内置 -e . 与 gunicorn,可以直接执行:
pip install -r requirements.txt
gunicorn -b 0.0.0.0:8080 main:app如果面板或启动器把入口写成带斜杠的 app/main,安装依赖后也可以正常启动——仓库提供的 sitecustomize 会在 Python 启动时把该“错误”模块名映射到正确的 app.main,避免 ModuleNotFoundError: No module named 'app/main' 的问题。
可编辑安装会将项目根目录添加到环境中,无论 Gunicorn 的工作目录在哪里,都能正确找到 main:app。
仓库提供了可直接构建并运行的 docker-compose.yml 示例:
docker compose up -d默认将容器的 8080 端口映射到宿主机的 8180 端口,并在后台运行。
- 本地有源代码时会自动使用当前目录构建镜像;如果只想拉取镜像,可以删除或注释掉
build字段。 command: ["python", "main.py"]和working_dir: /app保证容器启动时始终以正确的 Main File/入口脚本运行,避免某些面板默认工作目录错位导致的模块加载异常。
在使用 Docker Desktop、1Panel、Pella 等面板或在服务器上以 Docker 服务方式部署时,可以参考下列参数,确保入口一致:
- 工作目录(Working Directory):
/app(或映射后的代码所在目录) - 命令(Command):
python - 主文件(Main file / App Entry):
main.py(若面板要求带路径,可填app/main.py) - WSGI/App Entry:
main:app(Gunicorn 或其他 WSGI 启动方式)
配合端口映射 8080 → 宿主机任意端口(示例为 8180:8080),即可在不同的 Docker 服务或面板中一致地运行容器。
.
├── app/ # Flask 应用代码
├── Dockerfile # 构建容器镜像
├── deploy.sh # 部署脚本
└── .github/ # GitHub Actions 配置
本项目未声明许可证,默认保留所有权利。