Files
hi-server/ops/hifast-upload-chain-runbook-zh.md
T
2026-05-27 20:04:14 -07:00

3.3 KiB
Raw Blame History

HiFast 上传链路运维 Runbook

适用范围

本文档用于测试环境 https://tapi.hifast.biz/v1/public/file/upload 上传链路自检和 MinIO sidecar 运维。测试环境的对象存储应自包含在 compose 栈内,不依赖外部 107.173.50.22:5017

当前测试环境配置

  • Compose 文件:/root/bindbox/docker-compose.cloud.yml
  • 应用配置:/root/bindbox/configs/ppanel.yaml
  • MinIO 数据目录:/root/bindbox/data/minio
  • MinIO APIhttp://127.0.0.1:9000
  • MinIO Consolehttp://127.0.0.1:9001,仅绑定本机,需 SSH 隧道访问
  • Bucket:与 ppanel.yamlS3.Bucket 保持一致,当前为 hifastvpn

ppanel-server 使用 host 网络,所以 S3.Endpoint 必须写宿主机 loopback

S3:
  Enable: true
  Endpoint: "http://127.0.0.1:9000"
  Bucket: "hifastvpn"
  UsePathStyle: true

启停与状态检查

cd /root/bindbox
docker compose -f docker-compose.cloud.yml up -d minio minio-init
docker restart ppanel-server

docker compose -f docker-compose.cloud.yml ps minio minio-init ppanel-server
curl -fsS http://127.0.0.1:9000/minio/health/live
curl -fsS https://tapi.hifast.biz/v1/common/heartbeat

minio-init 是一次性 bucket 初始化容器,正常状态是 exited 且退出码为 0

docker inspect ppanel-minio-init --format 'status={{.State.Status}} exit={{.State.ExitCode}}'
docker logs --tail 50 ppanel-minio-init

Bucket 重建

如 bucket 被误删或新环境首次初始化失败:

cd /root/bindbox
docker compose -f docker-compose.cloud.yml up -d minio
docker compose -f docker-compose.cloud.yml run --rm minio-init

确认 bucket

docker logs --tail 50 ppanel-minio-init
find /root/bindbox/data/minio -maxdepth 3 -type d | sort | head

上传链路自检

基础健康检查:

curl -i https://tapi.hifast.biz/v1/common/heartbeat

完整上传需要有效用户 JWT。复测标准:

  • POST /v1/public/file/upload 返回 HTTP 200
  • 响应业务 code=200
  • data.url 指向 S3.PublicBaseURL + object_key
  • MinIO 数据目录可看到对应对象
  • ppanel-server 日志没有 put object failedcontext canceled

排查命令:

docker logs --since 10m ppanel-server | grep -Ei 'file/upload|put object|context canceled|s3'
find /root/bindbox/data/minio/hifastvpn -type f | sort | tail

备份

变更前必须备份:

cd /root/bindbox
ts=$(date +%Y%m%d%H%M%S)
cp docker-compose.cloud.yml docker-compose.cloud.yml.bak.hif-101.$ts
cp .env .env.bak.hif-101.$ts
cp configs/ppanel.yaml configs/ppanel.yaml.bak.$ts

MinIO 数据备份:

cd /root/bindbox
tar -czf minio-data.$(date +%Y%m%d%H%M%S).tar.gz data/minio

回滚

恢复外部 S3 配置或回到变更前状态:

cd /root/bindbox
cp configs/ppanel.yaml.bak.YYYYMMDDHHMMSS configs/ppanel.yaml
cp docker-compose.cloud.yml.bak.hif-101.YYYYMMDDHHMMSS docker-compose.cloud.yml
cp .env.bak.hif-101.YYYYMMDDHHMMSS .env
docker compose -f docker-compose.cloud.yml stop minio
docker restart ppanel-server

保留 /root/bindbox/data/minio 便于复盘,不要在回滚时删除数据目录。

旧 Endpoint 清理

测试栈活动配置不得继续引用旧外部 endpoint:

cd /root/bindbox
grep -R '107\.173\.50\.22:5017' -n docker-compose.cloud.yml configs/ppanel.yaml .env || true