5.0 KiB
epctl 安装与验证脚本
epctl 是仓库顶层的 Linux 二进制安装管理脚本,面向已经发布到 GitHub Releases 的 epusdt 二进制包。
epctl-docker-test.sh 是配套的真实验收脚本,用本机 Docker 启动 Ubuntu + systemd 容器,完整验证安装、启动、升级和初始化密码流程。
适用范围
- 仅支持 Linux
- 仅支持二进制安装
- 安装源固定为
https://github.com/GMWalletApp/epusdt/releases - 默认通过 systemd 管理服务
依赖与权限
epctl 依赖这些基础命令:
curltarsystemctlinstallgrepsed
其中:
install、upgrade、self-install需要写入/opt、/etc/systemd、/usr/local/binstatus、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 |
快速开始
直接在仓库根目录运行交互菜单:
./epctl
默认优先进入中文界面。你也可以显式指定语言:
./epctl zh
./epctl en
./epctl --lang zh help
./epctl --lang en help
如果想把脚本装进 PATH:
./epctl self-install
epctl
常用命令
下载指定版本:
./epctl download --tag v1.0.8
安装服务:
./epctl install --tag v1.0.8 \
--app-uri https://pay.example.com \
--listen 127.0.0.1:18000
升级到新版本:
./epctl upgrade --tag v1.0.9
查看配置、状态、日志:
./epctl show-config
./epctl status
./epctl logs --lines 200
请求初始化管理员密码:
./epctl init-password
不传 --tag 时的行为
download、install、upgrade 在未传 --tag 时,会先调用 GitHub API 解析当前 latest release tag,再向用户显示实际 tag 并确认。
例如:
./epctl install --app-uri https://pay.example.com
交互模式下会先提示检测到的最新 tag。
非交互脚本执行时,建议显式传入 --tag。如果你明确要跳过确认,可以设置:
EPCTL_ASSUME_YES=1 ./epctl download
首次安装时会发生什么
执行 install 时,脚本会:
- 按当前机器架构下载 GitHub Release 压缩包
- 解压到
/tmp/epusdt/<tag>/extract/ - 安装二进制到
/opt/epusdt/epusdt - 安装
.env.example到/opt/epusdt/.env.example - 创建系统用户和组
epusdt - 若
/opt/epusdt/.env不存在,则从.env.example自动生成 - 写入并启用
epusdt.service
自动生成 .env 时,脚本只会补默认上线所需的最小改动:
install=falseapp_uri=<--app-uri,默认 http://127.0.0.1:8000>http_listen=<--listen,默认 127.0.0.1:8000>
如果 /opt/epusdt/.env 已存在,则安装和升级都会保留它,不会覆盖。
systemd 服务说明
脚本注册的服务名固定为 epusdt.service,核心参数如下:
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 路由:
GET /admin/api/v1/auth/init-password
它不会直接读数据库。
脚本会从 /opt/epusdt/.env 解析 http_listen,然后自动把这些监听写法转成本地可请求地址:
:8000->127.0.0.1:80000.0.0.0:8000->127.0.0.1:8000
如果接口返回 10040,含义是初始化明文密码已经不可用。常见原因是:
- 管理员已经登录并修改过密码
- 初始化密码已经被消费,当前不再允许再次取回
此时脚本会直接把接口原始错误输出出来,方便排查。
Docker 验收脚本
仓库顶层提供:
./epctl-docker-test.sh <install-tag> [upgrade-tag]
示例:
./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 - 检查
systemd服务、www/index.html、配置文件、日志、状态输出 - 验证
init-password首次成功、修改管理员密码后再次请求返回10040
运行前提:
- 本机已安装 Docker
- 当前用户有权限执行 Docker
- 宿主机能够访问 GitHub Releases
建议
- 自动化部署场景优先显式传
--tag - 生产环境建议安装完成后先执行一次
./epctl show-config - 首次拿到初始化密码后,建议立即登录后台修改管理员密码
- 如果只是验证脚本是否可用,优先跑
./epctl-docker-test.sh