From 36cc798a613edbd52ff6caffec40d0a8dc873629 Mon Sep 17 00:00:00 2001 From: Marco Gallegos Date: Fri, 16 May 2025 11:19:35 -0600 Subject: [PATCH] Update auto_server_reset.sh --- server_scripts/auto_server_reset.sh | 172 ++++++++++++++-------------- 1 file changed, 84 insertions(+), 88 deletions(-) diff --git a/server_scripts/auto_server_reset.sh b/server_scripts/auto_server_reset.sh index 64a1379..7b6b65c 100644 --- a/server_scripts/auto_server_reset.sh +++ b/server_scripts/auto_server_reset.sh @@ -1,102 +1,98 @@ #!/usr/bin/env bash -# auto_server_reset.sh — revierte el home-server a un estado «casi limpio». -# Probado en Ubuntu 22.04 / 24.04. Requiere sudo/root. +# revert_auto_server_setup.sh — Revertir auto_server_setup_emoji_top +# Este script deshace las acciones del instalador de servidor: +# - Detiene y elimina contenedores Docker +# - Elimina imágenes y volúmenes Docker asociados +# - Desinstala Docker, Portainer, CapRover, NPM, Plex, Pi-hole, CasaOS +# - Restaura configuración de red y hostname +# - Elimina usuario de Samba y limpia smb.conf +# - Desinstala Oh My Zsh y restaura shell por defecto +# - Elimina paquetes básicos instalados +# - Restablece firewall (ufw) y Fail2Ban set -euo pipefail -################################################################################ -# Barra de progreso básica # -################################################################################ -STEPS_TOTAL=9 -STEP=0 -progress() { - local w=20 f=$(( STEP*w/STEPS_TOTAL )) e=$(( w-f )) - printf "\r%s%*s %3d%% %s" "$(printf '🟥%.0s' $(seq 1 $f))" $e '' \ - $(( STEP*100/STEPS_TOTAL )) "$1" -} -next() { STEP=$(( STEP+1 )); progress "$1"; echo; } +LOG() { echo -e "\033[1;31m[REVERT]\033[0m $*"; } -confirm() { - read -rp "⚠️ Realmente quieres continuar? (type YES): " ans - [[ $ans == YES ]] || { echo "Abortado."; exit 1; } -} +# 1. Parar y eliminar contenedores Docker +LOG "Deteniendo y eliminando contenedores..." +containers=(portainer caprover nginx-proxy-manager plex pihole) +for c in "${containers[@]}"; do + if docker ps -a --format '{{.Names}}' | grep -q "^${c}$"; then + docker stop "$c" || true + docker rm -f "$c" || true + LOG "→ Contenedor $c eliminado" + fi +done -[[ $(id -u) -eq 0 ]] || { echo "Ejecuta con sudo/root."; exit 1; } -confirm +# 2. Eliminar volúmenes +LOG "Eliminando volúmenes..." +volumes=(portainer_data) +for v in "${volumes[@]}"; do + docker volume rm "$v" || true + LOG "→ Volumen $v eliminado" +done -################################################################################ -# 1. Parar y borrar contenedores # -################################################################################ -next "Deteniendo y eliminando contenedores Docker" -if command -v docker &>/dev/null; then - docker ps -aq | xargs -r docker stop - docker ps -aq | xargs -r docker rm -f - docker volume ls -q | grep -E 'portainer|pihole' | xargs -r docker volume rm +# 3. Desinstalar Docker Engine +LOG "Desinstalando Docker Engine..." +systemctl stop docker +systemctl disable docker +apt purge -y docker-ce docker-ce-cli containerd.io docker-compose-plugin +apt autoremove -y +rm -f /etc/apt/keyrings/docker.gpg /etc/apt/sources.list.d/docker.list +LOG "→ Docker desinstalado" + +# 4. Restaurar grupo docker +LOG "Restaurando grupo docker..." +if getent group docker >/dev/null; then + for u in $(getent group docker | cut -d: -f4 | tr ',' ' '); do + gpasswd -d "$u" docker || true + done + groupdel docker || true + LOG "→ Grupo docker eliminado" fi -################################################################################ -# 2. Desinstalar paquetes instalados # -################################################################################ -next "Purgando paquetes APT/Snap" -apt purge -y \ - docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin \ - tailscale zerotier-one certbot python3-certbot-* \ - plexmediaserver samba samba-* cifs-utils mergerfs smartmontools udevil \ - fontconfig fzf btop zsh oh-my-posh \ - || true -snap remove --purge certbot 2>/dev/null || true +# 5. Desinstalar paquetes básicos +LOG "Desinstalando paquetes básicos..." +apt purge -y neofetch net-tools htop curl wget gnupg2 ca-certificates lsb-release \ + avahi-daemon ufw fail2ban openssh-server +apt autoremove -y +LOG "→ Paquetes básicos eliminados" -################################################################################ -# 3. Deshabilitar y borrar servicios de CasaOS # -################################################################################ -next "Desinstalando CasaOS" -systemctl stop casaos* rclone.service 2>/dev/null || true -systemctl disable casaos* rclone.service 2>/dev/null || true -rm -rf /etc/systemd/system/casaos* /usr/lib/systemd/system/casaos* /opt/casaos \ - /etc/casaos /var/lib/casaos /usr/bin/casaos* /usr/local/bin/casaos* \ - /etc/systemd/system/rclone.service +# 6. Restablecer firewall y Fail2Ban +LOG "Restableciendo firewall y Fail2Ban..." +ufw --force reset +systemctl disable fail2ban +systemctl stop fail2ban +apt purge -y ufw fail2ban +LOG "→ Firewall y Fail2Ban desinstalados" -################################################################################ -# 4. Limpiar configuraciones personalizadas # -################################################################################ -next "Limpiando Oh-My-Zsh, plugins y Oh-My-Posh" -USER_HOME="/home/${SUDO_USER:-$USER}" -rm -rf "$USER_HOME/.oh-my-zsh" "$USER_HOME/.poshthemes" -sed -i '/oh-my-posh init/d;/alias cls=/d;/alias clima=/d;/alias pip=/d' "$USER_HOME/.zshrc" || true -chsh -s /bin/bash "${SUDO_USER:-$USER}" || true - -################################################################################ -# 5. Eliminar fuentes Meslo Nerd Font # -################################################################################ -next "Quitando fuentes Meslo Nerd Font" -find /usr/local/share/fonts -type f -name '*MesloLGS NF*.ttf' -delete -fc-cache -f >/dev/null || true - -################################################################################ -# 6. Purgar dependencias huérfanas y cachés # -################################################################################ -next "APT autoremove & autoclean" -apt -y autoremove --purge -apt -y autoclean - -################################################################################ -# 7. Borrar usuarios y shares Samba # -################################################################################ -next "Eliminando usuario Samba y share" -if pdbedit -L | grep -q '^'"$USER"':' ; then - (echo delete User | smbpasswd -x "$USER") || true +# 7. Eliminar CasaOS +LOG "Eliminando CasaOS..." +if command -v casaos >/dev/null; then + systemctl stop casaos.service casaos-admin.service || true + rm -rf /opt/casaos ~/.casaos + LOG "→ Archivos de CasaOS eliminados" fi -rm -rf /etc/samba/smb.conf /var/lib/samba -################################################################################ -# 8. Restaurar hostname opcional # -################################################################################ -next "Mantener hostname actual: $(hostname) (no se modifica)" +# 8. Eliminar Samba share y usuario +LOG "Eliminando Samba share y usuario..." +read -rp "Nombre de usuario Samba a eliminar: " SMB_USER +sed -i "/\[$SMB_USER\]/,/^$/d" /etc/samba/smb.conf || true +systemctl restart smbd nmbd +userdel -r "$SMB_USER" || true +LOG "→ Samba eliminado para usuario $SMB_USER" -################################################################################ -# 9. Reinicio opcional # -################################################################################ -next "Fin. Sistema casi limpio." -read -rp $'\n¿Reiniciar ahora? [y/N]: ' reboot_ans -[[ ${reboot_ans,,} == y ]] && reboot -echo "🏁 Limpieza completada." +# 9. Restaurar hostname y hosts +LOG "Restaurando hostname original..." +# Sustituye manualmente si es necesario +sed -i "s/^127.0.1.1.*/127.0.1.1\t$(hostname -f)/" /etc/hosts || true + +# 10. Desinstalar Oh My Zsh +LOG "Eliminando Oh My Zsh y restaurando shell..." +read -rp "Usuario Zsh a restaurar shell (e.g. marco): " RUSER +chsh -s /bin/bash "$RUSER" +rm -rf /home/$RUSER/.oh-my-zsh /home/$RUSER/.zshrc +LOG "→ Oh My Zsh desinstalado para $RUSER" + +LOG "Revert completo. Reinicia manualmente para aplicar todos los cambios."