Android App
原生 Android 客户端。后端仍然是同一套 REST API,App 只是把控制台搬到手机上,网页端不受影响。
App 目前从源码构建(仓库内 android/),暂未随 GitHub Releases 附带发布包。
能做什么
- 控制面板、服务监控、隧道管理、域名绑定、DNS 管理、IP 优选实验室、Telegram 机器人、通知、管理后台、全局设置、账户与关于页均为原生实现
- 窄屏采用底部标签导航(概览 / 监控 / DNS / 更多)与半屏弹窗,长表单不再横向挤压
- 登录页原生,人机验证(Cloudflare Turnstile)内嵌在同一页面,全程不跳转浏览器
- 监控状态变化通过系统通知渠道推送到手机,不需要后台常驻网页
- 支持通行密钥:登录页可用通行密钥免密登录,两步验证也能改用通行密钥,账户页可绑定 / 重命名 / 删除通行密钥并关闭密码登录
- 管理后台新增「审计」标签页:按用户、操作类型与时间范围筛选,分页查看操作日志;筛选项用底部弹窗选择,不再平铺一长串选择框
- 概览图表可以点击柱子:弹层列出当天的异常时间段与失败原因,点条目直接跳到对应监控
- 管理后台「系统设置」新增登录保护:限流额度、时间窗口、熟悉网段倍数与触发通知开关
- 亮色 / 暗色跟随 App 内主题偏好,与网页端共用一套配色
登录
面板需要先完成安装:在网页端走一遍安装引导、建好管理员账户之后,App 才能登录。
- 打开 App,填写面板地址(例如
https://tunnel.example.com,也可带端口)。 - 输入账号与密码;若面板开启了人机验证,验证组件会直接显示在登录表单下方。
- 登录成功后进入控制台;如需切换账号,在顶栏头像处退出登录。
如果验证组件加载失败(例如面板所在网络无法访问 Cloudflare),可以点 改用网页版登录,退回内置 WebView 完成登录。
通行密钥
Android 9 及以上可用。登录页的 使用通行密钥登录 会把面板下发的 WebAuthn 参数直接交给系统凭据管理器,用指纹 / 面容 / 屏幕锁完成验证;用户名留空时会弹出本机已绑定的全部通行密钥。开启两步验证的账户在密码之后也会多出 使用通行密钥验证。
账户页的「通行密钥」卡片可以绑定新凭据(需要当前密码)、重命名、删除,并开关本账户的密码登录。绑定、删除与开关状态都会写入审计日志。
App 走的是 Android 的数字资产链接校验,因此需要面板满足两个条件:
- 面板通过 HTTPS 访问,且依赖方 ID 与访问域名一致;
- 面板在
https://<域名>/.well-known/assetlinks.json提供数字资产链接,内容包含 App 包名与签名证书的 SHA-256 指纹。
第二项由后端自动提供,在管理后台「系统设置 → 通行密钥」维护包名与指纹(默认预填本仓库共用调试密钥的指纹;换成自己的 release 签名后,用 keytool -list -v -keystore <keystore> | grep SHA256 或 apksigner verify --print-certs <apk> 取得指纹并填进去)。设备缺少 Google Play 服务时无法使用通行密钥,App 会提示并保留密码登录。
通知
首次进入 通知 页面时按提示授予系统通知权限。授权后 App 会在后台低频轮询 /api/alerts,把监控状态变化转成系统通知;关闭通知权限即回到静默状态,不影响网页端的邮件告警。
主题
App 内的主题偏好独立于系统深色模式:在侧边栏底部或顶栏头像菜单切换 亮色 / 暗色。启动闪屏也会按当前偏好选择日间或夜间插画。
构建
需要 JDK 17+、Android SDK(platforms;android-34 与 build-tools)以及 Gradle:
cd android
./build.sh # debug APK -> app/build/outputs/apk/debug/app-debug.apk
./build.sh install # 构建后 adb install -r 到已连接设备签名沿用本机调试密钥(默认 ~/.android/debug.keystore,可用环境变量 ANDROID_DEBUG_KEYSTORE 覆盖),因此重复安装不会因为签名不同而冲突。
最低支持 Android 8.0(API 26)。