Vyline DOCS

Persistence & Storage

コンテナを作り直しても残す必要があるデータと、その保存先です。

2つの永続化境界

/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します。コンテナ自体は削除・再作成できますが、この2ディレクトリを消すと状態を失います。

Bind mount ownership

image内で /app/data をbunユーザー所有にしていても、ホストbind mountを重ねればホスト側ownershipが優先されます。entrypointは起動初期だけrootでownershipを補正し、書き込み確認後にunprivileged userへ落とします。

「復元できたように見えて消える」問題

restore -> memoryには履歴あり
        -> DB書き込み失敗
        -> UIでは一時的に見える
        -> reload/restart
        -> 消える

この症状になった場合は、Protocolの復号処理だけでなくbind mountとwrite permissionを先に確認します。現在のchat履歴はaccountごとのSQLiteへ保存されるため、画面に見えたことだけでは永続化成功を意味しません。

docker inspect vyline
docker logs vyline
du -sh data storage

Storage表示

backendは datastorage を走査して使用量を集計し、利用可能容量は保存先filesystemに対する statfs から取得します。cache・保存media・backupは別項目として集計されます。ホスト側で保存先を変更した場合は、実際にmountされたfilesystemが容量表示の基準になります。

ページ名・設定名・エラー名で検索