Open WebUI移行前に何を保全する?volume・DB・secretの確認

CHATGPT / AIChatGPTなどの生成AIを活用して運営・記事制作・更新を行っています。制作方針

Docker版Open WebUIを更新・移行する前に、named volumeだけで足りるかを確認。SQLiteのWAL、uploaded files、vector data、WEBUI_SECRET_KEY、外部databaseを分け、復元先を消さない確認順を公式資料から整理します。

移行前にdatabase、uploads・vector data、secret keyを確認し、復元先volumeを分ける保全判断図

先に結論

Docker版Open WebUIを別hostへ移すなら、webui.dbだけのコピーでは足りません。まずComposeやcontainerのmountを確認し、Open WebUIのdata volume(またはdata directory)、uploaded files、vector dataの保存先、同じWEBUI_SECRET_KEYを保全対象として記録します。SQLiteを使う場合はWALも関係するため、稼働中にdatabaseファイルだけをコピーしないでください。

更新だけなら現在のvolumeを誤って消さないbackupとversion確認から、別hostへの移行なら外部database・vector store・secret keyも含めて移行範囲を決めます。restore先volumeを本番volumeと分けてから中身を確かめるのが安全です。

確認日: 2026年10月18日(Asia/Tokyo)
対象: DockerでOpen WebUIを動かし、通常更新または別host移行を検討する初心者向けの確認票
確認方法: Open WebUIとDockerの公式資料による机上調査。containerの実データ、backup archive、復元後の動作は実機確認していません。

最初に「更新」か「移行」かを分ける

container imageを更新するだけなら、Open WebUIのdataはcontainer内ではなくDocker volumeまたはlocal databaseに置かれ、imageを入れ替えてもdataはvolume側に残る構成が案内されています。ただし、これはvolumeを削除・置換してよいという意味ではありません。別hostへ移す場合は、Docker volumeだけでなく、databaseやvector storeが外部serviceに置かれていないか、secret keyをどこから渡しているかも確認が要ります。

確認対象何を調べるか移行時の判断
Open WebUIのdataComposeのvolumesまたはcontainerのmount先と、実際のnamed volume名公式例のopen-webuiをそのまま使わず、現在の設定と一致するvolumeを記録する
SQLite database/app/backend/data/webui.dbを使っているか、外部PostgreSQLかSQLiteとPostgreSQLでは保全・復元方法が異なる。外部DBならPostgreSQL側の手順を使う
WALとsidecarSQLiteのwebui.db-wal、復元先に残る-wal/-shmWAL運用中のDB単体コピーを避け、異なるdatabaseのsidecarを混ぜない
filesとvector data/app/backend/data/uploads、/app/backend/data/vector_db、外部vector databaseDBのrecordだけでなく、対応するfile・vectorの実データも保全する
secret keyWEBUI_SECRET_KEYのCompose secretや環境設定、同じ値を安全に再設定できるか移行先へ同じkeyを秘密管理の仕組みから渡す。値を記事・平文backup一覧へ書かない

保全範囲を決める確認順

  1. 起動定義を確認する: Compose fileまたはcontainer設定からimage tag、dataのmount元とcontainer内path、database/vector storeの接続先、secretの渡し方を読み取ります。稼働中の設定を変更する前に、現在の値を安全な場所へ記録します。
  2. 保存方式を特定する: Open WebUI内蔵SQLiteか外部PostgreSQLかを確認します。Open WebUIのdatabase資料にあるSQLite手順はPostgreSQLには適用できません。vector dataもlocal directoryか外部serviceかを分けます。
  3. 移すdataを列挙する: 内蔵SQLiteならdatabaseの記録だけでなく、uploadsとvector storeを含むdata directory全体を確認します。別の場所へbind mountしたdirectoryやexternal vector databaseがあれば、named volumeのarchiveには入らないため別枠で保全します。
  4. volume全体のbackupを作る: 更新前の標準的な入口としてOpen WebUIのbackup例が示すvolumeのtar archiveを使えます。例に出るopen-webuiは仮のvolume名として扱い、実際に確認したsource volumeとbackup保存先へ置き換えてください。archiveの対象volumeと出力先を実行前に再確認します。
  5. secretを別に保全する: 別host移行では同じWEBUI_SECRET_KEYを維持できるか確認します。Open WebUIの資料では自動生成keyがdata directoryの外に置かれる場合も示されています。volume archiveだけに含まれると決めつけず、secret managerやComposeの安全な設定元を確認します。

SQLiteをDB単体で移す場合の注意

Open WebUIのSQLiteはWAL modeを使うため、確定済みでもまだwebui.db-walにある変更があり得ます。Open WebUI公式の個別database手順は、containerを停止し、同じimageを使ってWAL checkpointを実行してからdatabaseをコピーする順です。管理画面のDatabase downloadはwebui.db-walを含まず、直近の変更が漏れる可能性があると説明されています。初心者が迷う場合は、DB単体exportよりOpen WebUI全体のdata保全を優先してください。

既に起動した復元先containerへdatabaseを置き換えるとき、公式手順は古いdestination側のwebui.db-walとwebui.db-shmを除いてからimportするよう案内しています。別databaseのsidecarを混ぜると整合しません。実データを上書き・削除する操作は対象volumeを特定できた場合だけ、停止中の検証用volumeで行ってください。

安全な復元確認と元に戻す準備

公式のrestore例は、archiveを展開する前に対象volume内を消去します。volume名やmount先を誤ると既存dataを失うため、backup用volumeとrestore先を別にし、Compose内のvolume名と実際の割当を照合してください。検証では本番volumeを指定せず、別volumeへ復元し、ログイン、chat履歴、uploaded file、knowledge/vector検索の必要項目を確認します。

  • archiveのファイル名、作成時刻、source volume、含めた外部database/fileの一覧を記録する。
  • 復元を試す場合は本番containerを止めず、別名volumeと別portを用意して検証する。
  • 新versionでdatabase migrationが走る場合、imageを前のtagへ戻すだけではschemaが戻らないことがある。更新前backupを残し、release noteとrestore手順を確認する。
  • 新環境で必要なdataを確認するまで、旧volumeと元のsecret設定を削除しない。

ここまでの手順は公式資料から整理した確認方法です。この記事ではarchiveの完全性や特定環境への復元成功を実測していません。復元試験をしていない環境では、backupがあるだけで復旧可能と断定できません。

既存記事との関係

Docker版Open WebUIのOllama接続先を確認する記事はcontainerとhostのネットワークが対象で、本稿のdata保全とは別の判断です。Ollamaで最初の会話を始める手順はローカルLLMの導入を扱います。Dockerの基本的なvolumeとcontainerの関係も必要に応じて参照してください。

参考資料

表を拡大

左右にスワイプして読めます