跳到主要内容

配置 Bark 通知

Bark 是一款开源的 iOS 通知应用。Bitpongo 使用它发送交易结果、策略事件和运行告警。系统会根据事件类型自动选择通知声音和紧急程度。

:::warning 妥善保管推送地址

Bark 推送地址包含可以向你的设备发送通知的 Device Key。请将完整地址视为密钥,不要将它发布在截图、日志、Issue、源代码或公开聊天中。

:::

Bitpongo 用户配置方式

1. 安装并打开 Bark

从 iOS App Store 安装 Bark,并至少打开一次,让它完成通知注册。iOS 请求通知权限时请选择允许。

2. 复制 Bark 测试地址

在 Bark 主界面复制显示的测试地址,格式类似:

https://api.day.app/YOUR_DEVICE_KEY/Test

复制完整地址。不要替换 Device Key,也不要自行添加声音或 call=1 参数。Bitpongo 会为每种事件统一应用通知策略。

3. 保存到 Bitpongo

  1. 登录 Bitpongo。
  2. 打开 我的
  3. 选择 通知
  4. 将复制的地址粘贴到 Bark 推送地址
  5. 保持通知开关开启并选择 保存

服务器会加密保存该地址。保存后,Bitpongo 只显示脱敏地址,绝不会把完整 Device Key 返回给 App。

4. 发送测试通知

在 Bark 通知页面选择 测试。测试成功时使用普通提示音,不会开启持续响铃。

如果没有收到通知:

  1. 在 iOS 设置中确认 Bark 已获得通知权限。
  2. 打开 Bark,确认其自带测试地址可以正常使用。
  3. 重新复制完整地址,粘贴到 Bitpongo 后再次测试。
  4. 检查专注模式、通知摘要、音量和网络连接。

停用或删除 Bark

  • 关闭通知开关并保存,可以暂停发送而不替换已保存地址。
  • 选择 删除 Bark 设置 可以移除地址。该用户尚未发送的通知会被跳过,并且不会在重新启用 Bark 后补发。

通知行为

Bitpongo 统一决定 Bark 的级别、声音和分组。从测试地址复制的查询参数无法覆盖该策略。

事件发送方式
调度器致命错误或需要人工处理的订单严重告警、警报声音、最大音量并持续响铃
交易失败或市场服务长时间中断时效性警报,不持续响铃
策略执行被跳过或延迟时效性通知,不持续响铃
交易成功主动通知,使用 minuet 声音
资产快照失败主动通知
服务恢复或启动被动通知;默认关闭启动通知

持续响铃仅用于需要运维人员立即处理的事件。普通交易失败不会持续响铃。

Bitpongo 部署配置方式

本节面向服务器管理员。普通用户应通过 App 配置 Bark。

1. 生成凭据加密密钥

生成一个使用 Base64 编码的独立 32 字节密钥:

openssl rand -base64 32

将输出保存到密钥管理系统,并通过 BARK_CREDENTIAL_ENCRYPTION_KEY 注入。不要复用 JWT 密钥,也不要提交生成的值。

:::danger 必须保留此密钥

该密钥用于加密用户的 Bark Device Key。所有部署和备份必须使用同一个值。更换或丢失该密钥后,服务器将无法解密现有 Bark 设置,受影响用户必须重新保存 Bark 地址。

:::

2. 配置环境变量

使用以下部署模板:

BARK_USER_NOTIFICATIONS_ENABLED=true
BARK_ADMIN_PUSH_URL=https://api.day.app/YOUR_ADMIN_DEVICE_KEY
BARK_ALLOWED_HOSTS=api.day.app
BARK_ALLOW_PRIVATE_HOSTS=false
BARK_CREDENTIAL_ENCRYPTION_KEY=YOUR_32_BYTE_BASE64_KEY
BARK_NOTIFY_ON_STARTUP=false
BARK_DISPATCH_ENABLED=true
APP_PUBLIC_URL=https://your-bitpongo.example.com
变量用途
BARK_USER_NOTIFICATIONS_ENABLED允许用户保存自己的 Bark 地址并接收通知。
BARK_ADMIN_PUSH_URL管理员 Bark 地址,用于接收调度器、市场、基础设施和人工处理告警。可留空以关闭管理员通知。
BARK_ALLOWED_HOSTS以逗号分隔的 Bark 主机名或 host:port 精确列表,默认值为 api.day.app
BARK_ALLOW_PRIVATE_HOSTS设为 true 时允许列表中明确配置的私有网络主机。使用公共 Bark 服务时请保持 false
BARK_CREDENTIAL_ENCRYPTION_KEY加密用户 Device Key 所需的 32 字节 Base64 密钥。
BARK_NOTIFY_ON_STARTUP启用后,在服务启动时向管理员发送被动通知。
BARK_DISPATCH_ENABLED运行发件箱调度器,发送已入队的业务通知。
APP_PUBLIC_URL可选的 Bitpongo 公网地址,会附加到支持的通知中。

BARK_ADMIN_PUSH_URLBARK_CREDENTIAL_ENCRYPTION_KEY 都属于密钥。请通过部署密钥或受保护的 .env 文件提供,不要写入源代码或镜像构建参数。

3. 应用 Docker 配置

修改环境变量后,重新创建 API 容器:

docker compose up -d --force-recreate api
docker compose ps
docker compose logs --tail=100 api

当加密密钥缺失或不是有效的 32 字节 Base64 值时,部署会立即失败;即使关闭用户通知也同样如此。

自建 Bark 服务器

使用公网 HTTPS Bark 服务器时,添加其精确主机名:

BARK_ALLOWED_HOSTS=api.day.app,bark.example.com
BARK_ALLOW_PRIVATE_HOSTS=false

对于经过审核的私有网络部署,请列出精确的主机名或 host:port,并明确允许私有地址:

BARK_ALLOWED_HOSTS=bark.internal.example:8443
BARK_ALLOW_PRIVATE_HOSTS=true

Bitpongo 仅接受 HTTPS 地址,默认拒绝回环地址、链路本地地址和私有地址,也不会跟随跨主机重定向。

常见部署错误

Bark 凭据加密密钥必须是 32-byte Base64

加密密钥为空、格式错误,或解码后的长度不是 32 字节。使用 openssl rand -base64 32 生成新值,保存时不要添加引号或空格,然后重新创建 API 容器。

不要仅为修复新部署中的格式问题而替换正在生产环境使用的密钥。应先找回用于加密现有设置的原始值。

测试成功,但业务通知没有到达

确认 BARK_DISPATCH_ENABLED=true,并且用户通知开关已开启。测试接口会立即发送,而交易和策略事件通过通知发件箱发送,遇到 Bark 临时故障时可能会重试。

自建地址被拒绝

确认地址使用 HTTPS,精确的主机名或 host:port 已加入 BARK_ALLOWED_HOSTS,并且仅在目标解析到私有地址时明确启用私有主机。

隐私和可靠性

  • API 响应只返回脱敏后的 Bark 地址。
  • Device Key 在写入存储前会被加密。
  • 通知失败不会回滚交易、策略、快照或对账结果。
  • 业务通知会排队、去重,并在临时故障后重试。
  • 删除账户会同时删除 Bark 设置,并跳过尚未发送的用户通知。