Add interactive component menu and fix ChromaDB healthcheck
- Show menu at startup to select: full stack, AI stack only, or Kiwix only - Gate server files, SearXNG config, docker compose up, model pull, and summary URLs based on selection - Fix ChromaDB healthcheck: wget → curl, /api/v2/ → /api/v1/heartbeat https://claude.ai/code/session_012gDnantBmFTWZGCiKyjazx
This commit is contained in:
+58
-19
@@ -48,6 +48,24 @@ info "Base : $BASE"
|
||||
info "Host : $LOCAL_IP"
|
||||
$IS_UPDATE && warn "Existing install found. Config files kept unless --force is passed."
|
||||
|
||||
# ── component menu ─────────────────────────────────────────────────────────────
|
||||
echo ""
|
||||
echo -e " ${BOLD}Select components to install:${NC}"
|
||||
echo ""
|
||||
echo " 1) Full stack — AI stack + Kiwix"
|
||||
echo " 2) AI stack — Ollama · WebUI · RAG · MCP · ChromaDB · SearXNG · Gitea · InvokeAI · Portainer"
|
||||
echo " 3) Kiwix only — Offline Wikipedia / docs (runs standalone)"
|
||||
echo ""
|
||||
read -rp " Choice [1]: " MENU_CHOICE
|
||||
MENU_CHOICE="${MENU_CHOICE:-1}"
|
||||
case "$MENU_CHOICE" in
|
||||
1) INSTALL_AI=true; INSTALL_KIWIX=true ;;
|
||||
2) INSTALL_AI=true; INSTALL_KIWIX=false ;;
|
||||
3) INSTALL_AI=false; INSTALL_KIWIX=true ;;
|
||||
*) die "Invalid choice '$MENU_CHOICE' — run again and choose 1, 2, or 3" ;;
|
||||
esac
|
||||
echo ""
|
||||
|
||||
# ── helper: write only if missing (or --force) ────────────────────────────────
|
||||
# Usage: write_if_new /path/to/file << 'EOF' ... EOF
|
||||
write_if_new() {
|
||||
@@ -117,6 +135,7 @@ done
|
||||
ok "Directories ready under $BASE"
|
||||
|
||||
# =============================================================================
|
||||
if $INSTALL_AI; then
|
||||
section "Server Files"
|
||||
# =============================================================================
|
||||
|
||||
@@ -146,7 +165,10 @@ httpx
|
||||
REQ
|
||||
ok "mcp_requirements.txt"
|
||||
|
||||
fi # INSTALL_AI
|
||||
|
||||
# =============================================================================
|
||||
if $INSTALL_AI; then
|
||||
section "SearXNG Config"
|
||||
# =============================================================================
|
||||
write_if_new "$BASE/searxng/settings.yml" << SEARXNG
|
||||
@@ -162,6 +184,8 @@ search:
|
||||
formats: [html, json]
|
||||
SEARXNG
|
||||
|
||||
fi # INSTALL_AI
|
||||
|
||||
# =============================================================================
|
||||
section ".env File"
|
||||
# =============================================================================
|
||||
@@ -255,7 +279,7 @@ services:
|
||||
- IS_PERSISTENT=TRUE
|
||||
- ANONYMIZED_TELEMETRY=FALSE
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "wget -qO- http://localhost:8000/api/v2/heartbeat || exit 1"]
|
||||
test: ["CMD-SHELL", "curl -sf http://localhost:8000/api/v1/heartbeat || exit 1"]
|
||||
interval: 15s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
@@ -578,11 +602,18 @@ section "Starting Stack"
|
||||
# =============================================================================
|
||||
cd "$BASE"
|
||||
info "Pulling images (this takes a few minutes on first run)..."
|
||||
docker compose pull --quiet
|
||||
docker compose up -d
|
||||
|
||||
COMPOSE_SERVICES=""
|
||||
$INSTALL_AI && COMPOSE_SERVICES+=" ollama open-webui chromadb rag-server mcp-server searxng gitea invokeai portainer"
|
||||
$INSTALL_KIWIX && COMPOSE_SERVICES+=" kiwix"
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
docker compose pull --quiet $COMPOSE_SERVICES
|
||||
# shellcheck disable=SC2086
|
||||
docker compose up -d $COMPOSE_SERVICES
|
||||
ok "Stack started"
|
||||
|
||||
if ! $IS_UPDATE; then
|
||||
if $INSTALL_AI && ! $IS_UPDATE; then
|
||||
echo ""
|
||||
read -rp "Pull Ollama models now? (~20GB total, takes 10-40 min) [Y/n]: " DO_PULL
|
||||
if [[ "${DO_PULL,,}" != "n" ]]; then
|
||||
@@ -596,22 +627,30 @@ fi
|
||||
echo ""
|
||||
echo -e "${GREEN}${BOLD}━━━ Done! ━━━${NC}"
|
||||
echo ""
|
||||
echo -e " ${CYAN}Open WebUI${NC} → http://$LOCAL_IP:3000"
|
||||
echo -e " ${CYAN}InvokeAI${NC} → http://$LOCAL_IP:9090"
|
||||
echo -e " ${CYAN}SearXNG${NC} → http://$LOCAL_IP:8888"
|
||||
echo -e " ${CYAN}Kiwix${NC} → http://$LOCAL_IP:8181 (needs ZIMs — run kiwix_download.sh)"
|
||||
echo -e " ${CYAN}Gitea${NC} → http://$LOCAL_IP:3001"
|
||||
echo -e " ${CYAN}RAG Health${NC} → http://$LOCAL_IP:8001/health"
|
||||
echo -e " ${CYAN}MCP SSE${NC} → http://$LOCAL_IP:8002/sse"
|
||||
echo -e " ${CYAN}Portainer${NC} → https://$LOCAL_IP:9443"
|
||||
if $INSTALL_AI; then
|
||||
echo -e " ${CYAN}Open WebUI${NC} → http://$LOCAL_IP:3000"
|
||||
echo -e " ${CYAN}InvokeAI${NC} → http://$LOCAL_IP:9090"
|
||||
echo -e " ${CYAN}SearXNG${NC} → http://$LOCAL_IP:8888"
|
||||
echo -e " ${CYAN}Gitea${NC} → http://$LOCAL_IP:3001"
|
||||
echo -e " ${CYAN}RAG Health${NC} → http://$LOCAL_IP:8001/health"
|
||||
echo -e " ${CYAN}MCP SSE${NC} → http://$LOCAL_IP:8002/sse"
|
||||
echo -e " ${CYAN}Portainer${NC} → https://$LOCAL_IP:9443"
|
||||
fi
|
||||
if $INSTALL_KIWIX; then
|
||||
echo -e " ${CYAN}Kiwix${NC} → http://$LOCAL_IP:8181 (needs ZIMs — run kiwix_download.sh)"
|
||||
fi
|
||||
echo ""
|
||||
echo -e " ${YELLOW}Add MCP to Claude Code:${NC}"
|
||||
echo " claude mcp add local http://$LOCAL_IP:8002/sse"
|
||||
echo ""
|
||||
echo -e " ${YELLOW}Add API tokens to:${NC} $BASE/.env"
|
||||
echo -e " ${YELLOW}Drop PDFs into:${NC} $BASE/papers/"
|
||||
echo -e " ${YELLOW}Your workspace:${NC} $BASE/workspace/"
|
||||
echo -e " ${YELLOW}ZIM downloads:${NC} ./kiwix_download.sh"
|
||||
if $INSTALL_AI; then
|
||||
echo -e " ${YELLOW}Add MCP to Claude Code:${NC}"
|
||||
echo " claude mcp add local http://$LOCAL_IP:8002/sse"
|
||||
echo ""
|
||||
echo -e " ${YELLOW}Add API tokens to:${NC} $BASE/.env"
|
||||
echo -e " ${YELLOW}Drop PDFs into:${NC} $BASE/papers/"
|
||||
echo -e " ${YELLOW}Your workspace:${NC} $BASE/workspace/"
|
||||
fi
|
||||
if $INSTALL_KIWIX; then
|
||||
echo -e " ${YELLOW}ZIM downloads:${NC} ./kiwix_download.sh"
|
||||
fi
|
||||
echo ""
|
||||
$IS_UPDATE && echo -e " ${GREEN}Update complete.${NC}" \
|
||||
|| echo -e " ${GREEN}Fresh install complete.${NC}"
|
||||
|
||||
Reference in New Issue
Block a user