Files
Alphaeus Mote be6d358086 Initial Commit
2025-11-19 08:09:34 -05:00

204 lines
7.6 KiB
Bash

#!/bin/bash
#
# Depl0y Uninstaller
# Completely removes Depl0y from your system
#
set -e
echo "╔══════════════════════════════════════════════════════════╗"
echo "║ ║"
echo "║ ██████╗ ███████╗██████╗ ██╗ ██████╗ ██╗ ██╗ ║"
echo "║ ██╔══██╗██╔════╝██╔══██╗██║ ██╔═████╗╚██╗ ██╔╝ ║"
echo "║ ██║ ██║█████╗ ██████╔╝██║ ██║██╔██║ ╚████╔╝ ║"
echo "║ ██║ ██║██╔══╝ ██╔═══╝ ██║ ████╔╝██║ ╚██╔╝ ║"
echo "║ ██████╔╝███████╗██║ ███████╗╚██████╔╝ ██║ ║"
echo "║ ╚═════╝ ╚══════╝╚═╝ ╚══════╝ ╚═════╝ ╚═╝ ║"
echo "║ ║"
echo "║ UNINSTALLER ║"
echo "║ ║"
echo "╚══════════════════════════════════════════════════════════╝"
echo ""
# Check if running as root
if [ "$EUID" -ne 0 ]; then
echo "ERROR: Please run as root (use sudo)"
exit 1
fi
# Check for -y flag or if stdin is not a terminal (piped input)
SKIP_CONFIRM=false
if [[ "$1" == "-y" || "$1" == "--yes" ]]; then
SKIP_CONFIRM=true
elif [ ! -t 0 ]; then
# Not running in terminal (piped through curl)
echo "⚠️ WARNING: Running in non-interactive mode"
echo ""
echo "To uninstall Depl0y, run this command:"
echo " curl -fsSL http://deploy.agit8or.net/downloads/uninstall.sh | sudo bash -s -- -y"
echo ""
echo "Or download and run locally:"
echo " curl -fsSL http://deploy.agit8or.net/downloads/uninstall.sh -o uninstall.sh"
echo " sudo bash uninstall.sh"
echo ""
exit 1
fi
if [ "$SKIP_CONFIRM" = false ]; then
echo "⚠️ WARNING: This will completely remove Depl0y from your system"
echo ""
echo "This will:"
echo " • Stop and remove the depl0y-backend service"
echo " • Remove all Depl0y files from /opt/depl0y"
echo " • Remove database and logs from /var/lib/depl0y and /var/log/depl0y"
echo " • Remove nginx configuration"
echo " • Remove the depl0y system user"
echo " • Remove sudo permissions"
echo " • Remove installed dependencies (Python packages, Node.js packages)"
echo ""
echo "⚠️ DATABASE WILL BE DELETED - All VM configurations will be lost!"
echo ""
read -p "Are you sure you want to uninstall Depl0y? (yes/NO): " -r CONFIRM < /dev/tty || CONFIRM="NO"
echo ""
if [ "$CONFIRM" != "yes" ]; then
echo "Uninstall cancelled."
exit 0
fi
else
echo "⚠️ Uninstalling Depl0y (confirmation skipped with -y flag)..."
echo ""
fi
echo "Starting uninstallation..."
echo ""
# Stop and disable backend service
echo "🛑 Stopping depl0y-backend service..."
if systemctl is-active --quiet depl0y-backend; then
systemctl stop depl0y-backend
echo "✓ Service stopped"
else
echo "✓ Service was not running"
fi
if systemctl is-enabled --quiet depl0y-backend 2>/dev/null; then
systemctl disable depl0y-backend
echo "✓ Service disabled"
fi
# Remove systemd service file
echo ""
echo "🗑️ Removing systemd service..."
if [ -f /etc/systemd/system/depl0y-backend.service ]; then
rm -f /etc/systemd/system/depl0y-backend.service
systemctl daemon-reload
echo "✓ Service file removed"
fi
# Remove application files
echo ""
echo "🗑️ Removing application files..."
if [ -d /opt/depl0y ]; then
rm -rf /opt/depl0y
echo "✓ Removed /opt/depl0y"
fi
# Remove data and logs
echo ""
echo "🗑️ Removing database and logs..."
if [ -d /var/lib/depl0y ]; then
rm -rf /var/lib/depl0y
echo "✓ Removed /var/lib/depl0y (database, cloud images, ISOs)"
fi
if [ -d /var/log/depl0y ]; then
rm -rf /var/log/depl0y
echo "✓ Removed /var/log/depl0y"
fi
# Remove nginx configuration
echo ""
echo "🗑️ Removing nginx configuration..."
if [ -f /etc/nginx/sites-enabled/depl0y ]; then
rm -f /etc/nginx/sites-enabled/depl0y
echo "✓ Removed nginx sites-enabled/depl0y"
fi
if [ -f /etc/nginx/sites-available/depl0y ]; then
rm -f /etc/nginx/sites-available/depl0y
echo "✓ Removed nginx sites-available/depl0y"
fi
# Restore default site if it existed
if [ -f /etc/nginx/sites-available/default ] && [ ! -f /etc/nginx/sites-enabled/default ]; then
ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default
echo "✓ Restored nginx default site"
fi
# Test and reload nginx
if nginx -t >/dev/null 2>&1; then
systemctl reload nginx
echo "✓ Nginx reloaded"
else
echo "⚠️ Nginx configuration test failed, skipping reload"
fi
# Remove sudoers file
echo ""
echo "🗑️ Removing sudo permissions..."
if [ -f /etc/sudoers.d/depl0y ]; then
rm -f /etc/sudoers.d/depl0y
echo "✓ Removed /etc/sudoers.d/depl0y"
fi
# Remove depl0y user
echo ""
echo "👤 Removing depl0y system user..."
if id -u depl0y >/dev/null 2>&1; then
userdel -r depl0y 2>/dev/null || userdel depl0y 2>/dev/null || true
echo "✓ User 'depl0y' removed"
else
echo "✓ User 'depl0y' does not exist"
fi
# Remove temporary files and caches
echo ""
echo "🧹 Cleaning up temporary files and caches..."
rm -f /tmp/depl0y-*.tar.gz 2>/dev/null || true
rm -rf /tmp/depl0y-install 2>/dev/null || true
rm -f /tmp/enable_cloud_images.sh 2>/dev/null || true
rm -rf /tmp/depl0y* 2>/dev/null || true
echo "✓ Temporary files cleaned"
# Optional: Remove installed packages (commented out by default for safety)
echo ""
echo "📦 Package cleanup..."
echo " Note: System packages (Python, Node.js, nginx, etc.) were NOT removed"
echo " as they may be used by other applications."
echo ""
echo " To remove them manually if desired:"
echo " sudo apt-get remove --purge python3-venv python3-dev nodejs npm nginx"
echo " sudo apt-get autoremove"
echo ""
echo "╔══════════════════════════════════════════════════════════╗"
echo "║ ║"
echo "║ ✅ UNINSTALL COMPLETE ║"
echo "║ ║"
echo "╚══════════════════════════════════════════════════════════╝"
echo ""
echo "Depl0y has been completely removed from your system."
echo ""
echo "The following were NOT automatically removed (remove manually if needed):"
echo " • System packages: python3, nodejs, npm, nginx, sqlite3"
echo " • (These may be used by other applications)"
echo ""
echo "To remove system packages manually:"
echo " sudo apt-get remove --purge python3-venv python3-dev nodejs npm nginx sqlite3"
echo " sudo apt-get autoremove"
echo ""
echo "To reinstall Depl0y:"
echo " curl -fsSL http://deploy.agit8or.net/downloads/install.sh | sudo bash"
echo ""