stevenjx 8353b02c7d 构建依赖改从镜像获取,修复 CI
上游 blackbearreloaded/ps5-homebrew-ui 与 ps5-opengl 已从 GitHub 删除,
导致 build workflow 在 clone 阶段就失败:

- ps5-react/dependencies.lock.json 的 platform 地址指向 stevenjx/ps5-homebrew-ui
  (同一 revision 4bd9425,patches 不变)
- workflow 从该仓库的 deps-1 release 下载 ps5-opengl-sdk-1.0.0.tar.gz
  (sha256 与原地址一致)
- README 说明这两处替换
2026-10-20 18:21:15 +06:30

NASdrive

PS5 上的局域网游戏库。 配合 ps5-manager, 把 NAS 里存的 PS5 / PS4 游戏放上大屏:浏览、搜索、看简介与截图,一键装到主机上。

本项目基于 MyLuxy/overdrive 反编译重建的源代码二次开发, 已移除原作者的全部在线商店、下载源、CDN 与自动更新功能,只做局域网里的自家游戏库。


特性

  • 只展示你真的有的游戏:清单来自 NAS,ps5-manager 里没有的、文件已经不在盘上的,一律不出现
  • 商店式界面:精选 Spotlight、热门 / 新作 / 评分滑轨、类型专区、完整网格 + 筛选 + 排序
  • 详情页:封面、Hero、透明 Logo、评分、开发商、类型、多段简介与截图画廊
  • 跨区共用介绍:港版 / 欧版 / 美版 TitleID 不同,靠「标题 + 平台」自动落到同一份资料
  • 一键安装:从 NAS 拉取 PKG(本体 → 补丁 → DLC),交给系统安装器,装完即删临时文件
  • 自动发现 NAS:UDP 48620 广播;找不到时可手动填 IP:端口
  • 收藏、搜索、安装队列、文件管理:手柄完成全部操作,无需键鼠
  • 13 种语言:English、Deutsch、Español、Français、Português (Brasil)、Русский、 Bahasa Indonesia、日本語、简体中文、العربية、اردو、हिन्दी、বাংলা
  • 手柄操作:L1 R1 切换分区,✕ 确认,○ 返回

工作原理

