Zealot
- 运维
- 1天前
- 29热度
- 0评论
-
说明
- 开源移动应用、macOS、Linux 和 Windows 应用分发平台,相关地址如下
# 开源地址 https://github.com/tryzealot/zealot/ # 镜像仓库地址 https://hub.docker.com/r/tryzealot/zealot # 官方文档 https://zealot.ews.im/zh-Hans/docs/self-hosted/ # 接口文档 https://zealot.ews.im/zh-Hans/api/v1/zh-Hans
- 服务架构
16.1 容器部署
-
说明
- 本示例需额外准备好 Postgres、域名 、域名SSL证书 、Nginx
- 亦可参考官方提供的部署方式
https://github.com/tryzealot/zealot-docker
-
操作如下
- 目录结构
zealot ├── config │ └── zealot.env ├── data │ ├── backup │ └── uploads ├── docker-compose.yaml └── log
config/zealot.env
###################################### # Domain&Certificate | 域名及证书 ###################################### ## 语言设置 (默认中文:zh-CN) # DEFAULT_LOCALE=en ## 网站外观(默认浅色:light) # ZEALOT_APPEARANCE=dark ## 站点域名 ZEALOT_DOMAIN=zealot.hukanfa.com ###################################### # Account | 账户 ###################################### ## 默认生成的管理员账户和密码 ZEALOT_ADMIN_EMAIL=admin@zealot.com ZEALOT_ADMIN_PASSWORD=ze@l0t ## Guest mode | 是否开启游客模式 (无需登录即可浏览绝大部分内部服务) ZEALOT_GUEST_MODE=false ## Account register mode | 是否开放注册功能 | 生产环境关闭 ZEALOT_REGISTER_ENABLED=false ###################################### # Sending email | 发送邮件 - 必须 - 可以配置QQ的或者企业专用的 - 新用户注册需要邮件确认才能激活账号 ###################################### # SMTP 以下为官方 demo SMTP_DOMAIN=zealot.com SMTP_ADDRESS=smtp.gmail.com SMTP_PORT=587 SMTP_USERNAME=you@gmail.com SMTP_PASSWORD=your_app_password SMTP_AUTH_METHOD=plain SMTP_ENABLE_STARTTLS=true # Default mail sender | 邮件默认收发人 ACTION_MAILER_DEFAULT_FROM=notifiacation@zealot.com ACTION_MAILER_DEFAULT_TO=no-reply@zealot.com ###################################### # Third-Party Authentation | 第三方一键登录 ###################################### ## Gitlab # 配置教程:https://zealot.ews.im/docs/self-hosted/configuration/third-party-authentication#gitlab GITLAB_ENABLED=true GITLAB_SITE=https://gitlab.com/api/v4 GITLAB_SCOPE=read_user GITLAB_APP_ID= GITLAB_SECRET= ###################################### # Schedule jobs | 定时任务 ###################################### ## 默认保留所有上传应用,否则会定期清理上传的应用(调试文件除外)| 生产建议关闭,根据规则保持清理 # 清理规则参见:https://zealot.ews.im/#/configuration # ZEALOT_KEEP_UPLOADS=true ###################################### # Analytics | 统计 ###################################### ## 匿名错误上报 ZEALOT_SENTRY_DISABLE=false ###################################### # Development only | 开发使用变量 (非开发者请忽略下面) ###################################### ## Docker Compose 项目名(建议保留不变) COMPOSE_PROJECT_NAME=zealot ## 加密密钥,建议使用 openssl 或者 rails secret 生成 SECRET_KEY_BASE='xgcb0ium95evovql1c0ed9hm66s8pfmqq6z5jy38to1h7xcelfig6p7sup3vfpxmd0svwa5ho8dozhhavk3ikeaifabb45ya33nkmuqv38phpzlrfedhytbzopcp26bu' ## Puma 外部控制 API PUMA_CONTROL_URL=0.0.0.0:9293 PUMA_CONTROL_URL_TOKEN=zealot ## 数据库链接 ZEALOT_DATABASE_URL=postgresql://pgadmin:123@192.168.26.12:5432/postgredb?sslmode=disable
docker-compose.yaml
services: zealot: image: tryzealot/zealot:6.0.3 env_file: - ./config/zealot.env volumes: - ./data/uploads:/app/public/uploads - ./data/backup:/app/public/backup - ./log:/app/log ports: - "8080:80" - "9094":"9293" healthcheck: test: ["CMD-SHELL", "wget -q --spider --proxy=off 127.0.0.1/api/health || exit 1"] logging: driver: "json-file" options: max-size: "1g" max-file: "5" max-buffer-size: "4m" mode: "non-blocking"
zealot.hukanfa.com.conf
Nginx配置,示例仅供参考
server { listen 80; listen 443 ssl; server_name zealot.hukanfa.com; ssl_certificate ./certs/hukanfa.com.crt; ssl_certificate_key ./certs/hukanfa.com.key; access_log logs/zealot_access.log main; error_log logs/zealot_error.log; client_max_body_size 1024M; location / { proxy_pass http://0.0.0.0:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 关键:升级头,告诉后端这是 WebSocket 请求 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; # 超时设置(根据需要调节) proxy_read_timeout 86400s; proxy_send_timeout 86400s; } }
16.2 上传接口
-
说明
- 通过此接口可以对接CICD流程,构建完成后自动上传app文件到分发平台
- 接口地址
POST /api/apps/upload
16.2.1 请求参数
-
操作如下
- 这是一个 multipart/form-data 类型的请求,参数信息介绍如下
字段名称 类型 是否必填 描述 token
String 是 用户的 API Token,用于身份验证。 file
File 是 要上传的应用文件(.ipa, .apk, .aab)。 channel_key
String 否 指定要发布到的渠道的 Key。如果为空,则会尝试创建新应用和渠道。 name
String 否 应用的名称。如果为空,将从应用文件中解析。如果应用已存在,此字段将被忽略。 changelog
String 否 本次的更新日志。 release_type
String 否 发布类型,例如: debug
、beta
、adhoc
、release
、enterprise
。password
String 否 为该渠道或版本设置下载密码。 source
String 否 上传来源,例如: api
、cli
、jenkins
、gitlab-ci
。branch
String 否 应用构建时所在的 Git 分支。 git_commit
String 否 本次构建对应的 Git Commit SHA 值。 ci_url
String 否 指向 CI/CD 系统上本次构建页面的 URL。 devices
String 否 (iOS Adhoc) 指定允许安装的设备 UDID 列表,多个 UDID 以逗号分隔。 custom_fields
JSON String 否 自定义字段,以 JSON 字符串格式提供。 slug
String 否 自定义渠道的友好 URL slug。 git_url
String 否 渠道关联的 Git 仓库地址。 download_filename_type
String 否 下载文件名的生成格式。
16.2.2 返回信息
-
操作如下
- 状态码
201
字段 类型 描述 id
Integer 新版本的唯一标识。 version
String 内部版本号。 app_name
String 应用的完整名称(包含渠道信息)。 bundle_id
String 应用的 Bundle ID 或包名。 release_version
String 应用的发布版本号(如 1.0.0)。 build_version
String 应用的构建版本号(如 101)。 source
String 上传来源。 branch
String Git 分支。 git_commit
String Git 提交记录。 ci_url
String CI/CD 的链接地址。 size
Integer 应用文件的大小(字节)。 platform
String 应用平台(如 iOS
、Android
)。device_type
String 设备类型。 icon_url
String 应用图标的 URL。 release_url
String 应用发布页面的 URL。 install_url
String 应用的安装链接。 qrcode_url
String 应用安装页面的二维码链接。 changelog
Array 更新日志(数组形式)。 text_changelog
String 更新日志(文本形式)。 custom_fields
Object 自定义字段。 created_at
String 创建时间。 app
Object 关联的 App 对象信息。 scheme
Object 关联的 Scheme 对象信息。 channel
Object 关联的 Channel 对象信息。 - 状态码
16.2.3 示例:上传应用
-
操作如下
- 需要先创建应用和相应渠道,获取渠道KEY。路径:应用 -> 新建应用 -> 点击应用名 -> 点击渠道名
1、创建应用后,可自定义渠道或编辑现有渠道信息 2、进入渠道信息详情页后,下拉右下角可以看到渠道KEY: eca80a73527f0bdd381713d95f67d708
- 上传应用
curl -X POST \ -H "Content-Type: multipart/form-data" \ -F "token=222acafd2b7132b00876565aa23c953a" \ -F "name=app-xxx" \ -F "channel_key=eca80a73527f0bdd381713d95f67d708" \ -F "file=@/other_data/app-release.apk" \ -F "changelog=修复了若干 Bug,提升了应用性能。" \ https://zealot.hukanfa.com/api/apps/upload
- 响应信息
{ "id": 24, "version": 1, "app_name": "app-xxx AdHoc Android", "bundle_id": "com.xxx.hukanfa", "release_version": "4.0.11", "build_version": "4011", "source": "api", "branch": null, "git_commit": null, "ci_url": null, "size": 167527861, "platform": "Android", "device_type": "phone", "icon_url": "https://zealot.hukanfa.com/uploads/apps/a3/r24/icons/CG.png", "release_url": "https://zealot.hukanfa.com/DOzrS/24", "install_url": "https://zealot.hukanfa.com/download/releases/24", "qrcode_url": "https://zealot.hukanfa.com/channels/DOzrS/releases/24/qrcode?size=thumb", "changelog": [ { "message": "修复了若干 Bug,提升了应用性能。" } ], "text_changelog": "- 修复了若干 Bug,提升了应用性能。", "custom_fields": [], "created_at": "2025-07-03T18:57:08.094+08:00", "app": { "id": 3, "name": "app-xxx" }, "scheme": { "id": 5, "name": "AdHoc", "new_build_callout": true, "retained_builds": 0 }, "channel": { "id": 12, "slug": "DOzrS", "name": "Android", "device_type": "android", "bundle_id": "*", "git_url": null, "has_password": false, "key": "eca80a73527f0bdd381713d95f67d708", "download_filename_type": "version_datetime" } }