wynai commited on
Commit
1d6e453
·
verified ·
1 Parent(s): 9c832c7

Upload 2 files

Browse files
Files changed (2) hide show
  1. Dockerfile.txt +19 -0
  2. sync_webuidb.sh +65 -0
Dockerfile.txt ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM python:3.11-slim
2
+
3
+ WORKDIR /app
4
+
5
+ COPY sync_webuidb.sh /app/sync_webuidb.sh
6
+
7
+ RUN apt-get update && apt-get install -y build-essential git curl \
8
+ && rm -rf /var/lib/apt/lists/* \
9
+ && pip install --no-cache-dir open-webui \
10
+ && chmod +x /app/sync_webuidb.sh \
11
+ && chmod -R 777 /app
12
+
13
+ ENV HOST=0.0.0.0 PORT=7860 DATA_DIR=/app/data
14
+
15
+ EXPOSE $PORT
16
+
17
+ USER root
18
+
19
+ CMD ["/bin/bash", "-c", "/app/sync_webuidb.sh & open-webui serve --host $HOST --port $PORT"]
sync_webuidb.sh ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+
3
+ if [ -z "$G_NAME" ] || [ -z "$G_TOKEN" ]; then
4
+ echo "Missing G_NAME or G_TOKEN"
5
+ exit 1
6
+ fi
7
+
8
+ IFS='/' read -r GITHUB_USER GITHUB_REPO <<< "$G_NAME"
9
+ REPO_URL="https://${G_TOKEN}@github.com/${G_NAME}.git"
10
+ mkdir -p ./data/github_data
11
+
12
+ echo "Cloning repo..."
13
+ git clone "$REPO_URL" ./data/github_data || {
14
+ echo "Clone failed"
15
+ exit 1
16
+ }
17
+
18
+ if [ -f ./data/github_data/webui.db ]; then
19
+ cp ./data/github_data/webui.db ./data/webui.db
20
+ echo "Pulled webui.db from GitHub"
21
+ fi
22
+
23
+ do_sync() {
24
+ CURRENT_TIME=$(TZ=Asia/Ho_Chi_Minh date '+%Y-%m-%d %H:%M:%S')
25
+ echo "Running sync at $CURRENT_TIME"
26
+
27
+ cd ./data/github_data || exit 1
28
+ git config user.name "AutoSync Bot"
29
+ git config user.email "[email protected]"
30
+ git checkout main 2>/dev/null || git checkout master
31
+
32
+ if [ -f "../webui.db" ]; then
33
+ cp ../webui.db ./webui.db
34
+ fi
35
+
36
+ if [[ -n $(git status -s) ]]; then
37
+ git add webui.db
38
+ git commit -m "Auto sync $(TZ=Asia/Ho_Chi_Minh date '+%Y-%m-%d %H:%M:%S')"
39
+ git push origin HEAD || {
40
+ echo "GitHub push failed, retrying..."
41
+ sleep 10
42
+ git push origin HEAD || echo "Push failed again"
43
+ }
44
+ else
45
+ echo "No changes to commit"
46
+ fi
47
+
48
+ cd ../..
49
+
50
+ if [ -n "$WEBDAV_URL" ] && [ -n "$WEBDAV_USERNAME" ] && [ -n "$WEBDAV_PASSWORD" ]; then
51
+ FILENAME="webui_$(TZ=Asia/Ho_Chi_Minh date +'%m_%d').db"
52
+ if [ -f ./data/webui.db ]; then
53
+ curl -T ./data/webui.db --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/$FILENAME" || {
54
+ echo "WebDAV upload failed, retrying..."
55
+ sleep 10
56
+ curl -T ./data/webui.db --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/$FILENAME" || echo "Upload failed again"
57
+ }
58
+ fi
59
+ fi
60
+ }
61
+
62
+ while true; do
63
+ do_sync
64
+ sleep 60
65
+ done