Обновить install.sh

Add safe stack uninstall and redact public IP
This commit is contained in:
2026-08-30 13:53:49 +04:00
parent 4caf18fb9b
commit f4d70011e8
+15 -2
View File
@@ -11,6 +11,7 @@ ADMIN_PASSWORD=""
ALLOW_DNS_MISMATCH=0 ALLOW_DNS_MISMATCH=0
ADOPT_EXISTING=0 ADOPT_EXISTING=0
DRY_RUN=0 DRY_RUN=0
UNINSTALL=0
log() { printf '\033[1;34m[DNS]\033[0m %s\n' "$*"; } log() { printf '\033[1;34m[DNS]\033[0m %s\n' "$*"; }
warn() { printf '\033[1;33m[WARN]\033[0m %s\n' "$*" >&2; } warn() { printf '\033[1;33m[WARN]\033[0m %s\n' "$*" >&2; }
@@ -27,6 +28,7 @@ Usage: install.sh [options]
--stack-dir PATH Installation directory (default: /opt/stacks/adguard-doh) --stack-dir PATH Installation directory (default: /opt/stacks/adguard-doh)
--allow-dns-mismatch Continue when DNS does not yet point to this VPS --allow-dns-mismatch Continue when DNS does not yet point to this VPS
--adopt-existing Adopt a compatible unmarked stack directory --adopt-existing Adopt a compatible unmarked stack directory
--uninstall Stop and remove this stack; preserve its files
--check Validate only; do not write or start containers --check Validate only; do not write or start containers
-h, --help Show this help -h, --help Show this help
@@ -44,6 +46,7 @@ while (($#)); do
--stack-dir) STACK_DIR="${2:-}"; shift 2 ;; --stack-dir) STACK_DIR="${2:-}"; shift 2 ;;
--allow-dns-mismatch) ALLOW_DNS_MISMATCH=1; shift ;; --allow-dns-mismatch) ALLOW_DNS_MISMATCH=1; shift ;;
--adopt-existing) ADOPT_EXISTING=1; shift ;; --adopt-existing) ADOPT_EXISTING=1; shift ;;
--uninstall) UNINSTALL=1; shift ;;
--check) DRY_RUN=1; shift ;; --check) DRY_RUN=1; shift ;;
-h|--help) usage; exit 0 ;; -h|--help) usage; exit 0 ;;
*) die "Unknown option: $1" ;; *) die "Unknown option: $1" ;;
@@ -52,6 +55,16 @@ done
[[ ${EUID:-$(id -u)} -eq 0 ]] || die "Run as root (sudo)." [[ ${EUID:-$(id -u)} -eq 0 ]] || die "Run as root (sudo)."
if ((UNINSTALL)); then
[[ -f "$STACK_DIR/.berloga-adguard-installer" ]] || die "No Berloga-managed AdGuard stack found at $STACK_DIR. Nothing was changed."
if command -v docker >/dev/null 2>&1 && [[ -f "$STACK_DIR/compose.yaml" ]]; then
docker compose -f "$STACK_DIR/compose.yaml" --project-name "$PROJECT_NAME" down --remove-orphans
fi
log "AdGuard DoH containers and network removed."
log "Configuration and backups were preserved at $STACK_DIR. Docker and other stacks were not changed."
exit 0
fi
read_tty() { read_tty() {
local prompt="$1" value="" local prompt="$1" value=""
[[ -r /dev/tty ]] || die "No terminal available; pass domains as arguments." [[ -r /dev/tty ]] || die "No terminal available; pass domains as arguments."
@@ -112,9 +125,9 @@ for domain in "$DOH_DOMAIN" "$ADMIN_DOMAIN"; do
resolved="$(getent ahostsv4 "$domain" 2>/dev/null | awk 'NR==1{print $1}')" resolved="$(getent ahostsv4 "$domain" 2>/dev/null | awk 'NR==1{print $1}')"
if [[ -z "$resolved" || (-n "$PUBLIC_IP" && "$resolved" != "$PUBLIC_IP") ]]; then if [[ -z "$resolved" || (-n "$PUBLIC_IP" && "$resolved" != "$PUBLIC_IP") ]]; then
if ((ALLOW_DNS_MISMATCH)); then if ((ALLOW_DNS_MISMATCH)); then
warn "$domain currently resolves to '${resolved:-nothing}', VPS public IP is '${PUBLIC_IP:-unknown}'. Caddy will retry certificate issuance." warn "$domain does not currently resolve to this VPS. Caddy will retry certificate issuance."
else else
die "$domain does not point to this VPS (${PUBLIC_IP:-unknown}). Add A records first or use --allow-dns-mismatch. Nothing was changed." die "$domain does not point to this VPS. Add A records first or use --allow-dns-mismatch. Nothing was changed."
fi fi
fi fi
done done