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
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
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
- 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
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
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
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
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
- 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