Skip to content

epctl 安装与验证脚本 ​

epctl 是仓库顶层的 Linux 二进制安装管理脚本,面向已经发布到 GitHub Releases 的 epusdt 二进制包。 epctl-docker-test.sh 是配套的真实验收脚本,用本地 Docker 启动 Ubuntu + systemd 容器,完整验证下载、安装、启动、升级和初始化密码流程。

适用范围 ​

  • 仅支持 Linux
  • 仅支持二进制安装
  • 安装源固定为 https://github.com/GMWalletApp/epusdt/releases
  • 默认通过 systemd 管理服务

依赖与权限 ​

epctl 依赖这些基础命令:

  • curl
  • tar
  • systemctl
  • install
  • grep
  • sed

其中:

  • install、upgrade、self-install 需要写入 /opt、/etc/systemd、/usr/local/bin
  • status、logs 会在需要时自动通过 sudo 重新执行
  • 所以日常使用建议当前用户具备 sudo 权限

固定路径 ​

项目路径
安装目录/opt/epusdt
主程序/opt/epusdt/epusdt
配置文件/opt/epusdt/.env
示例配置/opt/epusdt/.env.example
前端释放目录/opt/epusdt/www
下载快取/tmp/epusdt/<tag>/
systemd unit/etc/systemd/system/epusdt.service
epctl 全域性安装位置/usr/local/bin/epctl

快速开始 ​

Linux 服务器上一键部署时,直接从上游 master 分支下载最新 epctl,赋予执行权限后进入交互选单:

bash
curl -fsSLO https://raw.githubusercontent.com/GMWalletApp/epusdt/refs/heads/master/epctl
chmod +x epctl
./epctl

如果你已经 clone 了仓库,也可以在仓库根目录直接执行:

bash
./epctl

默认优先进入中文界面。你也可以显式指定语言:

bash
./epctl zh
./epctl en
./epctl --lang zh help
./epctl --lang en help

如果想把脚本装进 PATH:

bash
./epctl self-install
epctl

常用命令 ​

下载指定版本:

bash
./epctl download --tag v1.0.8

安装服务:

bash
./epctl install --tag v1.0.8 \
  --app-uri https://pay.example.com \
  --listen 127.0.0.1:18000

升级到新版本:

bash
./epctl upgrade --tag v1.0.9

直接执行 ./epctl upgrade --tag ... 时,脚本会在文件替换完成后默认立即执行 systemctl restart epusdt。 如果你只想替换文件而不重启,请显式传入 --no-restart。 如果你希望人工确认,再传 --prompt-restart;交互终端下提示为 [Y/n],直接回车默认重启。

检视配置、状态、日志:

bash
./epctl show-config
./epctl status
./epctl logs --lines 200

请求初始化管理员密码(仅当部署版本仍暴露旧版明文路由时可用):

bash
./epctl init-password

v1.0.9 路由说明

v1.0.9 服务端注册的是 /admin/api/v1/auth/init-password-hash,没有注册 epctl init-password 会请求的旧版明文 /admin/api/v1/auth/init-password 路由。v1.0.9 首次安装时,请从安装 API 响应中的 init_password 读取初始密码。

不传 --tag 时的行为 ​

download、install、upgrade 在未传 --tag 时,会先调用 GitHub API 解析当前 latest release tag,再向用户显示实际 tag 并确认。

例如:

bash
./epctl install --app-uri https://pay.example.com

交互模式下会先提示检测到的最新 tag。 非交互脚本运行时,建议显式传入 --tag。如果你明确要跳过确认,可以设置:

bash
EPCTL_ASSUME_YES=1 ./epctl download

首次安装时会发生什么 ​

执行 install 时,脚本会:

  1. 按当前机器架构下载 GitHub Release 压缩包
  2. 解压到 /tmp/epusdt/<tag>/extract/
  3. 安装二进制到 /opt/epusdt/epusdt
  4. 安装 .env.example 到 /opt/epusdt/.env.example
  5. 建立系统用户和组 epusdt
  6. 若 /opt/epusdt/.env 不存在,则从 .env.example 自动生成
  7. 写入并启用 epusdt.service

