Commit Graph
16 Commits
Author SHA1 Message Date
Claude 47e91baf69 Fix start.sh and Done output to only show URLs for selected services
Build URL/path lines as variables before the heredoc so only
installed services appear in start.sh and the final Done summary.

https://claude.ai/code/session_012gDnantBmFTWZGCiKyjazx
2026-03-21 01:48:22 +00:00
Claude 7e52271cb6 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
2026-03-21 00:33:14 +00:00
Claude 7953ba9d99 Add model selection wizard with speed estimates and origin preference
Replace fixed model defaults with an interactive wizard:

Origin preference:
  1) Western-only      — Codestral (Mistral 🇫🇷) · Phi4 · Mistral 7B
  2) Performance-first — Qwen2.5 + Qwen2.5-Coder (top benchmarks)
  3) Mixed             — Western chat/reasoning, Qwen for coding only
  4) Custom            — free-form model names

Size tier table — speed estimated for the user's actual VRAM with no
hard limits (Ollama already uses all available VRAM via NUM_GPU=999):
  ✓ fast  — fully in VRAM
  ~ good  — fits with small overhang (~reading speed)
  ✗ slow  — partial CPU offload
  ✗ very slow — heavy CPU offload

Recommended tier shown as suggestion based on VRAM, user can override.
pull-models.sh now bakes in the chosen model names at install time.
REASON_MODEL replaces hardcoded deepseek-r1:14b; skipped if empty or
same as chat model.

https://claude.ai/code/session_012gDnantBmFTWZGCiKyjazx
2026-03-21 00:23:11 +00:00
Claude 796a073c0a Add Docker/Compose always-check and SSH key import to AI stack setup
- Docker + Docker Compose check now runs on every invocation (not skipped
  on updates), installing if missing — ensures the stack can always run
- Added Docker Compose plugin install as fallback if compose is missing
- NVIDIA Container Toolkit check also always runs (not update-gated)
- Added SSH key import wizard question: import public keys from GitHub
  (gh:username) and/or Launchpad (lp:username) using ssh-import-id,
  so the machine is accessible over SSH immediately after setup

https://claude.ai/code/session_012gDnantBmFTWZGCiKyjazx
2026-03-20 22:22:02 +00:00
Claude 45dfa58d93 Add top-level checklist menu to laptop_full_setup.sh
Replace the single-choice component menu with a multi-select checklist
(whiptail if available, text-based toggle fallback). Users now pick any
combination of:

  [*] Full system setup  — runs ubuntu-post-install.sh (Ubuntu apps,
                           security hardening, backups, Docker services)
  [*] AI stack           — Ollama, Open WebUI, RAG, MCP, Gitea, InvokeAI
  [*] Kiwix              — Offline Wikipedia, Stack Overflow, Arch Wiki

