#!/bin/bash # MuMuAINovel Deployment Script # Run when Docker Hub / GitHub are accessible # ============================================ set -e echo "=== MuMuAINovel Deployment ===" # Step 1: Database echo "[1/4] Creating mumuainovel database..." docker exec qihu-aiflow-pg18 psql -U aiflow -d aiflow -c "CREATE DATABASE mumuainovel OWNER aiflow;" 2>/dev/null || echo " Database already exists" # Step 2: Pull image echo "[2/4] Pulling MuMuAINovel image..." # Try Docker Hub direct first, then proxies docker pull mumujie/mumuainovel:latest 2>/dev/null || { echo " Docker Hub failed, trying mirror..." docker pull docker.1ms.run/mumujie/mumuainovel:latest 2>/dev/null || { echo " Mirror failed, building from source..." cd /tmp && rm -rf MuMuAINovel git clone --depth 1 https://github.com/xiamuceer-j/MuMuAINovel.git cd MuMuAINovel && docker build -t mumujie/mumuainovel:latest . } } # Step 3: Start container echo "[3/4] Starting MuMuAINovel..." docker stop qihu-aiflow-mumuainovel 2>/dev/null || true docker rm qihu-aiflow-mumuainovel 2>/dev/null || true docker run -d \ --name qihu-aiflow-mumuainovel \ --network qihuaiflow_aiflow-network \ --restart unless-stopped \ -e OPENAI_BASE_URL=http://qihu-aiflow-litellm:4000/v1 \ -e OPENAI_API_KEY=sk-litellm-master-key-aiflow-2026 \ -e DEFAULT_AI_PROVIDER=openai \ -e DEFAULT_MODEL=deepseek-v4-flash \ -e POSTGRES_HOST=qihu-aiflow-pg18 \ -e POSTGRES_DB=mumuainovel \ -e POSTGRES_USER=aiflow \ -e POSTGRES_PASSWORD=pwd2026 \ -e LOCAL_AUTH_ENABLED=true \ -e LOCAL_AUTH_USERNAME=mumu_admin \ -e LOCAL_AUTH_PASSWORD=mumu_admin_2026 \ -e LINUXDO_AUTH_ENABLED=false \ mumujie/mumuainovel:latest # Step 4: Verify echo "[4/4] Waiting for startup..." sleep 15 docker ps --format "{{.Names}} {{.Status}}" | grep mumu curl -s -o /dev/null -w "HTTP %{http_code}" http://localhost:18001/ && echo " - MuMuAINovel is UP" || echo " - Not ready yet" echo "=== Done ===" echo "Access: http://210.16.161.218:18001" echo "Login: mumu_admin / mumu_admin_2026" echo "AI: powered by LiteLLM gateway (deepseek-v4-flash)"