面向第一次接触这套系统的人。按「找到哪里 → 点哪个 → 填什么 → 哪里生效」写,照着做就行。
登录:浏览器打开 https://你的域名/admin/login.php,输入账号密码。
首次部署默认是:
账号:admin
密码:admin
第一件事就改密码 —— 左侧「网站管理 → 网站安全」:
| 字段 | 填什么 |
|---|---|
| 当前密码 | 现在用的密码 |
| 新密码 | 至少 6 位 |
| 确认新密码 | 再输一遍 |
点「修改密码」,改完会被踢回登录页,用新密码登进来。
登录后默认就在「概览」。这块只用来看状态,不用配置。
| 区块 | 说明 |
|---|---|
| 顶部数字卡 | 应用总数 / 今日入库 / 设备数 / 卡密数 |
| 最近入库 | 最近添加的应用,点「查看全部」跳应用管理 |
| 操作记录 | 谁在什么时候改了什么 |
| 系统信息 | 程序版本、作者 QQ、PHP/MySQL/Nginx 版本 |
「当前版本」右边有个 检查更新 按钮 → 有新版本会变成红点提示。
位置:左侧「系统 → 系统更新」。这个页面干三件事。
| 字段 | 说明 |
|---|---|
| 本机域名 | 自动读取,不用填 |
| 授权码 | 向作者申请,和域名绑定,换域名要重新申请 |
填进去点「保存」。没填授权码 = 拿不到更新包。
点「检查更新」按钮:
| 结果 | 含义 |
|---|---|
| 当前已是最新版本(二开1.0) | 不用动 |
| 发现新版本:二开1.1 | 下面会出现「可用更新」区块 |
| 更新通道拒绝:授权码与域名不匹配 | 授权码错了,回 3.1 重填 |
| 更新通道拒绝:本站点授权已停用 | 作者把你这台停用了,联系作者 |
在「可用更新」区块点「立即更新到 二开1.1」→ 弹窗确认 → 系统自动:
1. 下载更新包
2. 校验 sha256(防篡改)
3. 备份现有代码到 /www/backup/qnq/
4. 解压覆盖
5. 写入新版本号
备份失败会直接中止,一个文件都不改。 更新完刷新页面即可。
更新包只覆盖程序文件,不动数据库、不动上传的图片。
位置:左侧「系统 → 站点监控」。用来管别人用你这套源码开的站。
最上面那块:
[对方域名:app.example.com] [生成授权码 + 部署命令]
填对方域名 → 点按钮 → 立刻跳出一个区块,给你两样东西:
① 部署命令(复制到对方服务器执行)
curl -fsSL https://rjy.uio1.top/install.sh | bash -s -- \
--dir /www/wwwroot/app.example.com \
--db-name 你的库名 --db-user 你的库用户 --db-pass '你的库密码'
② 授权码(发给对方,让对方填到自己后台的「系统更新 → 授权信息」)
两个框点一下就会全选,直接 Ctrl+C。
| 列 | 含义 |
|---|---|
| 域名 | 对方站点,带「活跃/沉默」标记(24 小时内上报过 = 活跃) |
| 版本 | 对方当前版本 |
| 应用数 | 对方库里有多少应用 |
| IP | 对方服务器出口 IP |
| 授权码 | 已生成显示码 + ↻ 按钮(点一下换新码,旧码立即失效) |
| 授权 | 「已授权」/「已停用」——点一下切换 |
| 备注 | 停用时对方后台顶部会显示这句话,写成「请联系作者续费」之类 |
| 首次 / 最后上报 | 时间线 |
| 移除 | 从列表删掉(对方再上报会重新出现) |
1. 在「授权」列点「已授权」→ 变成「已停用」
2. 在「备注」填一句提示 → 点「存」
对方后台下次打开会出现红色横幅,并且拿不到更新包。恢复就再点一次。
位置:左侧「卡密相关 → 卡密管理」。
点右上「批量生成」:
| 字段 | 说明 |
|---|---|
| 数量 | 生成多少个(一次最多 500 建议) |
| 卡密前缀 | 比如 VIP-,生成的码会变成 VIP-A1B2C3D4 |
| 时长范围 | 卡密对应的有效期(天) |
| 备注 | 内部标记,比如「双十一活动」 |
点「生成」→ 弹窗显示本批卡密,可以「全选复制」或「导出 TXT/CSV」。
| 操作 | 说明 |
|---|---|
| 状态筛选 | 未使用 / 已使用 / 已禁用 |
| 搜索 | 输卡密、备注、设备 ID 都能搜 |
| 禁用 | 把没用过的卡密作废 |
| 删除 | 物理删除,慎用 |
| 导出 | 按当前筛选导出 TXT 或 CSV |
位置:左侧「卡密相关 → 卡密领取」。控制前台「领取卡密」页面。
| 字段 | 说明 |
|---|---|
| 领取项名称 | 前台显示的名字,比如「微信助力」 |
| 时长 | 领到的卡密有效期(天) |
| 每日上限 | 每个设备每天最多领几次,0 = 不限 |
| 活动说明 | 显示在领取按钮下面 |
| 启用 | 关掉后前台看不到这个领取项 |
| 字段 | 说明 |
|---|---|
| 活动开始/结束 | 过期后前台提示「活动已结束」 |
| 总库存 | 全部领完就停 |
页面下方是记录表,能看到谁(哪个设备、哪个 IP)在什么时候领了哪个卡密,可以按状态筛选、批量删除。
位置:「设备管理 → 设备管理」。
| 操作 | 说明 |
|---|---|
| 添加设备 | 填 UDID + 备注 + 到期时间,手动授权一台设备 |
| 编辑 | 改到期时间、备注 |
| 删除 | 取消授权 |
| 搜索 | 按 UDID / 备注查 |
「使用的卡密」列显示这台设备是哪个卡密激活的,方便对账。
位置:「设备管理 → 设备黑名单」。
| 字段 | 说明 |
|---|---|
| 设备 ID 或 IP | 要封的对象 |
| 屏蔽原因 | 内部记录 |
| 到期时间 | 留空 = 永久封;填了到期后自动解封 |
被拉黑的设备访问源会直接拒绝。
位置:左侧「软件源配置 → 软件源配置」。这里是源对外暴露成什么样的总开关。
| 字段 | 说明 |
|---|---|
| 站点名称 | 显示在源上的名字(AltStore 里看到的那个) |
| 站点图标 | 源图标 URL 或上传 |
| 源标识符 | 唯一 ID,一般不用改 |
| 源版本号 | 改内容建议顺手 +1 |
| 发布接口地址 | https://你的域名/api_publish.php,别乱改 |
| API 密钥 | 第三方工具往这里发应用时要带的密钥 |
| 用户可访问的服务器地址 | 前台下载链接的域名 |
| 自动上锁新应用 | 开:新入库的应用默认要卡密 |
| 自动跳过无链接 | 开:抓取时没拿到下载地址的直接丢弃 |
| 禁止 IP | 一行一个 IP,直接拒绝访问 |
| 保护开关 | 开:未授权访问只看得到占位页;关:能看到应用列表但下载链接被抹掉 |
改完点「保存设置」。
位置:「软件源配置 → 软件源复制」。
用途:把别人的 AltStore 源(xxx.com/appstore)整站搬进自己库。
| 字段 | 说明 |
|---|---|
| UDID(可选) | 有些源带 UDID 才给完整下载链接,填你已授权的 UDID |
| 抓取 | 拉取对方源,列出所有应用 |
| 勾选应用 | 全选 / 单选 / 按分类筛 |
| 上锁方式 | 全部上锁 / 全部解锁 / 跟随原源 |
| 空链接处理 | 待补全(先入库占位)或 跳过 |
| 重复处理 | 跳过 / 补全链接 / 覆盖 / 按名字合并 |
| 导入 | 开始搬 |
对方源如果是加密的(返回一串乱码),会自动重试,多次失败就是对方禁止了抓取。
位置:「软件源配置 → TG 频道爬虫」(依赖一台独立 worker 服务器,见 README)。
| 字段 | 说明 |
|---|---|
| 启用爬虫 | 总开关 |
| 频道用户名 | 主频道,比如 gekuGou(不带 @) |
| 回补条数 | 启动时往回抓多少条 |
| 默认上锁 | 新入库应用是否要卡密 |
| 默认分类 | 应用 / 游戏 / 影音 / 工具 / 插件 |
| OSS 目录前缀 | 文件存到对象存储的哪个目录,比如 ipa/ |
| 通讯密钥 | worker 和站点之间的口令,点「重置密钥」可换(换了要同步改 worker 配置) |
实时面板,1 秒刷新:
| 显示 | 含义 |
|---|---|
| 下载中 / 上传中 | 当前正在处理的包 |
| 已完成 / 失败 / 排队 | 计数 |
| 今日完成 | 今天成功入库的数量 |
| 进度条 | 每个任务的百分比 + 速度 + 剩余时间 |
爬虫自动搜索到的「有 IPA 内容」的频道。
| 列 | 说明 |
|---|---|
| 频道 | 点开能跳 Telegram 验证 |
| 抽样 IPA | 抽查最近消息里有几个 .ipa(0 的会被过滤,不会入库) |
| 状态 | 监听中 / 已暂停 |
| 暂停 / 启用 | 点一下切换,10 分钟内生效 |
| 移除 | 从池里删掉 |
用来纠正自动分类。每行一条 词=类型:
原神=2
和平精英=2
Filza=4
内透=5
类型:1应用 2游戏 3影音 4工具 5插件
保存后点「按关键词库重分类现有应用」,会按新词库把已入库的 TG 应用重新归类。
| 字段 | 说明 |
|---|---|
| api_id / api_hash | Telegram 开发者凭证 |
| session 字符串 | 登录后拿到的会话,留空则用 worker 本地配置 |
| 代理 | socks5://user:pass@ip:port,跨 DC 慢时挂欧洲代理最有效 |
| 并发连接数 | 1–16,别超过 4(会被 Telegram 限流) |
| 限速 MB/s | 0 = 不限 |
| 大文件阈值 | 超过这个大小且机器忙时,排到夜间窗口 |
| 夜间窗口 | 默认 00:00–08:00 |
| 抓取天数 | 启动时回扫最近 N 天 |
| 单频道扫描上限 | 每个频道最多看多少条消息 |
| OSS 五项 | AK / SK / Bucket / Endpoint / 内网 Endpoint / 直链域名 / 是否走内网 |
位置:左侧「资源管理 → 应用管理」。日常最常来的地方。
点「添加应用」,逐项填:
| 字段 | 说明 | 例子 |
|---|---|---|
| 应用名称 | 显示名 | 微信 |
| 版本号 | 前台显示 v 后面那串 | 8.0.68 |
| 分类 | 应用/游戏/影音/工具/插件 | 应用 |
| 下载地址 | .ipa 直链,或点「选择文件」上传 | https://... |
| 大小 | 字节数 | 448790528 |
| 图标 | 图片 URL 或上传 | https://... |
| 简介 | 前台详情里显示的说明 | 支持多行 |
| 付费/锁定 | 开 = 需要卡密 | 关 |
| 排序权重 | 越大越靠前 | |
| 主题色 | 卡片渐变(可选) | #667eea → 018084 |
| 版本更新说明 | 弹窗里显示 | 修复若干问题 |
保存后前台 / 首页马上能看到。
| 操作 | 说明 |
|---|---|
| 搜索 | 按名称 / 版本 |
| 分类筛选 | 按类型过滤 |
| 置顶 | 直接跳到第一位 |
| ↑ / ↓ | 和上下一条交换顺序 |
| 编辑 | 改任意字段 |
| 删除 | 删单个 |
| 批量 | 勾选多条后可「删除选中」「上锁选中」「解锁选中」 |
| 按筛选批量 | 对当前筛选结果整体删除 / 上锁 |
| 删空链接 | 一键删掉所有没有下载地址的记录 |
| 链接状态标记 | 「失效」「可疑」标签,来自链接体检 |
位置:左侧「资源管理 → 文档管理」。
| 字段 | 说明 |
|---|---|
| 文档标题 | 前台显示 |
| URL 别名 | 英文短名,生成 /docs/别名.html |
| 分类 | 帮助 / 文档 / 指南 |
| 排序权重 | 越大越靠前 |
| 状态 | 发布 / 草稿 |
| 文档描述 | 列表页显示的简介 |
| 文档内容 | Markdown,支持 HTML |
编辑器上方有个按钮 「插入进群卡片」,点一下正文里会出现:
扫码进群领口令扫码加入微信群,群公告里获取「领取口令」;口令一人一份,过期不补。- 微信扫码加入群聊(二维码过期可在群公告找最新)
- 在群公告里查看当次「领取口令」
- 回到本站用 UDID + 口令 领取

保存后,这篇文章顶部就会渲染出「扫码进群领口令」的卡片(二维码取自「网站设置 → 微信群」)。
也可以手写 ,效果一样。
# 一级标题 ## 二级标题 ### 三级标题
**加粗** *斜体* ~~删除线~~
- 无序列表 1. 有序列表
> 引用
`行内代码` ``` 代码块 ```
[文字](链接) 
| 表格 | 表格 |
位置:左侧「采集工具 → 链接体检」。
用途:批量检查所有应用下载地址还活着没有。
| 操作 | 说明 |
|---|---|
| 开始体检 | 从头扫一遍(几千条要几分钟) |
| 继续扫描 | 只扫「未检查」的 |
| 只扫失效 | 复查上次判定失效的 |
| 删除确认失效的 | 把死链应用删掉 |
| 删除失效+可疑 | 连可疑的一起删 |
| 结果标签 | 正常 / 可疑 / 失效,列表可筛 |
体检会真的去请求每个文件头,量大会占用带宽,建议夜间跑。
位置:左侧「网站管理 → 网站设置」。前台所有文案都在这。
| 字段 | 说明 |
|---|---|
| 站点标题 | 浏览器标签页标题 |
| 前台标题 | 页面顶部大标题 |
| 关键词 | SEO 用,逗号分隔 |
| 描述 | SEO 描述 |
| LOGO | 站点图标 |
| 备案号 | 填了会在页脚显示并链到工信部 |
| 版权 | 页脚版权信息 |
| 公告内容 | 前台顶部滚动公告(支持 HTML) |
| 公告开关 | 开 / 关 |
| 前台公告 | 前台首页是否显示公告 |
| 字段 | 说明 |
|---|---|
| 显示微信群 | 开:前台显示进群卡片 |
| 群说明文字 | 卡片里的说明,比如「扫码加入微信群,群公告领取口令」 |
| 二维码图片 | 上传群二维码 |
改一次,领卡页和所有用 的文档同时生效。
位置:左侧「网站管理 → 网站安全」。
| 功能 | 说明 |
|---|---|
| 修改密码 | 当前密码 + 新密码 + 确认 |
| 登录日志 | 谁在什么 IP 什么时候登录过 |
建议:
1. 密码至少 12 位,含大小写和数字
2. 不要把 /admin/ 路径发到公开群
3. 定期看登录日志,发现陌生 IP 立刻改密码
| 页面 | 用途 |
|---|---|
| 监控与接口 → API 请求 | 第三方调用发布接口的记录(谁、什么 IP、成功失败) |
| 监控与接口 → 监控记录 | 前台设备访问源的记录,可按 UDID / IP 查 |
这两个页面主要是排查问题用:对方说「我下载不了」,先来这里看他的请求有没有打进来、返回了什么。
Q:前台首页显示「未授权访问」怎么办?
去「软件源配置」看「保护开关」和「禁止 IP」,或者给访问设备授权。
Q:改了网站设置,前台没变?
浏览器缓存,Ctrl+F5 强刷。还不行就看是不是改的是 站点标题 而不是 前台标题。
Q:TG 爬虫不抓了?
按顺序查:
1. 后台「TG 频道爬虫」→ 启用爬虫 是不是关了
2. 「爬虫进度」→ 有没有卡在「排队」
3. 服务器上 systemctl status tgworker
4. 看日志 journalctl -u tgworker -n 50
Q:更新提示「授权码与域名不匹配」?
授权码和域名是一对一的。换域名后要回作者那边重新生成,不能沿用旧的。
Q:应用能搜到但下载 404?
去「链接体检」扫一遍,失效的删掉或换链接。
Q:备份在哪?
/www/backup/qnq/(系统更新时自动生成)mysqldumpQ:误删了应用能恢复吗?
不能直接恢复,只能从备份库导回去。所以重要操作前先备份数据库:
mysqldump -u用户 -p 库名 > /www/backup/db_$(date +%Y%m%d).sql
| 频率 | 做什么 |
|---|---|
| 每天 | 看概览的数据、看爬虫进度有没有卡住 |
| 每周 | 跑一次链接体检,清死链 |
| 每月 | 备份数据库 + 检查磁盘空间(df -h) |
| 有新版 | 系统更新 → 检查更新 → 立即更新 |