feat: add uninstall/teardown scripts + uninstall section in README
This commit is contained in:
@@ -0,0 +1,125 @@
|
||||
#!/usr/bin/env bash
|
||||
# cAIc — nuclear clean uninstall
|
||||
# Removes every trace of cAIc: bare-metal systemd install AND Docker stack.
|
||||
# Prompts for each step. Use -y to skip ALL prompts (fully automatic).
|
||||
# Use with extreme caution — will delete data and model files.
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; NC='\033[0m'
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
SKIP=false
|
||||
[ "${1:-}" = "-y" ] && SKIP=true
|
||||
|
||||
prompt_yn() {
|
||||
if $SKIP; then return 0; fi
|
||||
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
|
||||
}
|
||||
warn() { echo -e "${YELLOW}$1${NC}"; }
|
||||
|
||||
if ! $SKIP; then
|
||||
echo ""
|
||||
echo "${RED}================================================${NC}"
|
||||
echo "${RED} cAIc NUCLEAR CLEAN - removes all traces${NC}"
|
||||
echo "${RED} This will delete data, models, and the app.${NC}"
|
||||
echo "${RED}================================================${NC}"
|
||||
echo ""
|
||||
echo "cAIc NUCLEAR CLEAN"
|
||||
echo "=================="
|
||||
read -p "Type 'yes' to continue: " confirm
|
||||
if [ "$confirm" != "yes" ]; then
|
||||
echo "Aborted."
|
||||
exit 1
|
||||
else
|
||||
SKIP=true
|
||||
fi
|
||||
fi
|
||||
|
||||
if ! $SKIP; then
|
||||
prompt_yn "Run nuclear clean?" y || { echo "Aborted."; exit 0; }
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "========== PART 1: Docker stack =========="
|
||||
if command -v docker &>/dev/null; then
|
||||
# Stop all cAIc-related containers
|
||||
docker compose down 2>/dev/null || docker-compose down 2>/dev/null || echo " no compose stack running"
|
||||
docker ps --filter name=cai[c] --filter name=searxng --filter name=qdrant --filter name=rabbit --filter name=llama-server --filter name=ollama --filter name=caic -aq 2>/dev/null \
|
||||
| xargs -r docker rm -f 2>/dev/null || true
|
||||
docker volume rm caic_data caic_uploads searxng_config qdrant_storage rabbitmq_data ollama_models 2>/dev/null || echo " volumes already gone"
|
||||
docker rmi caic:latest 2>/dev/null || echo " caic image already gone"
|
||||
echo " Docker stack removed"
|
||||
else
|
||||
echo " Docker not installed — skipping"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "========== PART 2: Systemd service ========="
|
||||
SERVICE_FILE="/etc/systemd/system/caic.service"
|
||||
if [ -f "$SERVICE_FILE" ]; then
|
||||
stop caic 2>/dev/null || true
|
||||
systemctl disable caic 2>/dev/null || true
|
||||
rm -f "$SERVICE_FILE"
|
||||
systemctl daemon-reload
|
||||
echo " systemd service removed"
|
||||
else
|
||||
echo " no systemd service found"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "========== PART 3: Install directory ========"
|
||||
for dir in /opt/caic /var/lib/caic; do
|
||||
if [ -d "$dir" ]; then
|
||||
rm -rf "$dir"
|
||||
echo " Removed: $dir"
|
||||
else
|
||||
echo " Skipped: $dir"
|
||||
fi
|
||||
done
|
||||
|
||||
echo ""
|
||||
echo "========== PART 4: Config and state files ========"
|
||||
for f in \
|
||||
/home/gramps/.caic_amqp_secret \
|
||||
hardware_state.json \
|
||||
setup.log \
|
||||
.env; do
|
||||
rm -f "$f" 2>/dev/null || true
|
||||
done
|
||||
echo " Config/state files cleaned"
|
||||
|
||||
echo ""
|
||||
echo "========== PART 5: Temp data ==========="
|
||||
rm -rf /tmp/caic_uploads 2>/dev/null || true
|
||||
echo " Temp data cleaned"
|
||||
|
||||
echo ""
|
||||
echo "========== PART 6: User data (prompt each) ========="
|
||||
if prompt_yn "Remove the repository (current dir)?" n; then
|
||||
cd ..
|
||||
rm -rf "$SCRIPT_DIR"
|
||||
echo " Repository removed"
|
||||
else
|
||||
echo " Repository preserved"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "${GREEN}cAIc nuclear clean complete.${NC}"
|
||||
echo ""
|
||||
echo "Manually verify:"
|
||||
echo " - ls /opt/caic/"
|
||||
echo " - ls /etc/systemd/system/caic*"
|
||||
echo " - docker images | grep -E \"caic|searx|qdrant|rabbit|llama|ollama\""
|
||||
echo " - docker ps -a"
|
||||
echo ""
|
||||
echo "To remove Docker Engine itself:"
|
||||
echo " sudo apt remove docker.io containerd runc"
|
||||
echo " sudo rm -rf /var/lib/docker"
|
||||
echo ""
|
||||
echo "To remove python packages:"
|
||||
echo " pip uninstall fastapi uvicorn httpx psutil jinja2 python-multipart pypdf aio-pika"
|
||||
Reference in New Issue
Block a user