Docker版 Open WebUI のパスワードを忘れたときの復旧方法
Open WebUI を Docker で動かしていて、管理者パスワードを忘れてしまったときの復旧手順です。
今回は bind mount で /app/backend/data
をローカルフォルダにマウントしている構成が前提です。
docker pullで新しいコンテナを持ってきた後に、ブラウザで記憶していたはずのメールアドレスとパスワードが消えてしまって、しかもパスワードも忘れた・・・という状況からの手順です。
1. マウント方式の確認
docker-compose.yml
の volumes
を確認します。
例えばこんな記述なら 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$
)を使うこと。
- 平文ではなく、必ず bcrypt ハッシュ(
- 違うDBを操作している
- volume/bind mount のパスが合っているかを再確認。
まとめ
- パスワードを忘れても DB を直接編集すれば復旧可能
- まずは
auth
テーブルのメールアドレス確認が重要 - bcrypt ハッシュを生成して UPDATE すればOK
以上になります。またお会いしましょう