┌──────────────┐   UDP 48620 广播发现     ┌────────────────────┐
│  PS5         │ ───────────────────────▶ │  NAS               │
│  NASdrive    │ ◀─────────────────────── │  ps5-manager :8280 │
│              │   /api/overdrive/*       │                    │
└──────────────┘                          └────────────────────┘
   安装 PKG ◀──────── /download/{id}/{文件} ────────┘
接口 用途
GET /api/overdrive/ping 确认对端是 ps5-manager,拿到服务名与游戏数
GET /api/overdrive/manifest 全部游戏(卡片字段:封面、首段简介、类型、评分、容量)
GET /api/overdrive/games/{title_id} 详情:多段简介、截图、包清单
GET /api/overdrive/releases/{title_id} 直装地址,顺序固定 本体 → 补丁 → DLC
GET /api/overdrive/cover|icon|art/{id} 封面 / 图标 / Hero / Logo / 截图的代理(NAS 缓存)
  • 素材全部走 NAS:主机只需要访问 ps5-manager 一个地址,不依赖外网 CDN
  • 下载地址由 NAS 按自己实际被访问的地址生成,Docker 桥接、端口映射都不会指错
  • 协议细节见 docs/PS5MANAGER.md

安装

需要:已破解的 PS5,并且开机时加载了 ShadowMount+(自动挂载 .exfat 镜像) 与 kstuff。

  1. 下载 NASdrive.exfat(GitHub Releases,或 Actions 里最近一次构建的产物)
  2. 复制到 U 盘的 homebrew 目录
  3. U 盘插上 PS5,ShadowMount+ 会自动挂载并安装
  4. 从主屏幕启动 NASdrive

首次启动会自动在局域网里广播寻找 ps5-manager。如果你的 NAS 用桥接网络跑 Docker(收不到广播), 进入「服务器」页手动填写 192.168.1.10:8280 即可。

从源码构建

依赖:LLVM 18、CMake、Ninja、NASM、Python 3.12+、Node.js、exfatprogs(打包镜像用)。

npm run setup     # 首次:装齐编译与 Python 依赖(Linux 上会要 sudo)
npm run build     # 构建 + 打包出 NASdrive.exfat
npm run build:app # 只构建,产物在 ps5-react/dist/PPSA99058

只想看看界面:

npm run preview   # 桌面预览窗口,不需要 PS5 工具链
npm run dev       # 改 app/ 下的文件自动重建

CI 见 .github/workflows/build.yml: 推送到 main 产出构建产物,手动触发会创建/更新一个草稿 Release。

上游 blackbearreloaded/ps5-homebrew-ui 与 ps5-opengl 已从 GitHub 删除, 因此框架源码改从 stevenjx/ps5-homebrew-ui 获取(同一 revision 4bd9425),OpenGL SDK 压缩包放在该仓库的 deps-1 release 里, sha256 与原地址一致。ps5-react/dependencies.lock.json 只改了这一个 URL。

开发

目录 说明
app/ 应用源码(React / JSX,运行在 ps5-react 的 QuickJS 上)
app/nas/ 与 NAS 的全部交互:发现、API、数据模型、详情、安装队列、服务器页
app/browse/、app/game/、app/downloads/ 首页滑轨、详情页、安装页
app/data/pages/ 离线游戏介绍(简介 + 截图),按 TitleID / 标题跨区匹配
ps5-react/ 运行时与构建工具链(上游框架,未改动行为)
packaging/ exFAT 镜像打包脚本

改完 app/data/pages/ 里的介绍后,重建一次索引:

python3 scripts/build-pages-index.py

提交前的最小校验:应用能打包。

./ps5-react/.deps/embeddedReact/bridges/quickjs/js/node_modules/.bin/esbuild \
  app/index.jsx --bundle --format=esm \
  --external:react --external:react/jsx-runtime --external:@ps5-react/core \
  --loader:.ttf=file --loader:.png=file --loader:.wav=file --loader:.json=json \
  --outdir=/tmp/nasdrive-check

更多见 docs/DEVELOPMENT.md。

常见问题

启动后一直显示「正在查找 NAS」 先确认 ps5-manager 在跑:浏览器打开 http://NAS_IP:8280/api/overdrive/ping 应返回 JSON。 Docker 用 network_mode: host 才能收到广播;桥接网络就手动填地址。

有游戏,但封面 / 截图是空白 NAS 第一次抓取素材需要能上外网。抓过一次后会按内容哈希缓存在 config/covers/art/, 之后主机访问的只是 NAS。

点安装没反应 / 立刻失败 多为磁盘空间不足(设置里可以换安装位置)或 PKG 已从 NAS 上删除。 安装进度与错误原因在「安装」页可查。

怎么更新 NASdrive 本项目没有自动更新:重新构建(或下载新的 NASdrive.exfat),关闭应用后覆盖 U 盘里的旧镜像, 重启主机即可。游戏与设置在 NAS 上,不受影响。

致谢

  • MyLuxy:反编译并重建了 Overdrive 的完整源码,本项目的起点
  • ps5-react:PS5 上的 React 运行时与构建工具链
  • ShadowMount+:负责挂载 .exfat 镜像
  • ps5-manager:NAS 端的游戏库与全部接口

ps5-react/ 以 GPL-3.0-or-later 授权,自带 LICENSE、LICENSE-ATTRIBUTION 与 NOTICE; 依赖声明会随构建复制进 notices/,清单见 ps5-react/docs/DEPENDENCIES.md。

NASdrive 是非官方 homebrew 项目,与 Sony Interactive Entertainment 无关。 PlayStation、PS5 是 Sony Interactive Entertainment 的商标。

S
Description
GitHub pull mirror of stevenjx/NASdrive. GitHub repository ID: 1426935773.
https://github.com/stevenjx/NASdrive Readme
8.4 MiB
0 Stars 1 Watchers 0 Forks
2026-10-20 18:02:37 +02:00
Languages
C++ 33.7%
JavaScript 28.7%
Pawn 26.7%
Python 7.4%
C 2.6%
Other 0.9%