Vyline DOCS

持久化与存储

说明即使 recreate container 也必须保留的数据,以及它们的保存位置。

两个持久化边界

/app/data
├─ accounts.json
├─ accounts/<account>/chatdb.sqlite
├─ accounts/<mid>/settings.json
├─ backups/
├─ logs/
├─ plugins/
└─ token/session 等应用状态

/app/storage
├─ cache/cdn-cache/
├─ cache/icons/
├─ saved-media/
└─ media-index.sqlite

标准 Compose 把主机侧的 ./data./storage 分别 bind mount 到上述路径。container 本身可以删除并重新创建,但删除这两个主机目录会丢失持久状态。

Bind mount ownership

即使 image 内的 /app/data 属于 bun 用户,一旦叠加主机 bind mount,就会以主机文件系统的 ownership/permission 为准。entrypoint 只在启动初期以 root 修正 ownership,确认可写后降权到 unprivileged user。

“看起来恢复成功,reload 后又消失”

restore -> memory 中已有历史
        -> DB 写入失败
        -> UI 暂时看起来正常
        -> reload/restart
        -> 历史消失

出现这种情况时,先检查 bind mount 与写权限,不要只怀疑 Protocol 解密。当前聊天历史写入每个 account 的 SQLite,因此 UI 中短暂看到内容并不能证明持久化成功。

docker inspect vyline
docker logs vyline
du -sh data storage

Storage 容量显示

Backend 扫描 datastorage 计算已用空间,可用容量则通过保存位置所在 filesystem 的 statfs 取得。cache、已保存 media、backup 分开统计。主机侧修改保存路径后,实际 mount 到该路径的 filesystem 就会成为容量显示的依据。

按页面、设置或命令搜索