Docker版 Open WebUI のパスワードを忘れたときの復旧方法

Open WebUI を Docker で動かしていて、管理者パスワードを忘れてしまったときの復旧手順です。
今回は bind mount で /app/backend/data をローカルフォルダにマウントしている構成が前提です。

docker pullで新しいコンテナを持ってきた後に、ブラウザで記憶していたはずのメールアドレスとパスワードが消えてしまって、しかもパスワードも忘れた・・・という状況からの手順です。

1. マウント方式の確認

docker-compose.ymlvolumes を確認します。
例えばこんな記述なら bind mount です。

volumes:
  - ./open-webui:/app/backend/data

この場合、コンテナ内部の /app/backend/data が、ホストの ./open-webui に対応します。


2. bcryptハッシュを作成

新しいパスワードを bcrypt 形式で作成します。
htpasswd コマンドがない場合は sudo apt install apache2-utils などでインストール)

htpasswd -bnBC 10 "" 'new-password' | tr -d ':\n'

出力例:

$2y$10$zPO4Sfi...(省略)...

この $2y$... が新しいパスワードのハッシュです。


3. SQLite で authテーブルを確認

Alpine コンテナを使って SQLite を開きます。

docker run -it --rm -v $(pwd)/open-webui:/data alpine sh
apk add --no-cache sqlite
sqlite3 /data/webui.db

SQLite プロンプト(sqlite>)で以下を実行して登録ユーザーを確認します。

SELECT id, email, password FROM auth;

出力例:

id  email               password
1   admin@example.com   $2y$10$abc...

4. パスワードの書き換え

確認したメールアドレスを使ってパスワードを更新します。

UPDATE auth SET password='新ハッシュ' WHERE email='admin@example.com';
.quit

5. コンテナ再起動

docker restart open-webui

これで新しいパスワードでログイン可能になります。


注意点・失敗しやすいポイント

  • メールアドレスの勘違い (私はここも勘違いしていました)
    • 実際に登録しているメールを SELECT で確認するのが確実です。
  • ハッシュ形式の間違い
    • 平文ではなく、必ず bcrypt ハッシュ($2y$$2b$)を使うこと。
  • 違うDBを操作している
    • volume/bind mount のパスが合っているかを再確認。

まとめ

  • パスワードを忘れても DB を直接編集すれば復旧可能
  • まずは auth テーブルのメールアドレス確認が重要
  • bcrypt ハッシュを生成して UPDATE すればOK

以上になります。またお会いしましょう

鹿児島県の出水市という所に住んでいまして、インターネット周辺で色々活動して行きたいと思ってるところです。 Webサイト作ったり、サーバ設定したり、プログラムしたりしている、釣りと木工好きなMacユーザです。 今はデータサイエンスに興味を持って競馬AI予想を頑張ってます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


The reCAPTCHA verification period has expired. Please reload the page.

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください