feat: add uninstall/teardown scripts + uninstall section in README

This commit is contained in:
gramps
2026-07-19 15:38:28 -07:00
parent 6946619bc5
commit f5d020e39a
4 changed files with 379 additions and 1 deletions
+109
View File
@@ -0,0 +1,109 @@
#!/usr/bin/env bash
# cAIc — Docker stack teardown
# Removes all containers, volumes, images, and generated files
# created by setup-wizard / docker compose.
# Run from the docker deployment directory. Use -y to skip prompts.
set -euo pipefail
RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; NC='\033[0m'
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
prompt_yn() {
if [ "${1:-}" = "-y" ]; then return 0; fi
[ "$SKIP" = true ] && return 0
local msg=$1; local default=${2:-n}
if [[ "$default" == "y" ]]; then
read -p "$msg [Y/n] " r; [[ -z "$r" || "$r" =~ ^[Yy] ]]
else
read -p "$msg [y/N] " r; [[ "$r" =~ ^[Yy] ]]
fi
}
SKIP=false
[ "${1:-}" = "-y" ] && SKIP=true
echo "cAIc Docker stack teardown"
echo "=========================="
# ---- Step 1: docker compose down -v ----
if [ -f docker-compose.yml ] || [ -f compose.yml ]; then
if prompt_yn "Stop Docker stack and remove volumes?" n; then
docker compose down -v 2>/dev/null || docker-compose down -v 2>/dev/null || true
echo " Docker stack stopped and volumes removed"
else
warn " Skipped: Docker stack left intact"
fi
else
echo " Skipped: no compose file found"
fi
# ---- Step 2: Remove Docker images ----
if prompt_yn "Remove cAIc Docker image?" n; then
docker rmi caic:latest 2>/dev/null || true
echo " Removed caic:latest"
warn "Remove SearXNG / Qdrant / RabbitMQ / llama-server / Ollama images?"
if prompt_yn " Remove service images?" n; then
for tag in searxng/searxng qdrant/qdrant rabbitmq:4-management \
ghcr.io/ggml-org/llama.cpp ollama/ollama; do
docker rmi "$tag" 2>/dev/null || true
done
echo " Service images removed"
fi
fi
# ---- Step 3: Volumes ----
if prompt_yn "Remove remaining Docker volumes?" n; then
for vol in caic_data caic_uploads searxng_config qdrant_storage rabbitmq_data ollama_models; do
docker volume rm "$vol" 2>/dev/null || true
done
echo " Docker volumes removed"
fi
# ---- Step 4: .env ----
if [ -f .env ]; then
if prompt_yn "Remove .env file?" n; then
rm -f .env
echo " .env removed"
fi
fi
# ---- Step 5: generated directories ----
for dir in secrets searxng; do
if [ -d "$dir" ]; then
if prompt_yn "Remove $dir/ directory?" n; then
rm -rf "$dir"
echo " $dir/ removed"
fi
fi
done
# ---- Step 6: generated files ----
for f in setup.log docker-compose.yml compose.yml; do
[ -f "$f" ] || continue
if prompt_yn "Remove $f?" n; then
rm -f "$f"
echo " $f removed"
fi
done
# ---- Step 7: model files (with big warning) ----
if [ -d models ]; then
echo ""
echo -e "${RED}WARNING: model files (*.gguf) can be gigabytes each.${NC}"
if prompt_yn "Remove all model files from ./models/?" n; then
rm -rf models
echo " models/ removed"
else
echo " models/ preserved"
fi
fi
echo ""
echo -e "${GREEN}cAIc Docker stack teardown complete.${NC}"
echo "Preserved:"
echo " - ./models/ (unless you accepted removal)"
echo ""
echo "Note: Docker Engine itself is not removed. To remove it:"
echo " sudo apt-get remove docker docker-engine docker.io containerd runc"