自动生成 .env 时,脚本只会补默认上线所需的最小改动:

  • install=false
  • app_uri=<--app-uri,默认 http://127.0.0.1:8000>
  • http_listen=<--listen,默认 127.0.0.1:8000>

如果 /opt/epusdt/.env 已存在,则安装和升级都会保留它,不会覆盖。 /opt/epusdt/.env.example 则会在每次 install / upgrade 时按当前 release 重新刷新。

升级时会发生什么 ​

执行 upgrade 时,脚本会:

  1. 按当前机器架构下载目标 GitHub Release 压缩包
  2. 解压到 /tmp/epusdt/<tag>/extract/
  3. 要求现有 /opt/epusdt/.env 已存在;若不存在会直接失败,并提示先执行 install
  4. 覆盖 /opt/epusdt/epusdt
  5. 覆盖 /opt/epusdt/.env.example
  6. 保留现有 /opt/epusdt/.env
  7. 刷新 epusdt.service 并执行 systemctl daemon-reload
  8. 默认立即执行 systemctl restart epusdt

补充行为:

  • upgrade 不会再补写 .env,也不会再执行 systemctl enable
  • upgrade --no-restart 只替换文件,不重启服务,并输出手动 restart 提示
  • upgrade --prompt-restart 会在交互终端下询问是否重启
  • 如果重启前的文件部署失败,或升级后的重启失败,脚本会尝试回滚旧的二进制、.env.example 和 unit 文件

systemd 服务说明 ​

脚本注册的服务名固定为 epusdt.service,核心引数如下:

ini
WorkingDirectory=/opt/epusdt
ExecStart=/opt/epusdt/epusdt http start
User=epusdt
Group=epusdt
Restart=always
RestartSec=3

WorkingDirectory 固定为 /opt/epusdt,因为程序会在二进制同级目录释放 www/ 静态文件。

init-password 的含义 ​

epctl init-password 只会请求本地 HTTP 路由。这是旧版明文路由,实际部署版本不一定注册:

text
GET /admin/api/v1/auth/init-password

它不会直接读数据库。

脚本会从 /opt/epusdt/.env 解析 http_listen,然后自动把这些监听写法转成本地可请求地址:

  • :8000 -> 127.0.0.1:8000
  • 0.0.0.0:8000 -> 127.0.0.1:8000

如果接口返回 10040,含义是初始化明文密码已经不可用。常见原因是:

  • 管理员已经登录并修改过密码
  • 初始化密码已经被消费,当前不再允许再次取回

如果接口返回 404,表示部署版本没有暴露这个旧版明文端点;请改用安装流程响应或初始化密码哈希状态端点判断。上述情况下,脚本会直接把接口原始错误输出出来,方便排查。

Docker 验收脚本 ​

仓库顶层提供:

bash
./epctl-docker-test.sh <install-tag> [upgrade-tag]

示例:

bash
./epctl-docker-test.sh v1.0.6
./epctl-docker-test.sh --lang zh v1.0.6 v1.0.8

它会在本地:

  • 直接从 ubuntu:24.04 启动容器,并在容器启动阶段安装 systemd 与测试依赖
  • 启动一个特权容器
  • 在容器内执行 epctl self-install
  • 下载真实 GitHub Release
  • 安装 epusdt
  • 若传入 upgrade-tag,验证 upgrade --no-restart、默认非交互 upgrade,以及 upgrade --prompt-restart 的 n / 回车分支
  • 检查 systemd 服务、www/index.html、配置文件、日志、状态输出
  • 以真实 release artifact 验证 init-password 行为;如果部署版本缺少旧版明文路由,检查会输出原始 HTTP 失败内容以方便排查

执行前提:

  • 本地已安装 Docker
  • 当前用户有权限执行 Docker
  • 宿主机能够访问 GitHub Releases

建议 ​

  • 自动化部署场景优先显式传 --tag
  • 生产环境建议安装完成后先执行一次 ./epctl show-config
  • 首次拿到初始化密码后,建议立即登录后台修改管理员密码
  • 如果只是验证脚本是否可用,优先跑 ./epctl-docker-test.sh
最近更新