Kikoeru 到底是什么:自托管同人音声流媒体平台的工作原理
一句话概括
Kikoeru = 自己搭服务器 + 管理本地音声库 + 多端收听。它不提供任何内容,也不托管任何音频——全部音声文件都在你自己的硬盘上,Kikoeru 做的是把它们整理好、建索引、配上好看的播放器。
核心组件
整套东西分三块:
后端:kikoeru-express
这是核心服务。基于 Node.js + Express 构建,数据库用 SQLite(单文件,轻量)。它负责:
- 扫描你挂载的文件夹,识别里面的音频文件
- 根据文件夹名或番号去 DLSite 抓取元数据(标题、封面、标签、作者、发售日期)
- 提供 RESTful API 给前端和客户端调用
- 可选的 JWT 用户认证
- 通过 Socket.io 把扫描进度实时推给 Web 界面
技术栈里还有 knexjs 做数据库迁移、cheerio 解析 HTML、axios 发请求。
前端:kikoeru-quasar
基于 Quasar 框架(Vue)构建的 PWA。打包后就是一个纯静态 dist/ 目录,直接丢在后端的 Web 根目录就能访问。
PWA 模式下可以像 APP 一样通过浏览器"添加到桌面"安装,离线也能打开基本页面。如果远程 HTTP 访问没有 HTTPS 证书,Service Worker 不会生效,退化成 SPA,但功能不受影响。
客户端
除了 Web 界面,社区还延伸出了:
- iOS TestFlight 客户端(number17 维护,原生 SwiftUI)
- Android 第三方客户端(如 KikoFlu,社区开发)
- Web PWA 添加到桌面
工作流程(从文件到可搜索)
- 你把音声文件按番号/作品名分好文件夹,丢在硬盘某个目录
- 部署 Kikoeru 服务器,把那个目录挂载进容器或 exe 的工作目录
- 在 Web 界面点"添加根文件夹" → 输入挂载后的绝对路径
- 点"扫描音声库" → Kikoeru 递归遍历所有子文件夹,识别音频文件(mp3、wav、flac 等)
- 自动去 DLSite 抓元数据 → 匹配番号,拿到标题、封面、标签、作者等
- 写入 SQLite 数据库 → 现在你可以在 Web 界面按标签搜、按评分排序、打星标了
- 手机连同一个服务器 → 打开 PWA 或 App,就能看到和电脑上一模一样的库
它不做什么
- 不上传你的文件到任何云服务
- 不提供在线播放(文件全在你自己的机器上,流媒体是局域网传输)
- 不做版权内容分发——GPL-3.0 协议下的开源项目,本身不含任何版权音声
适合的场景边界
Kikoeru 最适合的是已经有大量本地收藏的用户。如果你还需要一个下载器,那不在 Kikoeru 的覆盖范围内——社区里有人写了配合 Aria2 从 AsmrOne 下载的工具,但那是另一个项目。