#!/usr/bin/env bash set -euo pipefail # Vigilar — Uninstall script # Stops services, removes venv, systemd units, and mosquitto config. # Data and config are preserved by default. VIGILAR_USER="vigilar" INSTALL_DIR="/opt/vigilar" VENV_DIR="${INSTALL_DIR}/venv" CONFIG_DIR="/etc/vigilar" DATA_DIR="/var/vigilar" SYSTEMD_DIR="/etc/systemd/system" MOSQUITTO_CONF="/etc/mosquitto/conf.d/vigilar.conf" info() { printf '\033[1;34m[INFO]\033[0m %s\n' "$*"; } ok() { printf '\033[1;32m[ OK ]\033[0m %s\n' "$*"; } warn() { printf '\033[1;33m[WARN]\033[0m %s\n' "$*"; } # --------------------------------------------------------------------------- # 1. Stop and disable services # --------------------------------------------------------------------------- stop_services() { info "Stopping and disabling services" if systemctl is-active vigilar.service &>/dev/null; then sudo systemctl stop vigilar.service fi if systemctl is-enabled vigilar.service &>/dev/null; then sudo systemctl disable vigilar.service fi ok "Services stopped" } # --------------------------------------------------------------------------- # 2. Remove systemd units # --------------------------------------------------------------------------- remove_systemd() { info "Removing systemd unit" if [[ -f "${SYSTEMD_DIR}/vigilar.service" ]]; then sudo rm -f "${SYSTEMD_DIR}/vigilar.service" sudo systemctl daemon-reload fi ok "Systemd unit removed" } # --------------------------------------------------------------------------- # 3. Remove mosquitto config # --------------------------------------------------------------------------- remove_mosquitto_conf() { info "Removing Vigilar mosquitto config" if [[ -f "$MOSQUITTO_CONF" ]]; then sudo rm -f "$MOSQUITTO_CONF" sudo systemctl restart mosquitto.service 2>/dev/null || true fi ok "Mosquitto config removed" } # --------------------------------------------------------------------------- # 4. Remove venv and install dir # --------------------------------------------------------------------------- remove_venv() { info "Removing venv at ${VENV_DIR}" if [[ -d "$VENV_DIR" ]]; then sudo rm -rf "$VENV_DIR" fi if [[ -d "$INSTALL_DIR" ]]; then sudo rm -rf "$INSTALL_DIR" fi ok "Venv removed" } # --------------------------------------------------------------------------- # 5. Remove system user # --------------------------------------------------------------------------- remove_user() { if id "$VIGILAR_USER" &>/dev/null; then info "Removing system user '${VIGILAR_USER}'" sudo userdel "$VIGILAR_USER" 2>/dev/null || true ok "User removed" fi } # --------------------------------------------------------------------------- # 6. Optionally remove data # --------------------------------------------------------------------------- remove_data() { if [[ -d "$DATA_DIR" ]]; then echo warn "Data directory exists: ${DATA_DIR}" warn "This contains recordings, database, and HLS segments." read -rp "Delete data directory? [y/N] " answer if [[ "$answer" =~ ^[Yy]$ ]]; then sudo rm -rf "$DATA_DIR" ok "Data directory removed" else info "Data preserved at ${DATA_DIR}" fi fi } # --------------------------------------------------------------------------- # Main # --------------------------------------------------------------------------- main() { info "=== Vigilar Uninstaller ===" echo stop_services remove_systemd remove_mosquitto_conf remove_venv remove_user remove_data echo ok "=== Uninstall complete ===" info "Config and secrets preserved at ${CONFIG_DIR}/" info "To remove config/secrets too: sudo rm -rf ${CONFIG_DIR}" } main "$@"