老柯修机铺

通讯行老师傅的手机软件笔记——每款 App 装过、用过,才敢写下来

kikoeru 藏得挺深的五个冷门操作,用过三个才算老玩家

项目内容
软件kikoeru
版本3.0.9
平台Android APK
体积5.81M
分类工具
包名com.cnl.kikoeru
官网kikoeru 官网
下载一kikoeru 下载,kikoeru 下载
下载二kikoeru 下载,kikoeru 下载
文档kikoeru 文档
介绍多数人把 kikoeru 当"开了就能听"的助眠播放器用,其实它背后藏着不少能让体验翻倍的开关和技巧——从部署形态到鉴权策略,从多端切换到离线模式,翻一下设置项就能解锁另一层玩法。

先交代:kikoeru 是什么

简单说就是一个自托管的音声/助眠音效库——你自己在服务器上跑一套后端,把收集来的音频丢进去,然后手机、平板、浏览器全都能连上听。它本身不是 APP,是一套服务:后端用 Node.js 写的,前端是 PWA,还有第三方客户端补位。

多数人知道的用法也就停在"Docker 拉个镜像 → 手机浏览器打开 → 收藏几个常听的"。但我折腾了快一个月,翻了配置文件、换了三种部署方式、连过四种客户端,发现它藏了不少能让你从"凑合用"变"离不开"的开关。下面逐个说。

kikoeru 主界面一览

第一个:JWT 鉴权可以直接关掉——但局域网和公网的后果天差地别

这大概是最容易被忽略的设置之一。很多人部署完就忘了看这个,要么开着 JWT 每次输密码嫌麻烦,要么不知道自己其实裸奔在公网上。

在哪开? 进入 Web 界面的「设置 → 配置」,找 jwt.enable 这个字段。或者直接打开 config/config.json,改 "enable": true/false。

JWT 登录界面

局域网场景可以放心关——前提是你家里 Wi-Fi 密码够强。关了之后任何人连你家 Wi-Fi 都能直接访问你的音声库,不用输密码。独居、路由器不对外的话完全没问题,省得每次换设备都要记密码。

公网映射必须开——这是我踩过的坑。之前把端口直接映射到公网 IP 上,忘了开 JWT。后来在搜索引擎里搜自己服务器的域名,发现整个音声库被爬虫扒了一遍。不开鉴权等于把你的全部资源对全网开放,扫端口的脚本、搜索引擎、路人都能进来听、甚至删数据。最低限度也得用 Cloudflare Tunnel 或者反代 + Basic Auth 挡一下。

中间地带——如果你有时候在公司 Wi-Fi 下连家里的服务器,或者常去朋友家蹭网,建议还是开着 JWT 保险点。毕竟公司防火墙可能拦端口,但挡不住你自己带手机连。

第二个:iOS TestFlight 客户端的离线模式,比 Web PWA 强太多

很多人用 iOS 上的 Safari 打开 PWA 版,然后说"这软件后台播放会卡"、"锁屏之后就断了"。其实作者专门写了一个原生 SwiftUI 客户端,通过 TestFlight 分发——不是 PWA 的壳,是真的 APP。

怎么装? App Store 搜 TestFlight 装上,然后找邀请链接(作者在他的文档里放了),点接受就自动装好了。目前还没上 App Store,因为涉及第三方内容分发模式审核麻烦。

离线模式是真能用的——不是 Web PWA 那种"缓存一点页面"的伪离线,是直接把音频文件下载到本地。右上角有个红框按钮可以手动退出离线,或者断网时自动切换。标题旁边会显示「作品(离线)」标识,一眼能分辨。

对比差距很明显:PWA 后台播放被 iOS Safari 限制,锁屏控制栏什么都没有;原生客户端有完整后台连播,锁屏显示封面和控制按钮,控制中心也能暂停/播放。音频播放用的是原生 AVPlayer,比 Web Audio API 延迟更低。

什么人用得上? 通勤路上没 Wi-Fi、地铁信号差的人。什么人可以无视?只在家/办公室 Wi-Fi 下听的人——PWA 版够用了。

第三个:多服务器配置,一个客户端随时切换

我自己就有两台服务器跑 kikoeru:家里的小主机装 Docker 版,VPS 上用 npm 源码版(为了改点东西)。之前以为两台就得两个客户端来回切,直到发现 TestFlight 客户端支持存多个服务器地址,还能测试连接延迟。

在哪配? 打开客户端 → 设置 → 服务器地址管理,点「添加」就能填新的地址,支持局域网 IP、公网 IP、DDNS 域名。填完点「测试连接」,会返回延迟数值,帮你判断哪台近哪台远。

