SECTOR LOCKED // 已锁定星域

RK3588

RK3588 ARM 盒子(ztl A588)上的自建服务、硬件调优与踩坑记录

12 段信号在此星域
[LOG-01]

用 rclone 把夸克网盘的电影挂到 RK3588 本地:OpenAlist WebDAV 只读挂载实践

在 RK3588 的 Ubuntu 24.04 主机上,为 Docker 运行的 OpenAlist 新增宿主机侧 rclone 只读 FUSE 挂载,把夸克网盘指定电影子目录经本机 WebDAV 挂到宿主目录,供播放器或媒体库读取,且不改动原有容器、端口和存储。挂载由 systemd 管理,关闭 VFS 落盘缓存,仅内存分段读取和 5 分钟目录缓存,并限制 CPU0–3、512MiB 内存。凭据文件权限 700/600,pass 仅混淆非加密,不可分享。已验证认证、只读、分段读取和拒绝写入,未做整机重启、完整 4K、并发或断网测试。卸载前需释放占用,归档还原不自动启动服务。
[LOG-02]

在 RK3588 盒子上重做 SMB 共享:音乐与录像目录映射到 Windows 盘符

在 RK3588 盒子(Ubuntu 24.04/Samba)上,将旧 myfiles 共享改为 music、video 两个明确共享,Windows 可映射 Z:、Y: 到 \\192.168.10.62 对应目录,直接访问外接盘;旧目录和数据未删,仅移除访问入口。共享只允许 xiaozhu 读写,禁匿名,并以 hosts allow 私网白名单和 hosts deny 兜底。smbd 还监听公网 IPv6,且本机 ufw 未启用,端口默认可达,绝不能做公网映射。改配置后用 HUP 重载;Windows 重启认证失败多因凭据被错存为 admin,删除后用 cmdkey 重建映射。testparm 通过,匿名被拒,读写 SHA256 一致,并保留备份与还原归档。
[LOG-03]

硬链接搬 134GB:Cloudreve 文件实体迁移到 Blob 目录的完整过程

Cloudreve「外置机械硬盘」策略的 101 个已登记文件已从 SMB 源目录硬链接迁入策略 Blob 目录,未复制约 133.4GiB,再以单事务更新数据库 source,保持文件名、ID、逻辑结构和容量统计不变。工具默认预演,仅适用本次任务。最终设备号、inode、大小、mtime 一致,文件属主 cloudreve、600 权限,服务恢复 HTTP 200。硬链接不是备份,Blob 文件不可手工整理,原 SMB 共享已无这批文件。
[LOG-04]

RK3588 盒子上用 NPU 跑本地嵌入:给私有网盘加中文语义搜索

RK3588 盒子通过 NPU 运行 bge-small-zh-v1.5,为 Cloudreve 提供本地语义搜索,并与 Meilisearch 混合检索。全程不调用云端 API,文本只在私网桥与宿主机服务间传输,无模型费用,也不外发正文。正式部署为宿主机 systemd 服务而非 Docker:RKNN SDK 依赖设备树,容器会遮挡平台识别。服务仅监听私网地址,并设专用用户、密钥和资源限制。CPU 负责分词与归一化,NPU 跑编码器,长文本滑窗聚合。实测 NPU 端到端中位 19.16/78.92 ms,约 CPU 的 8 倍,向量余弦最低 0.999782;但样本小,仍需混合检索。部署后 554 个分块全部向量化;未验证整机重启、功耗和网页端语义搜索效果。
[LOG-05]

一个本地向量模型,三个调用方:RK3588 上 NPU 嵌入服务的多客户接入实践

将 Windows DSH graph-memory 插件和自建笔记应用接入已有的本机 NPU 嵌入服务。方案是不新起进程,复用同一 cloudreve-embedding 模型与推理锁,通过独立端口、密钥和单 IP 白名单隔离。DSH 零源码修改,仅改配置,采用带策略版本的对称编码,512 维、阈值 0.58,223 条摘要迁为 512 维且未重抽摘要,需重启 DSH 生效。笔记容器不能用 127.0.0.1,改为固定 172.24.0.2 并加入白名单,实测 512 维、约 215 毫秒。服务无 /v1/models 与 TLS,仅限可信内网,共享单 NPU 会影响排队。
[LOG-06]

不复制 133GB:用最小 ACL 让 Cloudreve 原地接管 SMB 里的旧文件

Cloudreve 社区版 4.19.1 ARM64 可把 SMB 共享中约 133.4GiB 的老文件原地登记,不复制、不移动。实现关键是给专用用户 cloudreve 加只读命名 ACL:父目录仅 --x,源树目录 r-x、文件 r--,不递归 chown,不改属主,也不改 systemd 可写范围。修复权限后新建任务 6 导入,完成后登记 101 个文件、41 个子目录,路径大小与源一致,源文件未改且可实际读取。需注意 SMB 新增文件不会自动导入,源文件改移删可能使记录失效,新上传路径也不是源目录;回滚仅恢复 ACL,不回滚数据库,归档不含数据库与业务数据。
[LOG-07]

