VVAE › 用户指南

V2EX 推送通知设置指南

最近更新:2026 年 9 月 30 日

V2EX 网站本身没有 iOS 推送。VVAE 是 iPhone 和 iPad 上的 V2EX iOS 原生客户端,开启推送通知后,有人回复你、@提到你、感谢或收藏你的内容,约 30 秒内就会推到手机上。通知写明谁做了什么,带帖子标题和内容,同一个帖子的归成一组,点开直接进帖子。

iPhone 锁屏上的 VVAE 推送:回复、@提到、感谢和收藏各一条,同一帖子的几条叠成一组

推送需要私有部署轮询程序 vvae-notifier,放在你的电脑、NAS 或服务器上都可以。

目录

  1. 工作原理
  2. 四步开启
  3. 其他部署方式
  4. 多个 V2EX 账号
  5. 更新与停用
  6. 代理
  7. 连接状态与排查
  8. 加密与隐私

工作原理

  1. 轮询。vvae-notifier 由你私有部署,用它所在机器的网络每 30 秒查一次 V2EX 的提醒(V2EX API 2.0)。
  2. 加密。发现新提醒后,它用只有 App 和它自己才有的密钥加密,交给 VVAE 推送中继。
  3. 推送。中继把密文转给苹果推送服务(APNs)。VVAE 的通知扩展在手机上解密,再显示成「xxx 回复了你」。

四步开启

开始前需要

  1. 在 VVAE 里打开「设置 › 推送通知」,打开「允许推送」,并在系统弹窗里允许通知。App 会在 V2EX 自动创建一个访问令牌,180 天有效,快到期时打开 App 就会自动续期。
  2. 点「复制 Docker 命令」。
  3. 把命令粘贴到那台设备的终端里运行。命令大致是这样,VVAE_KEY 是 App 为你生成的部署串,每个人都不同:
    docker rm -f vvae-notifier; docker run -d --name vvae-notifier \
      --hostname "$(hostname)" --restart=always \
      -v vvae-notifier:/data \
      -e VVAE_KEY='vvaepush1.…' \
      ghcr.io/vastlogic-dev/vvae-notifier:latest
    第一次运行时,docker 会提示找不到 vvae-notifier 容器。这是命令开头删除旧容器的那一步,不影响后面。
  4. 回到 App,「连接状态」变成「已连接」,手机会收到一条「推送已连接」的通知。之后的新提醒约 30 秒内推到手机;部署前的历史提醒不会推送。

命令里各部分的作用:

部分作用
--restart=always设备重启、程序意外退出后自动拉起。
--hostname "$(hostname)"容器沿用宿主机的名字。App 的「轮询程序」一栏据此显示它跑在哪台机器上。
-v vvae-notifier:/data保存去重状态和配置,重启后不会重复推送。
-e VVAE_KEY部署串,相当于密码,不要发给别人。

之后令牌续期、推送类型的改动都由 App 下发,不用重新部署。

其他部署方式

NAS 图形界面

在 NAS 的容器管理界面(群晖 Container Manager、威联通 Container Station 等)里新建容器,按下面几项填写:

Docker Compose

services:
  vvae-notifier:
    image: ghcr.io/vastlogic-dev/vvae-notifier:latest
    # 可选:App 里显示的机器名
    hostname: my-nas
    restart: always
    environment:
      VVAE_KEY: ${VVAE_KEY}
    volumes:
      - data:/data

volumes:
  data:

在同一目录新建 .env 文件,内容是 App 里「复制 VVAE_KEY」得到的值:

VVAE_KEY=vvaepush1.…

然后启动:

docker compose up -d

多个 V2EX 账号

更新与停用

更新到最新版本

docker pull ghcr.io/vastlogic-dev/vvae-notifier:latest

然后再运行一次 App 里复制的命令。用 Compose 时:

docker compose pull && docker compose up -d

停用推送

代理

运行轮询程序的设备访问不了 v2ex.com 时,加上环境变量 HTTPS_PROXY。支持 http://、https:// 和 socks5://,可以带 用户名:密码@;NO_PROXY 可以排除部分地址。

代理跑在宿主机上时要注意:容器里的 127.0.0.1 是容器自己,不是宿主机。Docker Desktop(Mac、Windows)写 host.docker.internal;Linux 写宿主机的局域网 IP,或者给容器加 --network host。例如:

-e HTTPS_PROXY=socks5://host.docker.internal:1080

连接状态与排查

「设置 › 推送通知」里的「连接状态」可能显示:

状态含义与处理
等待轮询程序还没收到轮询程序的第一次报到。检查容器是否在运行、VVAE_KEY 是否复制完整。
轮询程序离线超过 30 分钟没有收到轮询程序的心跳。手机会收到「推送已中断」,24 小时后仍离线会再提醒一次。检查运行它的设备是否关机、断网或容器已停止。
令牌已失效V2EX 令牌被删除或作废。打开 VVAE 时,App 会自动建一个新令牌并下发。
被 V2EX 限流同一 IP 的 API 请求超过了 V2EX 的限额。程序会暂停到限额重置后再继续。
轮询出错网络或 V2EX 暂时出错,程序会自动重试。一直不恢复时看容器日志。
N 个轮询程序在运行同一个部署串在几个地方运行,每条提醒会推 N 次。在「轮询程序」一栏看是哪几台机器,停掉多余的。
令牌创建失败App 没能在 V2EX 创建令牌。V2EX 每个账号最多 10 个令牌,满了请先在 V2EX 删掉不用的。
通知已关闭在 iOS 的「设置 › 通知 › VVAE」里允许通知。

看日志

docker logs vvae-notifier

正常启动后会看到「已应用配置」「已记录基线」。每行开头的 8 位标识区分不同账号。

加密与隐私

还有问题,欢迎随时联系我们 support@vastlogic.dev。