Open WebUIのバックアップ

XXXやった。系のブログがよくあるが、なるべくそれをやらないようにするようにしている。理由は、志村けんのいう「子作りは好きだけど、子育て嫌いなんだよね」と同じなので。出来る話を聞いても、それを使う、マネタイズにするのは辛いと思う。なので、ComfyUIで画像生成ができたーと言う記事(正しくこの一つ前の記事がそう)があっても運用まで回らない。マネタイズができない。ComfyUIでそこまで持っていくには、画像プロンプトでぇではなく、一見すると画像と関係ないプロンプトで動作させないとダメじゃないかと思う。「できたー」というのは、マスタベーションでしかない。高校の教師に言われたのが、マスタベーションは気持ちいいよね、だから英語の参考書の最初の部分しかできない。最後の仮定法まで辿り着いていない。だから英語で仮定法が出ると試験の成績が悪い。

 

閑話休題

 

Open WebUIでローカルLLMできたーでは、マスタベーションなので、ちゃんと運用。運用の一丁目一番地はやはりバックアップ。

Open WebUIのバックアップ方法は以下。

 

DockerホストにSQLite3をインストール
apt update
apt install -y sqlite3
 
オンラインバックアップ
APP_DIR=”/opt/containers/open-webui”
BACKUP_DIR=”${APP_DIR}/backup”
SRC_DB=”${APP_DIR}/data/webui.db”
DST_DB=”${BACKUP_DIR}/webui.db”
mkdir -p “$BACKUP_DIR”
sqlite3 “$SRC_DB” “.backup ‘${DST_DB}'”
sqlite3 “$DST_DB” “PRAGMA integrity_check;”
 
リストア
Open WebUI を停止してから、バックアップされた webui.db を data/webui.db に戻すだけ。
必要なら data/webui.db-wal / data/webui.db-shm は削除する。
復元例:
cd /opt/containers/open-webui
 
docker compose down
 
cp -a data/webui.db “data/webui.db.before-restore-$(date +%F-%H%M%S)”
cp -a backup/webui.db data/webui.db
rm -f data/webui.db-wal data/webui.db-shm
 
sqlite3 data/webui.db “PRAGMA integrity_check;”
 
docker compose up -d
 
 
自動化
毎日12時にバックアップ(1世代上書き)
バックアップの世代管理は、/opt/containersをバックアップしているKopiaに任せる。
cat <<‘SCRIPT’ > /opt/containers/open-webui/backup/backup-openwebui-sqlite.sh
#!/usr/bin/env bash
 
# Open WebUI SQLite online backup
# Comments are intentionally written in English.
 
APP_DIR=”/opt/containers/open-webui”
BACKUP_DIR=”${APP_DIR}/backup”
 
SRC_DB=”${APP_DIR}/data/webui.db”
DST_DB=”${BACKUP_DIR}/webui.db”
 
mkdir -p “${BACKUP_DIR}”
sqlite3 “${SRC_DB}” “.backup ‘${DST_DB}'”
sqlite3 “${DST_DB}” “PRAGMA integrity_check;”
SCRIPT
chmod +x /opt/containers/open-webui/backup/backup-openwebui-sqlite.sh
 
 
cat <<‘CRON’ > /etc/cron.d/openwebui-sqlite-backup
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
 
0 12 * * * root /opt/containers/open-webui/backup/backup-openwebui-sqlite.sh >> /var/log/backup-openwebui-sqlite.log 2>&1
CRON
chmod 644 /etc/cron.d/openwebui-sqlite-backup
 
このコピペだけでもやっておいた方がいい。理由は、Open WebUIの個別設定は、環境変数だけではできない。モデルの個別設定とかはUIから設定をしないとならないから。UIの設定は地味に面倒。

コメントする