OpsDeck:纯 PHP 实现的阿里云 CDT 管理保活面板
OpsDeck:纯 PHP 实现的阿里云 CDT 管理保活面板
最近给自己搭了一个阿里云 CDT 管理保活面板,顺手开源到了 GitHub(https://github.com/amw1933/ecs)。它用纯 PHP 编写,不依赖任何 Composer 包,数据存 SQLite,以 Docker 容器方式部署,镜像已发布到 Docker Hub,非常适合放在群晖或者轻量云服务器上使用。
一条命令部署(拉取模式,无需构建)
只要机器上装了 Docker(群晖装个 Docker 套件即可),执行一次:
bash -c "$(curl -fsSL https://raw.githubusercontent.com/amw1933/ecs/main/deploy/install.sh)"
脚本会:自动创建部署目录(默认
/volume1/docker/ecs)→ 生成运行时 compose → 拉取已发布镜像 → 启动服务(默认监听 0.0.0.0:43211)。部署完成即自动守护:容器内置常驻循环,每 60 秒自动运行一次调度,抢占实例被停止后自动拉起并发通知——不需要打开网页,也不需要配置系统定时任务。
构建模式(从源码构建)
想自己构建镜像时,加
REPO_URL 切换到构建模式(代码拉到 -build 目录构建,部署目录依然干净):REPO_URL=https://github.com/amw1933/ecs.git bash -c "$(curl -fsSL https://raw.githubusercontent.com/amw1933/ecs/main/deploy/install.sh)"
部署结构
- 部署目录只显示
docker-compose.yml和data/(数据库、密钥、日志全在 data 里),看不到源码 - 代码打进镜像(容器内
/var/www/ecs),GitHub Actions 每次推送代码自动重新构建发布镜像 - 以后更新:重跑同一条命令即可,数据保留在
data/,不丢失
可视化面板(Portainer / 群晖 Container Manager)
镜像已发布到 Docker Hub,直接粘贴这个 YAML 即可自动拉取部署:
services:
ecs:
image: docker.io/amw1933/opsdeck-ecs:latest
container_name: "${CONTAINER_NAME:-ecs}"
restart: unless-stopped
ports:
- "${PORT:-0.0.0.0:43211}:80"
environment:
TZ: Asia/Shanghai
CRON_INTERVAL: "${CRON_INTERVAL:-60}"
volumes:
- ./data:/var/www/ecs/storage
Docker 卸载
cd /volume1/docker/ecs
docker compose down --remove-orphans # 停止并删除容器(保留 ./data 数据)
rm -rf ./data # 彻底删除数据(谨慎,不可恢复)
第一次使用
http://服务器IP:43211,进入首次初始化:输入初始化 token(data/logs/app.log 里查看),设置管理员密码。主要功能
界面一览
总览页按账号展示流量卡片、趋势图和熔断状态:

实例管理:状态、规格、IP、流量、操作一屏完成:

流量监控:CDT 与实例汇总双口径,30 天曲线:

账号管理:多账号接入、连接测试、费用与余额一目了然:

定时任务:定时开关机与抢占式实例保活:

系统设置:按账号独立配置熔断、计费周期、成本分析与自动保活:

阿里云 RAM 权限
建议使用 RAM 子账号,按需授权:
ecs:DescribeInstancesecs:StartInstance、ecs:StopInstance、ecs:RebootInstance、ecs:DeleteInstanceecs:CreateInstance 等创建相关权限cms:DescribeMetricList、cms:DescribeMetricLastcdt:ListCdtInternetTrafficbss:DescribeInstanceBill、bss:QueryAccountBalance只查看和管理已有实例时,不需要创建类和账单权限。
评论(0)