• MerryFox858

    最初是受到 AltGallery https://github.com/bebound/AltGallery 这个项目的启发。

    平时会关注一些 GitHub 上的 iOS 开源应用,也会通过 AltStore 软件源获取应用更新。但如果想把这些 IPA 下载下来,自己重签名,再分发给设备安装,中间还是有不少重复操作。

    说白了,就是人比较懒,不想每次都手动下载、签名、上传、更新安装地址。

    于是干脆自己写了一个自动化工具,把整个流程串起来。

    这就是 ios-auto-sign。

    GitHub 项目地址: https://github.com/3zang/ios-auto-sign

    在线体验地址: https://ota.bilin.eu.org/

    灵感来源: https://github.com/bebound/AltGallery

    一、项目介绍

    ios-auto-sign 是一个自托管的 iOS IPA 自动重签名与 OTA 分发平台。

    支持订阅 AltStore 格式的软件源,当上游应用发布新版本时,自动检测更新、下载 IPA 、使用自己的证书完成重签名,并发布到 OTA 安装页面。

    整个流程尽量自动化,部署一次,后续就不用反复手动折腾了。

    不需要 Mac ,不需要 Xcode ,也不需要依赖第三方在线签名平台。

    二、界面预览

    以下是项目实际界面截图。

    1. 管理后台概览
    1. 软件源管理

    支持添加多个 AltStore 格式的软件源,自动同步应用及版本信息。

    1. 应用管理

    可以针对每个应用单独配置显示名称、图标、Bundle ID 、签名证书及签名参数。

    1. 证书管理

    上传 p12 、证书密码和 mobileprovision 。

    1. OTA 安装页面

    自动生成安装链接和二维码,iPhone 使用 Safari 即可发起安装。

    三、主要功能

    1. 软件源订阅与自动更新

    支持多个 AltStore 格式 JSON 软件源。

    自动获取应用名称、图标、Bundle ID 、版本号、下载地址等信息。

    支持自定义轮询间隔。

    支持手动刷新、启用和停用软件源。

    使用 ETag + SHA256 检测版本变化,避免重复处理。

    检测到新版本后自动触发后续任务。

    1. IPA 自动重签名

    支持上传 p12 证书、证书密码和 mobileprovision 。

    支持为不同应用指定不同证书。

    支持自定义应用显示名称、图标和 Bundle ID 。

    支持自定义签名参数。

    检测到新版本后自动创建签名任务。

    支持失败重试和任务记录。

    1. OTA 在线安装分发

    自动生成 iOS OTA 所需的 plist 。

    提供独立安装页面。

    显示应用图标、版本、更新时间和文件大小。

    支持直接安装和二维码扫描安装。

    支持 HTTPS 域名及反向代理部署。

    不需要手动维护每个 IPA 的安装地址。

    1. Bark 更新通知

    检测到应用更新后自动推送通知。

    支持自定义 Bark 服务器地址。

    支持设备 Key 、通知分组和提示音。

    支持发送测试通知。

    1. 多用户管理

    支持注册和登录。

    第一个注册的账号自动成为管理员。

    普通用户只能管理自己的证书、应用配置和签名产物。

    管理员可以管理公共图标库和全局设置。

    1. 其他特性

    Apple 风格响应式管理界面。

    支持深色和浅色主题。

    支持简体中文和 English 。

    适配 PC 和移动端浏览器。

    支持自定义站点标题。

    支持应用历史产物保留策略。

    四、自动化工作流程

    AltStore 软件源
    │
    ▼
    定时检测版本更新
    │
    ▼
    发现新版本
    │
    ▼
    下载原始 IPA
    │
    ▼
    使用对应证书自动签名
    │
    ▼
    发布签名后的 IPA
    │
    ┌────┴────┐
    ▼ ▼
    OTA 安装 Bark 通知
    │
    ▼
    iPhone 扫码安装

    只需要提前配置好软件源、证书和应用签名参数,后续更新就可以自动完成。

    五、技术架构

    后端:Go

    前端:原生 HTML / CSS / JavaScript

    签名:zsign

    数据存储:JSON 文件

    证书加密:AES-256-GCM

    密码哈希:PBKDF2-HMAC-SHA256

    项目的一些实现特点:

    前后端打包成一个 Go 二进制文件。

    前端通过 go:embed 内嵌,不需要单独部署前端。

    Go 部分使用标准库,无第三方 Go 模块依赖。

    需要额外准备对应平台的 zsign 可执行文件。

    支持 Windows 、Linux amd64 、Linux arm64 。

    GitHub Actions 自动编译并发布多平台 Release 。

    ARM64 的小 VPS 也可以部署运行。

    六、部署要求

    可以部署在自己的 VPS 、Linux 服务器或者 Windows 机器上。

    支持平台:

    平台
    架构

    Windows
    amd64

    Linux
    amd64

    Linux
    arm64

    基本部署流程:

    从 GitHub Releases 下载对应平台的程序。

    准备对应平台的 zsign 可执行文件。

    启动程序。

    浏览器访问管理页面并注册管理员账号。

    上传自己的签名证书。

    添加软件源并配置需要自动签名的应用。

    注意:iOS OTA 安装需要配置有效且受信任的 HTTPS 域名。

    具体部署命令和配置说明请参考项目 README 。

    七、项目地址与在线体验

    在线体验:

    https://ota.bilin.eu.org/

    GitHub 开源地址:

    https://github.com/3zang/ios-auto-sign

    灵感来源:

    https://github.com/bebound/AltGallery

    欢迎 Star 、Fork ,也欢迎提交 Issue 和 PR 。

    项目目前还在持续完善中,如果大家在使用过程中发现问题,或者有值得增加的功能,欢迎交流讨论。

    最后,还是那句话:

    人比较懒,所以尽量让机器多干点活。 :D

    图片
    图片
    图片
    图片
    图片

    主楼
  • NobleMaple19

    这个可以的,思路挺清晰。

    #1
  • GentleFox520

    应该是权限没配对,检查一下。

    #2
  • MerryEcho894

    不如直接上 Go,性能好很多。

    #3

发表回复

登录后回复