切换就是下拉菜单选一下——收藏、播放记录这些数据跟着服务器走,不会串。我早上在 VPS 那台收集新内容,晚上回家自动切家里那台听,无缝衔接。

收藏列表界面

补充:目前后端是单用户架构——即使开了 JWT,也只有一组用户名密码。真正的多用户隔离(每个人独立的收藏、独立的权限)作者还没实现。所以这个"多服务器"是你自己多开几套,不是一套服务多账号。

第四个:npm 源码部署,比 Docker 灵活得多——适合想改点东西的人

大多数教程只讲 Docker 一键跑,简单是简单,但你想改个界面颜色、加个小功能就得 fork 整个项目自己重新构建镜像。其实还有个 npm 包的方式——npm install kikoeru-express——装完就能跑,前端 dist/ 目录可以自己构建替换。

怎么装? 确保 Node.js 18+,然后:

npm install kikoeru-express
npm start

Express 默认监听 http://[::]:8888。

想改 UI 的话,前端仓库是 kikoeru-quasar,clone 下来 npm run build:pwa,产物在 dist/,复制到后端根目录就行。后端源码目录里 api.js 管路由和 JWT 中间件,config.js 管配置读写,想加个新的 API 端点直接改这个。

一个要注意的点:npm 包方式的 SQLite 数据库、封面、配置文件都在运行时工作目录下生成——不像 Docker 有卷隔离。建议先 cd 到一个固定的数据目录再启动,或者用环境变量指定路径,不然你换个目录启动,数据就找不到了。

第五个:连接不上时,按这个流程排查,5 分钟内定位问题

这是我最头疼也是最有用的一个发现。之前客户端连不上只会挨个试:改端口、关 JWT、换网络——完全没章法。后来整理出一个诊断流程,按步骤走基本能在 5 分钟内定位:

第一步:浏览器打开同一个服务器地址——浏览器也打不开?那服务器本身没跑起来、端口没映射、防火墙没放行,回去查部署。浏览器能打开但客户端连不上?说明服务器没问题,问题在客户端,继续往下。

第二步:JWT 开了吗? 开了的话密码对不对?Token 过期了吗?可以关掉 JWT 先临时测试连通性,确认通了再开回来。

第三步:HTTPS 证书有没有问题? 自签名证书浏览器会警告,证书过期(Let's Encrypt 90 天续期)iOS 客户端直接拒绝,域名不匹配也是常见坑。浏览器点地址栏小锁查看证书详情就能确认。

第四步:网络类型差异——Wi-Fi 下能连、4G/5G 连不上?运营商可能封了某些端口(8888、48488 经常中招),换个高端口比如 8080、8443、9000 试试。公司 Wi-Fi 下连不上?用 HTTPS + 443 端口。

还有几个常见坑:客户端版本太老(iOS TestFlight 更新跟不上后端 API 变动)、Web PWA 缓存了旧 JS(Ctrl+Shift+R 强制刷新)、CORS 跨域配置没改(前后端不同源时要在 config.json 里设 cors.origin)。

一个别踩的坑:公网开着没开 JWT

专门再提一遍这个。我之前公网裸跑了两周,某天在搜索引擎里搜自己域名,发现整个音声库被爬虫索引了好几十页。不是 kikoeru 的 bug,是你自己没设门禁。哪怕内容不是什么敏感东西,被陌生人扒走也不爽。

最低限度也得用 Cloudflare Tunnel 把 kikoeru 包在反代后面,或者至少给 Web 界面加个 Basic Auth。JWT 只是 kikoeru 自己这层,外面再套一层才稳。

收尾

kikoeru 这类自托管软件,最有意思的地方就在这里——你以为它就是个"帮你听音频"的播放器,其实翻一下配置、换一种部署方式、换个客户端,就能解锁完全不同的体验。把它用透的感觉不是"我会用这个软件",而是"这套服务是我自己搭的"。

如果上面说的五个你只用过一个两个,建议挑一个试试——从关掉 JWT 裸跑一下局域网版开始,或者装个 TestFlight 客户端体验一下离线模式,应该能感受到区别。

本文为个人基于网络公开资料整理编写,非官方内容,仅供学习交流参考;软件版权归原作者所有,请支持正版;使用过程中遇到问题请查阅官方渠道,本文不承担任何责任。

同类文章

Photoroom 挖寶:那些你可能沒發現的五個隱藏功能

大多數人對 Photoroom 的印象就是「AI 抠圖工具」,但我把它翻了個底朝天,發現五個被嚴重低估的隱藏功能——從皺褶消除到視頻生成,每個都能讓你的產品圖片質量翻倍。