add uninstall.sh: full removal of what install.sh deploys (services, binaries, configs, nginx site, LE cert)
This commit is contained in:
@@ -24,6 +24,14 @@ bash <(curl -fsSL https://git.my-handbook.ru/ded_ikar/sdm-xray/raw/main/install.
|
||||
Скрипт: ставит бинарь + systemd, генерит UUID/ключ, получает Let's Encrypt, поднимает
|
||||
туннель на 443 с зеркалом. В конце печатает готовый клиентский конфиг и пароль панели.
|
||||
|
||||
## Удаление сервера
|
||||
Полный снос всего, что поставил install.sh (systemd, бинари, конфиги, nginx-сайт,
|
||||
Let's Encrypt-сертификат):
|
||||
```bash
|
||||
bash <(curl -fsSL https://git.my-handbook.ru/ded_ikar/sdm-xray/raw/main/uninstall.sh) ваш-домен.ru
|
||||
```
|
||||
apt-пакеты (nginx/certbot) не трогаются — их могут использовать другие сервисы.
|
||||
|
||||
## Панель управления (`sdm-panel`)
|
||||
Отдельный бинарь на VPS, слушает `127.0.0.1:8080` (наружу не торчит). Доступ через
|
||||
SSH-туннель (трафик шифрован SSH):
|
||||
|
||||
Executable
+81
@@ -0,0 +1,81 @@
|
||||
#!/usr/bin/env bash
|
||||
# sdm-xray — полная деинсталляция сервера stealth-туннеля.
|
||||
# Зеркало install.sh: убирает ровно то, что он ставил.
|
||||
# Использование:
|
||||
# sudo bash uninstall.sh [domain]
|
||||
# где [domain] — домен, для которого выпущен Let's Encrypt-сертификат
|
||||
# (если не передан, домен автоопределяется из nginx-конфига /etc/nginx/sites-available/sdm).
|
||||
set -u
|
||||
|
||||
if [ "${1:-}" = "-h" ] || [ "${1:-}" = "--help" ]; then
|
||||
sed -n '2,9p' "$0"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
DOMAIN="${1:-}"
|
||||
INSTALL_DIR="/usr/local/xray"
|
||||
DATA_DIR="/etc/xray"
|
||||
|
||||
if [ -z "$DOMAIN" ] && [ -f /etc/nginx/sites-available/sdm ]; then
|
||||
DOMAIN="$(grep -m1 'server_name' /etc/nginx/sites-available/sdm 2>/dev/null | awk '{print $2}' | tr -d ';')"
|
||||
fi
|
||||
|
||||
echo "=== sdm-xray uninstall ==="
|
||||
[ -n "$DOMAIN" ] && echo "domain: $DOMAIN" || echo "domain: (не определён)"
|
||||
|
||||
echo "--- stop & disable systemd services ---"
|
||||
for svc in sdm-panel xray; do
|
||||
if [ -f "/etc/systemd/system/$svc.service" ]; then
|
||||
systemctl stop "$svc" 2>/dev/null || true
|
||||
systemctl disable "$svc" 2>/dev/null || true
|
||||
rm -f "/etc/systemd/system/$svc.service"
|
||||
echo "removed $svc.service"
|
||||
else
|
||||
echo "$svc.service not present"
|
||||
fi
|
||||
done
|
||||
systemctl daemon-reload
|
||||
|
||||
echo "--- remove binaries & data ---"
|
||||
rm -rf "$INSTALL_DIR"
|
||||
rm -rf "$DATA_DIR"
|
||||
echo "removed $INSTALL_DIR"
|
||||
echo "removed $DATA_DIR (config.json, panel.json, uuid, key)"
|
||||
|
||||
echo "--- nginx site ---"
|
||||
rm -f /etc/nginx/sites-enabled/sdm
|
||||
rm -f /etc/nginx/sites-available/sdm
|
||||
if [ -f /etc/nginx/sites-available/default ] && [ ! -e /etc/nginx/sites-enabled/default ]; then
|
||||
ln -sf /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default
|
||||
echo "restored default nginx site"
|
||||
fi
|
||||
if nginx -t >/dev/null 2>&1; then
|
||||
systemctl reload nginx 2>/dev/null || true
|
||||
echo "nginx reloaded"
|
||||
else
|
||||
echo "WARN: nginx config is broken — fix manually (nginx -t)"
|
||||
fi
|
||||
|
||||
echo "--- letsencrypt certificate ---"
|
||||
if [ -n "$DOMAIN" ]; then
|
||||
if [ -d "/etc/letsencrypt/live/$DOMAIN" ]; then
|
||||
if command -v certbot >/dev/null 2>&1; then
|
||||
certbot delete --cert-name "$DOMAIN" --non-interactive >/dev/null 2>&1 \
|
||||
|| echo "WARN: certbot delete failed — удалите серт вручную: sudo certbot delete --cert-name $DOMAIN"
|
||||
fi
|
||||
rm -f "/etc/letsencrypt/renewal/$DOMAIN.conf"
|
||||
rm -rf "/etc/letsencrypt/live/$DOMAIN" "/etc/letsencrypt/archive/$DOMAIN"
|
||||
echo "removed LE cert for $DOMAIN"
|
||||
else
|
||||
echo "no cert for $DOMAIN"
|
||||
fi
|
||||
else
|
||||
echo "domain not given — LE cert NOT removed. Вручную: sudo certbot delete --cert-name <domain>"
|
||||
fi
|
||||
|
||||
echo
|
||||
echo "=== UNINSTALLED ==="
|
||||
echo "Остались apt-пакеты (не удаляю — их могут использовать другие сервисы):"
|
||||
echo " curl openssl jq nginx certbot"
|
||||
echo " полностью снести: sudo apt-get purge -y --auto-remove nginx certbot"
|
||||
echo "Остался файл сертификата: /var/www/html/.well-known/acme-challenge (можно удалить вручную)"
|
||||
Reference in New Issue
Block a user