mirror of
https://github.com/marcogll/scripts_mg.git
synced 2026-01-13 13:25:15 +00:00
Update auto_server_reset.sh
This commit is contained in:
@@ -1,102 +1,98 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# auto_server_reset.sh — revierte el home-server a un estado «casi limpio».
|
# revert_auto_server_setup.sh — Revertir auto_server_setup_emoji_top
|
||||||
# Probado en Ubuntu 22.04 / 24.04. Requiere sudo/root.
|
# 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
|
set -euo pipefail
|
||||||
|
|
||||||
################################################################################
|
LOG() { echo -e "\033[1;31m[REVERT]\033[0m $*"; }
|
||||||
# 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; }
|
|
||||||
|
|
||||||
confirm() {
|
# 1. Parar y eliminar contenedores Docker
|
||||||
read -rp "⚠️ Realmente quieres continuar? (type YES): " ans
|
LOG "Deteniendo y eliminando contenedores..."
|
||||||
[[ $ans == YES ]] || { echo "Abortado."; exit 1; }
|
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; }
|
# 2. Eliminar volúmenes
|
||||||
confirm
|
LOG "Eliminando volúmenes..."
|
||||||
|
volumes=(portainer_data)
|
||||||
|
for v in "${volumes[@]}"; do
|
||||||
|
docker volume rm "$v" || true
|
||||||
|
LOG "→ Volumen $v eliminado"
|
||||||
|
done
|
||||||
|
|
||||||
################################################################################
|
# 3. Desinstalar Docker Engine
|
||||||
# 1. Parar y borrar contenedores #
|
LOG "Desinstalando Docker Engine..."
|
||||||
################################################################################
|
systemctl stop docker
|
||||||
next "Deteniendo y eliminando contenedores Docker"
|
systemctl disable docker
|
||||||
if command -v docker &>/dev/null; then
|
apt purge -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
|
||||||
docker ps -aq | xargs -r docker stop
|
apt autoremove -y
|
||||||
docker ps -aq | xargs -r docker rm -f
|
rm -f /etc/apt/keyrings/docker.gpg /etc/apt/sources.list.d/docker.list
|
||||||
docker volume ls -q | grep -E 'portainer|pihole' | xargs -r docker volume rm
|
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
|
fi
|
||||||
|
|
||||||
################################################################################
|
# 5. Desinstalar paquetes básicos
|
||||||
# 2. Desinstalar paquetes instalados #
|
LOG "Desinstalando paquetes básicos..."
|
||||||
################################################################################
|
apt purge -y neofetch net-tools htop curl wget gnupg2 ca-certificates lsb-release \
|
||||||
next "Purgando paquetes APT/Snap"
|
avahi-daemon ufw fail2ban openssh-server
|
||||||
apt purge -y \
|
apt autoremove -y
|
||||||
docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin \
|
LOG "→ Paquetes básicos eliminados"
|
||||||
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
|
|
||||||
|
|
||||||
################################################################################
|
# 6. Restablecer firewall y Fail2Ban
|
||||||
# 3. Deshabilitar y borrar servicios de CasaOS #
|
LOG "Restableciendo firewall y Fail2Ban..."
|
||||||
################################################################################
|
ufw --force reset
|
||||||
next "Desinstalando CasaOS"
|
systemctl disable fail2ban
|
||||||
systemctl stop casaos* rclone.service 2>/dev/null || true
|
systemctl stop fail2ban
|
||||||
systemctl disable casaos* rclone.service 2>/dev/null || true
|
apt purge -y ufw fail2ban
|
||||||
rm -rf /etc/systemd/system/casaos* /usr/lib/systemd/system/casaos* /opt/casaos \
|
LOG "→ Firewall y Fail2Ban desinstalados"
|
||||||
/etc/casaos /var/lib/casaos /usr/bin/casaos* /usr/local/bin/casaos* \
|
|
||||||
/etc/systemd/system/rclone.service
|
|
||||||
|
|
||||||
################################################################################
|
# 7. Eliminar CasaOS
|
||||||
# 4. Limpiar configuraciones personalizadas #
|
LOG "Eliminando CasaOS..."
|
||||||
################################################################################
|
if command -v casaos >/dev/null; then
|
||||||
next "Limpiando Oh-My-Zsh, plugins y Oh-My-Posh"
|
systemctl stop casaos.service casaos-admin.service || true
|
||||||
USER_HOME="/home/${SUDO_USER:-$USER}"
|
rm -rf /opt/casaos ~/.casaos
|
||||||
rm -rf "$USER_HOME/.oh-my-zsh" "$USER_HOME/.poshthemes"
|
LOG "→ Archivos de CasaOS eliminados"
|
||||||
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
|
|
||||||
fi
|
fi
|
||||||
rm -rf /etc/samba/smb.conf /var/lib/samba
|
|
||||||
|
|
||||||
################################################################################
|
# 8. Eliminar Samba share y usuario
|
||||||
# 8. Restaurar hostname opcional #
|
LOG "Eliminando Samba share y usuario..."
|
||||||
################################################################################
|
read -rp "Nombre de usuario Samba a eliminar: " SMB_USER
|
||||||
next "Mantener hostname actual: $(hostname) (no se modifica)"
|
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. Restaurar hostname y hosts
|
||||||
# 9. Reinicio opcional #
|
LOG "Restaurando hostname original..."
|
||||||
################################################################################
|
# Sustituye manualmente si es necesario
|
||||||
next "Fin. Sistema casi limpio."
|
sed -i "s/^127.0.1.1.*/127.0.1.1\t$(hostname -f)/" /etc/hosts || true
|
||||||
read -rp $'\n¿Reiniciar ahora? [y/N]: ' reboot_ans
|
|
||||||
[[ ${reboot_ans,,} == y ]] && reboot
|
# 10. Desinstalar Oh My Zsh
|
||||||
echo "🏁 Limpieza completada."
|
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."
|
||||||
|
|||||||
Reference in New Issue
Block a user