Replace component menu with per-service whiptail checklist
- Top-level menu now just: Full system setup / AI stack
- AI stack opens a second whiptail checklist (same style as
ubuntu-post-install.sh) where each service is individually toggled:
Ollama (always on, core)
Open WebUI · RAG+ChromaDB · MCP Server · SearXNG
Gitea · InvokeAI · Portainer · Kiwix
- Kiwix moved from top-level into the AI stack service list
- Existing containers auto-detected and pre-ticked ON
- MCP dependency on RAG enforced automatically with a warning
- COMPOSE_SERVICES, Done URLs, and summary all driven by per-service
SVC_* flags so only selected services are started/shown
- Text toggle fallback for systems without whiptail
https://claude.ai/code/session_012gDnantBmFTWZGCiKyjazx
This commit is contained in:
+122
-46
@@ -82,61 +82,122 @@ info "LAN IP : $LOCAL_IP"
|
|||||||
info "GPU : ${GPU_NAME} (${VRAM_GB}GB VRAM)"
|
info "GPU : ${GPU_NAME} (${VRAM_GB}GB VRAM)"
|
||||||
$IS_UPDATE && warn "Existing install found. Config files kept unless --force is passed."
|
$IS_UPDATE && warn "Existing install found. Config files kept unless --force is passed."
|
||||||
|
|
||||||
# ── Q1: What to install — checklist ──────────────────────────────────────────
|
# ── Q1: Top-level — what to run ───────────────────────────────────────────────
|
||||||
INSTALL_POSTINSTALL=false
|
INSTALL_POSTINSTALL=false
|
||||||
INSTALL_AI=true
|
INSTALL_AI=true
|
||||||
INSTALL_KIWIX=true
|
|
||||||
|
# Per-service flags (all default ON — toggled off in Q1a)
|
||||||
|
SVC_WEBUI=true; SVC_RAG=true; SVC_MCP=true; SVC_SEARXNG=true
|
||||||
|
SVC_GITEA=true; SVC_INVOKEAI=true; SVC_PORTAINER=true; SVC_KIWIX=true
|
||||||
|
|
||||||
POSTINSTALL_SCRIPT="$SCRIPT_DIR/ubuntu-post-install.sh"
|
POSTINSTALL_SCRIPT="$SCRIPT_DIR/ubuntu-post-install.sh"
|
||||||
HAS_POSTINSTALL=false
|
HAS_POSTINSTALL=false
|
||||||
[[ -f "$POSTINSTALL_SCRIPT" ]] && HAS_POSTINSTALL=true
|
[[ -f "$POSTINSTALL_SCRIPT" ]] && HAS_POSTINSTALL=true
|
||||||
|
|
||||||
# Build checklist via whiptail if available, else text toggle
|
|
||||||
if command -v whiptail &>/dev/null; then
|
if command -v whiptail &>/dev/null; then
|
||||||
WHIP_ARGS=()
|
WHIP_ARGS=()
|
||||||
$HAS_POSTINSTALL && WHIP_ARGS+=(
|
$HAS_POSTINSTALL && WHIP_ARGS+=(
|
||||||
"postinstall" "Full system setup — Ubuntu apps, security, backups" OFF
|
"postinstall" "Full system setup — Ubuntu apps, security, backups" OFF
|
||||||
)
|
|
||||||
WHIP_ARGS+=(
|
|
||||||
"aistack" "AI stack — Ollama · WebUI · RAG · MCP · Gitea · InvokeAI" ON
|
|
||||||
"kiwix" "Kiwix — Offline Wikipedia, Stack Overflow, Arch Wiki…" ON
|
|
||||||
)
|
)
|
||||||
|
WHIP_ARGS+=( "aistack" "AI stack — select services on next screen" ON )
|
||||||
SELECTED=$(whiptail --title "Local AI Setup" \
|
SELECTED=$(whiptail --title "Local AI Setup" \
|
||||||
--checklist "SPACE = toggle TAB = move ENTER = confirm" \
|
--checklist "SPACE = toggle TAB = move ENTER = confirm" \
|
||||||
15 72 "${#WHIP_ARGS[@]}" "${WHIP_ARGS[@]}" 3>&1 1>&2 2>&3) || die "Cancelled."
|
12 68 "${#WHIP_ARGS[@]}" "${WHIP_ARGS[@]}" 3>&1 1>&2 2>&3) || die "Cancelled."
|
||||||
INSTALL_AI=false; INSTALL_KIWIX=false
|
INSTALL_AI=false
|
||||||
[[ "$SELECTED" == *"postinstall"* ]] && INSTALL_POSTINSTALL=true
|
[[ "$SELECTED" == *"postinstall"* ]] && INSTALL_POSTINSTALL=true
|
||||||
[[ "$SELECTED" == *"aistack"* ]] && INSTALL_AI=true
|
[[ "$SELECTED" == *"aistack"* ]] && INSTALL_AI=true
|
||||||
[[ "$SELECTED" == *"kiwix"* ]] && INSTALL_KIWIX=true
|
|
||||||
else
|
else
|
||||||
# Text-based toggle list
|
|
||||||
echo ""
|
echo ""
|
||||||
echo -e " ${BOLD}[1/5] Select what to install${NC}"
|
echo -e " ${BOLD}[1] Select what to run${NC}"
|
||||||
echo " (Type a number to toggle on/off, then press Enter with no number to confirm)"
|
echo " (Type a number to toggle, Enter to confirm)"
|
||||||
echo ""
|
SEL_POST=false; SEL_AI=true
|
||||||
SEL_POST=false; SEL_AI=true; SEL_KIWIX=true
|
|
||||||
while true; do
|
while true; do
|
||||||
echo ""
|
echo ""
|
||||||
$HAS_POSTINSTALL && printf " [%s] 1. Full system setup — Ubuntu apps, security, backups\n" "$($SEL_POST && echo '*' || echo ' ')"
|
$HAS_POSTINSTALL && printf " [%s] 1. Full system setup — Ubuntu apps, security, backups\n" "$($SEL_POST && echo '*' || echo ' ')"
|
||||||
printf " [%s] 2. AI stack — Ollama · WebUI · RAG · MCP · Gitea · InvokeAI\n" "$($SEL_AI && echo '*' || echo ' ')"
|
printf " [%s] 2. AI stack — select services on next screen\n" "$($SEL_AI && echo '*' || echo ' ')"
|
||||||
printf " [%s] 3. Kiwix — Offline Wikipedia, Stack Overflow, docs\n" "$($SEL_KIWIX && echo '*' || echo ' ')"
|
|
||||||
echo ""
|
echo ""
|
||||||
read -rp " Toggle [number] or Enter to confirm: " T
|
read -rp " Toggle [number] or Enter to confirm: " T
|
||||||
case "$T" in
|
case "$T" in
|
||||||
1) $HAS_POSTINSTALL && { $SEL_POST && SEL_POST=false || SEL_POST=true; } ;;
|
1) $HAS_POSTINSTALL && { $SEL_POST && SEL_POST=false || SEL_POST=true; } ;;
|
||||||
2) $SEL_AI && SEL_AI=false || SEL_AI=true ;;
|
2) $SEL_AI && SEL_AI=false || SEL_AI=true ;;
|
||||||
3) $SEL_KIWIX && SEL_KIWIX=false || SEL_KIWIX=true ;;
|
|
||||||
"") break ;;
|
"") break ;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
INSTALL_POSTINSTALL=$SEL_POST
|
INSTALL_POSTINSTALL=$SEL_POST
|
||||||
INSTALL_AI=$SEL_AI
|
INSTALL_AI=$SEL_AI
|
||||||
INSTALL_KIWIX=$SEL_KIWIX
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
$INSTALL_AI || $INSTALL_KIWIX || $INSTALL_POSTINSTALL \
|
$INSTALL_AI || $INSTALL_POSTINSTALL \
|
||||||
|| die "Nothing selected — run again and select at least one option."
|
|| die "Nothing selected — run again and select at least one option."
|
||||||
|
|
||||||
|
# ── Q1a: AI stack service selection ───────────────────────────────────────────
|
||||||
|
if $INSTALL_AI; then
|
||||||
|
# detect which containers already exist (mark them ON)
|
||||||
|
existing_svc() {
|
||||||
|
docker ps -a --format '{{.Names}}' 2>/dev/null | grep -q "^$1$" && echo ON || echo OFF
|
||||||
|
}
|
||||||
|
|
||||||
|
if command -v whiptail &>/dev/null; then
|
||||||
|
SELECTED_SVCS=$(whiptail --title "AI Stack — Select Services" \
|
||||||
|
--checklist "Ollama always installed (core). SPACE = toggle ENTER = confirm" \
|
||||||
|
20 72 9 \
|
||||||
|
"open-webui" "Open WebUI — Chat interface (like ChatGPT, uses Ollama)" "$(existing_svc open-webui)" \
|
||||||
|
"rag" "RAG + ChromaDB— Code & document search (needed by MCP)" "$(existing_svc rag-server)" \
|
||||||
|
"mcp" "MCP Server — Claude Code tools (bash, files, git, search)" "$(existing_svc mcp-server)" \
|
||||||
|
"searxng" "SearXNG — Private local web search engine" "$(existing_svc searxng)" \
|
||||||
|
"gitea" "Gitea — Self-hosted Git server" "$(existing_svc gitea)" \
|
||||||
|
"invokeai" "InvokeAI — Image generation (Stable Diffusion)" "$(existing_svc invokeai)" \
|
||||||
|
"portainer" "Portainer — Docker management web UI" "$(existing_svc portainer)" \
|
||||||
|
"kiwix" "Kiwix — Offline Wikipedia, Stack Overflow, Arch Wiki" "$(existing_svc kiwix)" \
|
||||||
|
3>&1 1>&2 2>&3) || die "Cancelled."
|
||||||
|
|
||||||
|
SVC_WEBUI=false; [[ "$SELECTED_SVCS" == *'"open-webui"'* ]] && SVC_WEBUI=true
|
||||||
|
SVC_RAG=false; [[ "$SELECTED_SVCS" == *'"rag"'* ]] && SVC_RAG=true
|
||||||
|
SVC_MCP=false; [[ "$SELECTED_SVCS" == *'"mcp"'* ]] && SVC_MCP=true
|
||||||
|
SVC_SEARXNG=false; [[ "$SELECTED_SVCS" == *'"searxng"'* ]] && SVC_SEARXNG=true
|
||||||
|
SVC_GITEA=false; [[ "$SELECTED_SVCS" == *'"gitea"'* ]] && SVC_GITEA=true
|
||||||
|
SVC_INVOKEAI=false; [[ "$SELECTED_SVCS" == *'"invokeai"'* ]] && SVC_INVOKEAI=true
|
||||||
|
SVC_PORTAINER=false;[[ "$SELECTED_SVCS" == *'"portainer"'* ]] && SVC_PORTAINER=true
|
||||||
|
SVC_KIWIX=false; [[ "$SELECTED_SVCS" == *'"kiwix"'* ]] && SVC_KIWIX=true
|
||||||
|
else
|
||||||
|
# Text toggle fallback
|
||||||
|
echo ""
|
||||||
|
echo -e " ${BOLD}[1a] AI Stack — select services to install${NC}"
|
||||||
|
echo " Ollama always included (required core). Type number to toggle, Enter to confirm."
|
||||||
|
_W=$SVC_WEBUI; _R=$SVC_RAG; _M=$SVC_MCP; _S=$SVC_SEARXNG
|
||||||
|
_G=$SVC_GITEA; _I=$SVC_INVOKEAI; _P=$SVC_PORTAINER; _K=$SVC_KIWIX
|
||||||
|
while true; do
|
||||||
|
echo ""
|
||||||
|
printf " [%s] 1. Open WebUI — Chat interface\n" "$($_W && echo '*' || echo ' ')"
|
||||||
|
printf " [%s] 2. RAG+ChromaDB — Code & document search\n" "$($_R && echo '*' || echo ' ')"
|
||||||
|
printf " [%s] 3. MCP Server — Claude Code tools (needs RAG)\n" "$($_M && echo '*' || echo ' ')"
|
||||||
|
printf " [%s] 4. SearXNG — Private web search\n" "$($_S && echo '*' || echo ' ')"
|
||||||
|
printf " [%s] 5. Gitea — Self-hosted Git\n" "$($_G && echo '*' || echo ' ')"
|
||||||
|
printf " [%s] 6. InvokeAI — Image generation\n" "$($_I && echo '*' || echo ' ')"
|
||||||
|
printf " [%s] 7. Portainer — Docker management UI\n" "$($_P && echo '*' || echo ' ')"
|
||||||
|
printf " [%s] 8. Kiwix — Offline Wikipedia, Stack Overflow\n" "$($_K && echo '*' || echo ' ')"
|
||||||
|
echo ""
|
||||||
|
read -rp " Toggle [number] or Enter to confirm: " T
|
||||||
|
case "$T" in
|
||||||
|
1) $_W && _W=false || _W=true ;;
|
||||||
|
2) $_R && _R=false || _R=true ;;
|
||||||
|
3) $_M && _M=false || _M=true ;;
|
||||||
|
4) $_S && _S=false || _S=true ;;
|
||||||
|
5) $_G && _G=false || _G=true ;;
|
||||||
|
6) $_I && _I=false || _I=true ;;
|
||||||
|
7) $_P && _P=false || _P=true ;;
|
||||||
|
8) $_K && _K=false || _K=true ;;
|
||||||
|
"") break ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
SVC_WEBUI=$_W; SVC_RAG=$_R; SVC_MCP=$_M; SVC_SEARXNG=$_S
|
||||||
|
SVC_GITEA=$_G; SVC_INVOKEAI=$_I; SVC_PORTAINER=$_P; SVC_KIWIX=$_K
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Enforce dependencies: MCP needs RAG
|
||||||
|
$SVC_MCP && ! $SVC_RAG && { warn "MCP Server requires RAG — enabling RAG+ChromaDB"; SVC_RAG=true; }
|
||||||
|
fi
|
||||||
|
|
||||||
# ── Q1b: SSH keys from GitHub / Launchpad ─────────────────────────────────────
|
# ── Q1b: SSH keys from GitHub / Launchpad ─────────────────────────────────────
|
||||||
SSH_IMPORT_IDS=() # list of "gh:username" or "lp:username" entries
|
SSH_IMPORT_IDS=() # list of "gh:username" or "lp:username" entries
|
||||||
|
|
||||||
@@ -188,7 +249,7 @@ fi
|
|||||||
# ── Q3: Storage for Kiwix ZIMs ────────────────────────────────────────────────
|
# ── Q3: Storage for Kiwix ZIMs ────────────────────────────────────────────────
|
||||||
KIWIX_DIR="$BASE/kiwix" # default
|
KIWIX_DIR="$BASE/kiwix" # default
|
||||||
|
|
||||||
if $INSTALL_KIWIX; then
|
if $SVC_KIWIX; then
|
||||||
echo ""
|
echo ""
|
||||||
echo -e " ${BOLD}[3/6] Where should Kiwix ZIM files be stored?${NC}"
|
echo -e " ${BOLD}[3/6] Where should Kiwix ZIM files be stored?${NC}"
|
||||||
echo " (ZIMs are large — Wikipedia alone is ~46GB. Total collection ~130GB.)"
|
echo " (ZIMs are large — Wikipedia alone is ~46GB. Total collection ~130GB.)"
|
||||||
@@ -365,9 +426,19 @@ echo -e "${BOLD} Setup plan — starting now:${NC}"
|
|||||||
echo -e "${BOLD}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
echo -e "${BOLD}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
||||||
echo ""
|
echo ""
|
||||||
$INSTALL_POSTINSTALL && echo " ✓ Full system setup (ubuntu-post-install.sh — interactive)"
|
$INSTALL_POSTINSTALL && echo " ✓ Full system setup (ubuntu-post-install.sh — interactive)"
|
||||||
$INSTALL_AI && echo " ✓ AI stack (Ollama · WebUI · RAG · MCP · Gitea · InvokeAI · Portainer)"
|
|
||||||
[[ "${#SSH_IMPORT_IDS[@]}" -gt 0 ]] && echo " ✓ SSH keys → ${SSH_IMPORT_IDS[*]}"
|
[[ "${#SSH_IMPORT_IDS[@]}" -gt 0 ]] && echo " ✓ SSH keys → ${SSH_IMPORT_IDS[*]}"
|
||||||
$INSTALL_KIWIX && echo " ✓ Kiwix offline library"
|
if $INSTALL_AI; then
|
||||||
|
_svcs="Ollama"
|
||||||
|
$SVC_WEBUI && _svcs+=" · Open WebUI"
|
||||||
|
$SVC_RAG && _svcs+=" · RAG+ChromaDB"
|
||||||
|
$SVC_MCP && _svcs+=" · MCP"
|
||||||
|
$SVC_SEARXNG && _svcs+=" · SearXNG"
|
||||||
|
$SVC_GITEA && _svcs+=" · Gitea"
|
||||||
|
$SVC_INVOKEAI && _svcs+=" · InvokeAI"
|
||||||
|
$SVC_PORTAINER && _svcs+=" · Portainer"
|
||||||
|
$SVC_KIWIX && _svcs+=" · Kiwix"
|
||||||
|
echo " ✓ AI stack → $_svcs"
|
||||||
|
fi
|
||||||
if $INSTALL_AI; then
|
if $INSTALL_AI; then
|
||||||
if [[ "$OLLAMA_STORAGE" == "bind" ]]; then
|
if [[ "$OLLAMA_STORAGE" == "bind" ]]; then
|
||||||
echo " ✓ Ollama models → $OLLAMA_HOST_PATH"
|
echo " ✓ Ollama models → $OLLAMA_HOST_PATH"
|
||||||
@@ -375,7 +446,7 @@ if $INSTALL_AI; then
|
|||||||
echo " ✓ Ollama models → Docker volume (default)"
|
echo " ✓ Ollama models → Docker volume (default)"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
$INSTALL_KIWIX && echo " ✓ Kiwix ZIMs → $KIWIX_DIR"
|
$SVC_KIWIX && echo " ✓ Kiwix ZIMs → $KIWIX_DIR"
|
||||||
$PULL_MODELS && echo " ✓ Pull models : $EMBED_MODEL + $FAST_MODEL + $CHAT_MODEL + $CODE_MODEL${REASON_MODEL:+ + $REASON_MODEL}"
|
$PULL_MODELS && echo " ✓ Pull models : $EMBED_MODEL + $FAST_MODEL + $CHAT_MODEL + $CODE_MODEL${REASON_MODEL:+ + $REASON_MODEL}"
|
||||||
[[ "$ZIM_CHOICE" == "1" ]] && echo " ✓ Download all ZIMs in background (~130GB)"
|
[[ "$ZIM_CHOICE" == "1" ]] && echo " ✓ Download all ZIMs in background (~130GB)"
|
||||||
[[ "$ZIM_CHOICE" == "2" ]] && echo " ✓ Select ZIMs to download (prompted after stack starts)"
|
[[ "$ZIM_CHOICE" == "2" ]] && echo " ✓ Select ZIMs to download (prompted after stack starts)"
|
||||||
@@ -972,8 +1043,17 @@ cd "$BASE"
|
|||||||
info "Pulling images (this takes a few minutes on first run)..."
|
info "Pulling images (this takes a few minutes on first run)..."
|
||||||
|
|
||||||
COMPOSE_SERVICES=""
|
COMPOSE_SERVICES=""
|
||||||
$INSTALL_AI && COMPOSE_SERVICES+=" ollama open-webui chromadb rag-server mcp-server searxng gitea invokeai portainer"
|
if $INSTALL_AI; then
|
||||||
$INSTALL_KIWIX && COMPOSE_SERVICES+=" kiwix"
|
COMPOSE_SERVICES="ollama"
|
||||||
|
$SVC_WEBUI && COMPOSE_SERVICES+=" open-webui"
|
||||||
|
$SVC_RAG && COMPOSE_SERVICES+=" chromadb rag-server"
|
||||||
|
$SVC_MCP && COMPOSE_SERVICES+=" mcp-server"
|
||||||
|
$SVC_SEARXNG && COMPOSE_SERVICES+=" searxng"
|
||||||
|
$SVC_GITEA && COMPOSE_SERVICES+=" gitea"
|
||||||
|
$SVC_INVOKEAI && COMPOSE_SERVICES+=" invokeai"
|
||||||
|
$SVC_PORTAINER && COMPOSE_SERVICES+=" portainer"
|
||||||
|
$SVC_KIWIX && COMPOSE_SERVICES+=" kiwix"
|
||||||
|
fi
|
||||||
|
|
||||||
# shellcheck disable=SC2086
|
# shellcheck disable=SC2086
|
||||||
docker compose pull --quiet $COMPOSE_SERVICES
|
docker compose pull --quiet $COMPOSE_SERVICES
|
||||||
@@ -1013,7 +1093,7 @@ elif $INSTALL_AI; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# ── Start ZIM downloads (answer was captured upfront) ────────────────────────
|
# ── Start ZIM downloads (answer was captured upfront) ────────────────────────
|
||||||
if $INSTALL_KIWIX && [[ "$ZIM_CHOICE" != "3" ]]; then
|
if $SVC_KIWIX && [[ "$ZIM_CHOICE" != "3" ]]; then
|
||||||
section "Starting ZIM Downloads"
|
section "Starting ZIM Downloads"
|
||||||
LOG="$BASE/logs/kiwix-download.log"
|
LOG="$BASE/logs/kiwix-download.log"
|
||||||
mkdir -p "$(dirname "$LOG")"
|
mkdir -p "$(dirname "$LOG")"
|
||||||
@@ -1135,29 +1215,25 @@ echo ""
|
|||||||
echo -e "${GREEN}${BOLD}━━━ Done! ━━━${NC}"
|
echo -e "${GREEN}${BOLD}━━━ Done! ━━━${NC}"
|
||||||
echo ""
|
echo ""
|
||||||
if $INSTALL_AI; then
|
if $INSTALL_AI; then
|
||||||
echo -e " ${CYAN}Open WebUI${NC} → http://$LOCAL_IP:3000"
|
$SVC_WEBUI && echo -e " ${CYAN}Open WebUI${NC} → http://$LOCAL_IP:3000"
|
||||||
echo -e " ${CYAN}InvokeAI${NC} → http://$LOCAL_IP:9090"
|
$SVC_INVOKEAI && echo -e " ${CYAN}InvokeAI${NC} → http://$LOCAL_IP:9090"
|
||||||
echo -e " ${CYAN}SearXNG${NC} → http://$LOCAL_IP:8888"
|
$SVC_SEARXNG && echo -e " ${CYAN}SearXNG${NC} → http://$LOCAL_IP:8888"
|
||||||
echo -e " ${CYAN}Gitea${NC} → http://$LOCAL_IP:3001"
|
$SVC_GITEA && echo -e " ${CYAN}Gitea${NC} → http://$LOCAL_IP:3001"
|
||||||
echo -e " ${CYAN}RAG Health${NC} → http://$LOCAL_IP:8001/health"
|
$SVC_RAG && echo -e " ${CYAN}RAG Health${NC} → http://$LOCAL_IP:8001/health"
|
||||||
echo -e " ${CYAN}MCP SSE${NC} → http://$LOCAL_IP:8002/sse"
|
$SVC_MCP && echo -e " ${CYAN}MCP SSE${NC} → http://$LOCAL_IP:8002/sse"
|
||||||
echo -e " ${CYAN}Portainer${NC} → https://$LOCAL_IP:9443"
|
$SVC_PORTAINER && echo -e " ${CYAN}Portainer${NC} → https://$LOCAL_IP:9443"
|
||||||
fi
|
$SVC_KIWIX && echo -e " ${CYAN}Kiwix${NC} → http://$LOCAL_IP:8181"
|
||||||
if $INSTALL_KIWIX; then
|
|
||||||
echo -e " ${CYAN}Kiwix${NC} → http://$LOCAL_IP:8181"
|
|
||||||
fi
|
fi
|
||||||
echo ""
|
echo ""
|
||||||
if $INSTALL_AI; then
|
if $INSTALL_AI; then
|
||||||
echo -e " ${YELLOW}Add MCP to Claude Code:${NC}"
|
$SVC_MCP && { echo -e " ${YELLOW}Add MCP to Claude Code:${NC}"; echo " claude mcp add local http://$LOCAL_IP:8002/sse"; echo ""; }
|
||||||
echo " claude mcp add local http://$LOCAL_IP:8002/sse"
|
|
||||||
echo ""
|
|
||||||
echo -e " ${YELLOW}Add API tokens to:${NC} $BASE/.env"
|
echo -e " ${YELLOW}Add API tokens to:${NC} $BASE/.env"
|
||||||
echo -e " ${YELLOW}Drop PDFs into:${NC} $BASE/papers/"
|
$SVC_RAG && echo -e " ${YELLOW}Drop PDFs into:${NC} $BASE/papers/"
|
||||||
echo -e " ${YELLOW}Your workspace:${NC} $BASE/workspace/"
|
echo -e " ${YELLOW}Your workspace:${NC} $BASE/workspace/"
|
||||||
fi
|
fi
|
||||||
if $INSTALL_KIWIX && [[ "$ZIM_CHOICE" == "3" ]]; then
|
if $SVC_KIWIX && [[ "$ZIM_CHOICE" == "3" ]]; then
|
||||||
echo -e " ${YELLOW}ZIM downloads:${NC} ./kiwix_download.sh (not started)"
|
echo -e " ${YELLOW}ZIM downloads:${NC} ./kiwix_download.sh (not started)"
|
||||||
elif $INSTALL_KIWIX; then
|
elif $SVC_KIWIX; then
|
||||||
echo -e " ${YELLOW}ZIM progress:${NC} tail -f $BASE/logs/kiwix-download.log"
|
echo -e " ${YELLOW}ZIM progress:${NC} tail -f $BASE/logs/kiwix-download.log"
|
||||||
echo -e " ${YELLOW}ZIM location:${NC} $KIWIX_DIR/"
|
echo -e " ${YELLOW}ZIM location:${NC} $KIWIX_DIR/"
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user