在 RK3588 盒子上部署 Cloudreve 4.19.1:从静态二进制到内网可访问

在 RK3588 的 Ubuntu 24.04 ARM 盒子上,用 Cloudreve 社区版 4.19.1 官方 ARM64 静态二进制搭建内网私有网盘。复用已有 MySQL 容器,以 systemd 而非 Docker 运行,仅监听 192.168.10.62:5212,不做公网映射或穿透。关键配置包括 CPU 0–3 亲和性与 GOMAXPROCS=4、文件句柄上限 65535;上传目录符号链接到外接 ext4 盘,并以最小 ACL 允许服务用户穿越。启动检查会核对磁盘 UUID、文件系统、写权限和符号链接,缺盘或 UUID 变化时拒绝启动;应用成功初始化 17 张表。验证显示首页 HTTP 200、仅内网监听,线程绑定与句柄上限符合预期。数据库端口应只绑 127.0.0.1,账号按最小权限收敛;正式备份需一致性导出、加密并预演恢复,升级前先备份。未实测上传下载、分享、WebDAV、拔盘、整机重启与数据库中断。
[LOG-08]

给 Cloudreve 加上全文搜索:Tika 与 Meilisearch 的 ARM64 部署

本文记录在RK3588 ARM64上,为宿主机Cloudreve 4.19.1部署Tika和Meilisearch全文搜索,服务仅监听本机回环端口。本轮只完成依赖部署和局部验证,未开启后台开关、未重建业务索引或扫描历史文件,语义搜索暂未部署。后台需填回环端点,密钥从.env读取,最大20MB、分块1KB。已有文件不会自动入索引,需手动重建;普通Tika无OCR,扫描件和图片不能文字检索。撤销时关闭全文搜索并停止容器,down勿加-v。
[LOG-09]

缺盘也不能卡住开机:RK3588 外置 USB 存储的识别、启动与自动恢复

usb-storage-guard 解决 RK3588 盒子外接 USB 盘的缺盘阻塞开机和容器旧挂载视图问题。它按 UUID 识别盘,禁用服务直接开机入口,将外盘容器 restart 改为 no,守护无外盘依赖;盘回来自动拉起业务。守护还会复核容器内绑定,纠正盘后挂载仍见 eMMC 空目录的旧视图,并支持自动发现外盘 bind、暂停与手停持久化。实测覆盖缺盘、错误 UUID、只读和恢复,但未做真实拔插、断电或缺盘整机重启验收。
[LOG-10]

RK3588 动态调频改造:schedutil 加 80°C 温度守护的部署与实测

针对 RK3588 主机 ztl A588,文章把厂商长期 performance 的 CPU 调频改回内核 schedutil 动态策略,并叠加 80°C 温度守护:监测全部热区,≥80°C 时把所有 CPU 策略最高频率限至 1.2 GHz,≤75°C 连续三次后恢复原上限。改动于 2026-10-08 完成,未修改内核、设备树、固件、GPU/NPU 与硬件加速链路。守护管理三个 policy,小核 408 MHz–1.8 GHz、大核 408 MHz–2.256 GHz,轮询 2 秒;传感器异常或启动温度过高时保守限频。20 项单元测试及实机升降频、回滚验证通过。它不是温度恒定器,且未做整机重启、真实 80°C 长时烤机和功耗测量。
[LOG-11]

Cloudreve 离线下载 panic 修复:在 RK3588 上自建 aria2 组件

Cloudreve 4.19.1 离线下载报错,根因是主节点只配 provider=aria2,缺少 aria2 子配置且未装下载器,导致空指针 panic。修复不升级、不重启本体,在 RK3588/Ubuntu 24.04 新建独立 aria2 1.37.0 容器,仅回环发布 6800,随机 RPC 令牌,非 root、只读 rootfs、资源受限,并配合 usb-storage-guard 与外盘挂载;再用 manage.py 经官方 API 补全节点配置。验证 API 返回 1.37.0,认证 RPC 正常,未认证和局域网访问被拒,真实下载 LICENSE 35146 字节且 SHA256 一致,原有失败任务未重试。回退须先关闭主节点离线下载再停容器,不能清空子配置却保留 provider。未实测 BT、大文件、断电与缺盘重启。
[LOG-12]

HDMI-IN 接不进 OBS?从 V4L2 根因到 HPD 卡顿的完整修复

RK3588板载HDMI-IN OBS黑屏Unable to set input -1。因rk_hdmirx不实现输入ioctl,OBS强制set_input。解决:用v4l2loopback建虚拟摄像头,ffmpeg将/dev/video52的NV12透传进去,OBS采集,先桥接后开OBS。无信号时重启会风暴,脚本改为等信号锁定并退避;HPD导致Windows5.73秒卡顿,音频恢复后需重开OBS。稳定采集4KNV12与HDMI音频。