This makes laptop_full_setup.sh the single entry point — run it once,
toggle what you need (like Ubuntu Server's tasksel), leave overnight.

https://claude.ai/code/session_012gDnantBmFTWZGCiKyjazx
2026-03-20 22:03:49 +00:00
Claude 92f5d886c7 Add leave-overnight wizard to laptop_full_setup.sh
Gather all setup choices upfront so users can answer questions once and
walk away. Changes:
- Setup wizard asks all questions before any installation begins:
  1. Component selection (AI stack / Kiwix / both)
  2. Ollama model storage (Docker volume or custom bind-mount path)
  3. Kiwix ZIM storage location (detect drives with enough free space)
  4. Firewall LAN subnet (auto-detected from current IP)
  5. Model downloads (confirm GPU-matched models, optional DeepSeek-R1)
  6. ZIM downloads (all / select / skip)
- Shows a summary and asks for confirmation before doing anything
- Ollama supports bind-mount to custom path (e.g. /mnt/ssd/ollama)
- Kiwix ZIM dir is configurable (separate large drive)
- Model pull runs unattended at end using upfront answer
- ZIM downloads integrated inline (no need to run kiwix_download.sh
  separately) — background wget with progress log

https://claude.ai/code/session_012gDnantBmFTWZGCiKyjazx
2026-03-20 22:01:27 +00:00
Claude 5da719b1d0 Remove ChromaDB healthcheck, use service_started for depends_on
Healthcheck tools (wget/curl) are not reliably available in the
chromadb image. Removing the healthcheck and switching rag-server
depends_on to service_started avoids the unhealthy container error.

https://claude.ai/code/session_012gDnantBmFTWZGCiKyjazx
2026-03-20 21:40:22 +00:00
Claude a815a3555e 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
2026-03-20 21:37:58 +00:00
Claude 6ac4fc617e Fix NVIDIA Container Toolkit install URL
NVIDIA dropped the distro-specific repo URL in favour of a single
stable path. Also pass --yes to gpg --dearmor to avoid the interactive
overwrite prompt on re-runs.

https://claude.ai/code/session_012gDnantBmFTWZGCiKyjazx
2026-03-20 21:26:10 +00:00
Claude 66c530035d Add README with full setup instructions and script reference
Documents workflow, service URLs, day-to-day commands, generated file
layout, first-run checklist, GPU/model tiers, and what each script does.

https://claude.ai/code/session_012gDnantBmFTWZGCiKyjazx
2026-03-20 21:25:09 +00:00
Claude 07e8e93b4c Inline local-ai-setup.sh and kiwix_download.sh — truly self-contained
ubuntu-post-install.sh now embeds both companion scripts as single-quoted
heredocs written to mktemp files at runtime. No external files, git clone,
or internet access needed for [A] Local AI stack or [Z] Download ZIMs —
the single script is the only file required.

  local-ai-setup.sh  → embedded at lines 1084-1922 (LOCAL_AI_SETUP_EOF)
  kiwix_download.sh  → embedded at lines 2022-2221 (KIWIX_DOWNLOAD_EOF)

https://claude.ai/code/session_012gDnantBmFTWZGCiKyjazx
2026-03-20 21:09:09 +00:00
Claude 1f37def86d Add Local AI stack and ZIM download options to ubuntu-post-install.sh
Adds two new top-level menu choices to the installation mode selector:

  [A] Local AI stack  — finds or clones local-ai-setup.sh, asks which
      mounted drive to use for Ollama models and Kiwix ZIM files, runs
      the installer as the actual user, then patches docker-compose.yml
      for alternate storage if selected.

  [Z] Download ZIMs   — finds or clones kiwix_download.sh, shows
      mounted drives, optionally redirects the download via KIWIX_DIR,
      then runs the downloader as the actual user in the background.

Both functions locate their scripts alongside ubuntu-post-install.sh
first, then ~/local-ai/, then fall back to cloning outis1one/local-ai.

https://claude.ai/code/session_012gDnantBmFTWZGCiKyjazx
2026-03-20 21:09:09 +00:00
Claude b2946a1c24 Add configure-storage.sh — interactive drive/folder setup for ZIM and models
Scans mounted drives, shows size/free space, prompts user to assign drives
for Kiwix ZIM files and Ollama model storage, then patches docker-compose.yml
in place with a backup.

https://claude.ai/code/session_012gDnantBmFTWZGCiKyjazx
2026-03-20 19:22:24 +00:00
Claude 8a1ac05f1e Add single self-contained local-ai-setup.sh
Merges all components into one script — no separate server files needed.
Embeds server.py (RAG) and mcp_server.py (MCP) as inline heredocs.

- Auto-detects VRAM and sets models + context window accordingly:
  6GB  → 7B models, 8k ctx
  8GB+ → 14B chat + 7B code, 16k ctx
  16GB → 14B models, 32k ctx (V100/A100 friendly)
- New install or update (detects existing compose)
- --force flag to overwrite config files
- --no-pull to skip model download prompt
- Adds fetch_url tool to MCP server
- Optional DeepSeek-R1:14b pull for reasoning tasks

https://claude.ai/code/session_012gDnantBmFTWZGCiKyjazx
2026-03-20 15:14:10 +00:00
Claude 0f6d09db12 Refactor setup: new/update detection, split Python servers, add MCP server
- laptop_full_setup.sh now handles both fresh install and updates cleanly
  (detects existing install, --force flag to overwrite config files)
- server.py: standalone RAG server with AST-aware code chunking (Python),
  pattern-split for JS/TS/Go, /ingest/repo and /webhook/gitea|github endpoints
- mcp_server.py: new MCP server (port 8002/SSE) with Claude Code-equivalent
  tools: bash, file ops, ripgrep search, git ops, Gitea API, GitHub API,
  RAG repo ingest
- docker-compose: adds mcp-server service, workspace volume, env_file for tokens
- .env preserved on update (tokens never overwritten)
- GPU: OLLAMA_NUM_GPU=999 auto-adapts to any VRAM size (no hard-coded 6GB)
- ZIM downloads remain in kiwix_download.sh (separate, large files)

https://claude.ai/code/session_012gDnantBmFTWZGCiKyjazx
2026-03-20 12:50:59 +00:00
Claude 8a1780b179 Remove obsolete update_script.sh
Prep for full rewrite with MCP server, enhanced RAG, and Claude Code parity.

https://claude.ai/code/session_012gDnantBmFTWZGCiKyjazx
2026-03-20 11:05:25 +00:00