Files
wireguard-vps-tunnel/uninstall.sh
Deploy Bot 5d618a04b5
Some checks failed
Build and Push Docker Images / Сборка сервера (multi-arch) (push) Has been cancelled
Build and Push Docker Images / Сборка клиента (multi-arch) (push) Has been cancelled
feat: multi-arch Docker образы (amd64+arm64), CI/CD, registry
- Dockerfile с multi-stage сборкой для linux/amd64 и linux/arm64
- Gitea Actions CI/CD для автоматической сборки и пуша в registry
- docker-compose с поддержкой multi-arch образов
- install.sh с автоопределением архитектуры и выбором: pull vs build
- uninstall.sh обновлён для Docker-деинсталляции
- README.md обновлён: multi-arch, CI/CD, Gitea registry
2026-07-29 20:38:47 +01:00

140 lines
4.8 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
# =============================================================================
# WireGuard VPS Tunnel — Деинсталлятор (Docker)
# Останавливает и удаляет Docker-контейнеры, образы и конфигурацию.
# =============================================================================
set -euo pipefail
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
BOLD='\033[1m'
NC='\033[0m'
info() { echo -e "${BLUE}[INFO]${NC} $*"; }
success() { echo -e "${GREEN}[OK]${NC} $*"; }
warn() { echo -e "${YELLOW}[WARN]${NC} $*"; }
error() { echo -e "${RED}[ERROR]${NC} $*"; }
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REMOVE_IMAGES=false
REMOVE_CONFIG=false
usage() {
echo "Использование: $0 [ОПЦИИ]"
echo ""
echo "Опции:"
echo " --remove-images Также удалить Docker-образы"
echo " --remove-config Также удалить директорию config/ с ключами"
echo " --help, -h Показать эту справку"
echo ""
echo "Пример:"
echo " sudo $0"
echo " sudo $0 --remove-images --remove-config"
exit 0
}
parse_args() {
while [[ $# -gt 0 ]]; do
case "$1" in
--remove-images) REMOVE_IMAGES=true; shift ;;
--remove-config) REMOVE_CONFIG=true; shift ;;
--help|-h) usage ;;
*) error "Неизвестный аргумент: $1"; usage ;;
esac
done
}
check_root() {
if [[ $EUID -ne 0 ]]; then
error "Скрипт должен выполняться от root. Используйте: sudo $0"
exit 1
fi
}
stop_containers() {
echo ""
info "Остановка Docker-контейнеров..."
if docker ps -a --format '{{.Names}}' | grep -q "wireguard-server"; then
docker compose -f "$SCRIPT_DIR/docker-compose.server.yml" down 2>/dev/null || true
success "Контейнер wireguard-server остановлен и удалён"
else
info "Контейнер wireguard-server не найден"
fi
if docker ps -a --format '{{.Names}}' | grep -q "wireguard-client"; then
docker compose -f "$SCRIPT_DIR/docker-compose.client.yml" down 2>/dev/null || true
success "Контейнер wireguard-client остановлен и удалён"
else
info "Контейнер wireguard-client не найден"
fi
}
remove_images() {
if [[ "$REMOVE_IMAGES" != true ]]; then
return 0
fi
info "Удаление Docker-образов..."
if docker images --format '{{.Repository}}' | grep -q "wireguard-vps-tunnel-server"; then
docker rmi wireguard-vps-tunnel-server 2>/dev/null || true
success "Образ wireguard-vps-tunnel-server удалён"
fi
if docker images --format '{{.Repository}}' | grep -q "wireguard-vps-tunnel-client"; then
docker rmi wireguard-vps-tunnel-client 2>/dev/null || true
success "Образ wireguard-vps-tunnel-client удалён"
fi
}
remove_config() {
if [[ "$REMOVE_CONFIG" != true ]]; then
return 0
fi
if [[ -d "$SCRIPT_DIR/config" ]]; then
rm -rf "$SCRIPT_DIR/config"
success "Директория config/ удалена"
fi
if [[ -f "$SCRIPT_DIR/.env" ]]; then
rm -f "$SCRIPT_DIR/.env"
success "Файл .env удалён"
fi
}
main() {
echo -e "${RED}${BOLD}"
echo "╔══════════════════════════════════════════════════════════╗"
echo "║ WireGuard VPS Tunnel — ДЕИНСТАЛЛЯТОР (Docker) ║"
echo "╚══════════════════════════════════════════════════════════╝"
echo -e "${NC}"
check_root
parse_args "$@"
warn "Этот скрипт остановит и удалит Docker-контейнеры WireGuard VPS Tunnel."
echo ""
read -r -p "Продолжить? [y/N]: " confirm
if [[ ! "$confirm" =~ ^[Yy]$ ]]; then
info "Отмена."
exit 0
fi
stop_containers
remove_images
remove_config
echo ""
success "WireGuard VPS Tunnel полностью удалён."
echo ""
echo -e "${YELLOW}${BOLD}Примечание:${NC} ${YELLOW}SSH-сервер и другие сервисы не были затронуты.${NC}"
echo -e "${YELLOW}PasswordAuthentication в sshd_config НЕ изменялся.${NC}"
echo -e "${YELLOW}Docker и wireguard-tools (на хосте) не удалялись.${NC}"
}
main "$@"