#!/usr/bin/env bash # # ARGUS uninstaller — stops and removes ARGUS containers. # # By default this KEEPS your data (database, certificates, uploaded config) — # it only stops and removes containers, so a plain re-install (install.sh) # picks up right where you left off. # # cd /opt/argus && ./uninstall.sh # containers only, data kept # ./uninstall.sh --remove-data # also destroys all data (asks to confirm) # ./uninstall.sh --remove-data --yes # non-interactive, for scripted use # set -euo pipefail INSTALL_DIR="${ARGUS_INSTALL_DIR:-/opt/argus}" REMOVE_DATA=false ASSUME_YES=false for arg in "$@"; do case "$arg" in --remove-data) REMOVE_DATA=true ;; --yes|-y) ASSUME_YES=true ;; *) echo "Unknown option: $arg" >&2; exit 1 ;; esac done bold() { printf '\033[1m%s\033[0m\n' "$1"; } info() { printf ' %s\n' "$1"; } ok() { printf ' \033[32m✓\033[0m %s\n' "$1"; } warn() { printf ' \033[33m!\033[0m %s\n' "$1"; } fail() { printf ' \033[31m✗\033[0m %s\n' "$1" >&2; exit 1; } bold "ARGUS Uninstaller" echo [ -f "$INSTALL_DIR/docker-compose.yml" ] || fail "No ARGUS installation found at $INSTALL_DIR (set ARGUS_INSTALL_DIR if you installed elsewhere)." cd "$INSTALL_DIR" if [ "$REMOVE_DATA" = "true" ] && [ "$ASSUME_YES" != "true" ]; then warn "This will permanently delete your ARGUS database, certificates, and all" warn "uploaded configuration. This cannot be undone." printf " Type YES to confirm: " read -r CONFIRM [ "$CONFIRM" = "YES" ] || fail "Aborted — data was not touched." fi if [ "$REMOVE_DATA" = "true" ]; then bold "Stopping ARGUS and removing all data..." docker compose down -v ok "Containers and data volumes removed" else bold "Stopping ARGUS (data preserved)..." docker compose down ok "Containers removed — database and certificates are untouched" info "Re-run install.sh (or 'docker compose up -d' here) to bring ARGUS back with the same data." fi echo info "Configuration files remain at ${INSTALL_DIR} — remove that directory yourself if you want a completely clean slate."