4.4 KiB
4.4 KiB
部署与运维指南
环境要求
- Go 1.24+
- Netts API v2 账号,并完成:
- 获取 API Key;
- 配置 IP 白名单(若使用代理,可在
config.yaml中设置netts.realIp); - 充值余额,以便购买能量周期。
Netts 账号准备流程
-
注册 Workspace 账号
- 打开 https://netts.io/workspace 使用邮箱注册并登录;
- 首次登录后系统会自动给当前账号生成一组 API Key。
-
完成余额充值
- 在 Workspace → Wallet 菜单中充值 TRX(建议先充 10–20 TRX 做验证);
- Netts 扣费直接来自账户余额,没有余额将无法下单购买能量。
-
配置 IP 白名单
- 进入 Workspace → API → IP Whitelist,将本服务所在服务器的出口 IP 填入;
- 如果经由代理访问,可在配置文件
netts.realIp中设置对应的公网 IP。
-
获取并保管 API Key
- 在 Workspace → API 区域复制 Key;
- 设置到
config.yaml的netts.apiKey字段,或通过NETTS_API_KEY环境变量注入; - 生产环境请妥善存储在 Secrets 或 Vault 中。
-
可选:配置回调地址
- 若希望接收能量下发事件,可在 Workspace → Host Mode Callback处填写统一回调 URL;
- 亦可在调用本服务的
/api/v1/energy/rent时传入callback_url覆盖。
-
API 验证
- 使用 cURL/ Postman 请求
https://netts.io/apiv2/userinfo,在 Header 中携带X-API-KEY和X-Real-IP; - 当返回
status=success时,说明账号、Key 与白名单均已生效。
- 使用 cURL/ Postman 请求
构建
go build -o bin/netts-energy ./cmd/server
可选 Dockerfile(伪代码):
FROM golang:1.24-alpine AS builder
WORKDIR /app
COPY . .
RUN go build -o /build/netts-energy ./cmd/server
FROM alpine:3.20
WORKDIR /srv/app
COPY --from=builder /build/netts-energy /usr/local/bin/netts-energy
COPY config.example.yaml ./config.yaml
CMD ["netts-energy", "-config", "/srv/app/config.yaml"]
运行时配置
-
根据
config.example.yaml编辑正式配置,或注入环境变量(NETTS_API_KEY等)。 -
建议通过 systemd / Supervisor 运行,示例:
[Unit] Description=Netts Energy Orchestrator After=network-online.target [Service] ExecStart=/srv/netts/netts-energy -config /srv/netts/config.yaml Restart=on-failure Environment=NETTS_API_KEY=*** [Install] WantedBy=multi-user.target -
健康检查:
- HTTP GET
http://host:port/healthz返回 200。 - 可接入 Kubernetes / Nginx upstream 的健康探测。
- HTTP GET
CI/CD 建议
仓库内置 GitHub Actions workflow (.github/workflows/ci.yaml):
- 安装依赖;
go fmt+go vet;go test ./...。
若需要自动部署服务器,可以在 CI 中加入以下步骤:
-
在 GitHub 仓库配置 Secrets:
SSH_HOST/SSH_USER/SSH_KEY;DEPLOY_PATH等自定义变量。
-
在 workflow 中追加 job,简例:
- name: Deploy if: github.ref == 'refs/heads/main' run: | scp bin/netts-energy ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }}:${{ secrets.DEPLOY_PATH }} ssh ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} 'systemctl restart netts-energy'
注:部署脚本默认留空,需根据实际服务器环境完善。
与现有自动到账系统的集成
- 地址维护:在充值服务创建新用户地址后,触发一次
rent调用,让服务自动加入 Host Mode。 - 归集流程:在执行 TRC20 归集前调用
rent接口,确保能量充足后再发起链上交易。 - 降级策略:若 Netts API 不可用,可回退到旧的 Feee 方案;建议通过 Prometheus 指标或报警系统监控
rent接口的失败率。 - 费用对比:响应中的
analysis.cost_breakdown与订单total_cost方便和现有成本核算系统对接。
运维建议
- 日志:标准输出为结构化日志,建议接入 Loki / ELK 做集中采集。
- 监控:结合 Netts webhook 与本服务返回数据,设置周期不足、下单失败等告警。
- 升级:新增 Netts 接口(例如
time/infinitystart)时,可在internal/netts中扩展方法并追加 service 策略。 - 安全:谨慎保管 API Key;生产环境务必使用 HTTPS 代理或反向代理,限制访问来源。