feat: universal zero-downtime migration from legacy WireGuard/Go stack to operator-docker
This commit is contained in:
parent
d83265843e
commit
32967b3658
3 changed files with 31 additions and 18 deletions
|
|
@ -76,6 +76,8 @@ ok "Legacy WireGuard: $LEGACY_WG"
|
|||
sep
|
||||
info "Detecting legacy stack location..."
|
||||
LEGACY_COMPOSE_DIR=""
|
||||
|
||||
# Search in known paths first
|
||||
for DIR in "$LINUX_HOME/sp-env-wireguard" \
|
||||
"$LINUX_HOME/sp-env-wireguard-ipv6" \
|
||||
"$LINUX_HOME/wireguard" \
|
||||
|
|
@ -88,6 +90,15 @@ for DIR in "$LINUX_HOME/sp-env-wireguard" \
|
|||
break
|
||||
fi
|
||||
done
|
||||
|
||||
# Fallback: search entire home directory
|
||||
if [ -z "$LEGACY_COMPOSE_DIR" ]; then
|
||||
LEGACY_COMPOSE_DIR=$(find "$LINUX_HOME" -maxdepth 6 -name "docker-compose.yml" 2>/dev/null | \
|
||||
while read -r f; do
|
||||
grep -q "wireguard" "$f" 2>/dev/null && dirname "$f" && break
|
||||
done | head -1)
|
||||
fi
|
||||
|
||||
[ -z "$LEGACY_COMPOSE_DIR" ] && fail "Legacy docker-compose.yml not found."
|
||||
ok "Legacy stack: $LEGACY_COMPOSE_DIR"
|
||||
echo "$LEGACY_COMPOSE_DIR" > "$BACKUP_DIR/legacy_compose_dir"
|
||||
|
|
|
|||
|
|
@ -9,18 +9,6 @@ if [ "$EUID" -eq 0 ]; then
|
|||
exit 1
|
||||
fi
|
||||
|
||||
RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; CYAN='\033[0;36m'; RESET='\033[0m'
|
||||
#!/bin/bash -eu
|
||||
# =============================================================================
|
||||
# 01-migrate-user.sh — Run as Linux user (not root)
|
||||
# Installs operator-docker and prepares for peer migration
|
||||
# Auto-rollback: restores nginx, certs and legacy stack on failure
|
||||
# =============================================================================
|
||||
if [ "$EUID" -eq 0 ]; then
|
||||
echo "[X] Run as your Linux user, not root"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; CYAN='\033[0;36m'; RESET='\033[0m'
|
||||
|
||||
BACKUP_DIR="$HOME/.wg-migration"
|
||||
|
|
@ -79,7 +67,14 @@ echo "[START-01] $(date '+%Y-%m-%d %H:%M:%S')" >> "$LOG"
|
|||
sep
|
||||
info "Checking prerequisites..."
|
||||
|
||||
docker info &>/dev/null || fail "No Docker access. Run: sudo usermod -aG docker $USER && newgrp docker"
|
||||
if ! docker info &>/dev/null; then
|
||||
if groups | grep -q docker; then
|
||||
fail "Docker socket not accessible. Try logging out and back in."
|
||||
else
|
||||
warn "No Docker access — re-launching with docker group..."
|
||||
exec newgrp docker "$0" "$@"
|
||||
fi
|
||||
fi
|
||||
|
||||
[ -f "$BACKUP_DIR/private_key" ] || fail "No backup found. Run: sudo bash 00-migrate-root.sh"
|
||||
[ -f "$BACKUP_DIR/wg0-legacy.conf" ] || fail "No peer backup found. Run: sudo bash 00-migrate-root.sh"
|
||||
|
|
|
|||
|
|
@ -64,7 +64,14 @@ echo "[START-02] $(date '+%Y-%m-%d %H:%M:%S')" >> "$LOG"
|
|||
sep
|
||||
info "Checking prerequisites..."
|
||||
|
||||
docker info &>/dev/null || fail "No Docker access. Run: sudo usermod -aG docker $USER && newgrp docker"
|
||||
if ! docker info &>/dev/null; then
|
||||
if groups | grep -q docker; then
|
||||
fail "Docker socket not accessible. Try logging out and back in."
|
||||
else
|
||||
warn "No Docker access — re-launching with docker group..."
|
||||
exec newgrp docker "$0" "$@"
|
||||
fi
|
||||
fi
|
||||
|
||||
[ -f "$BACKUP_DIR/private_key" ] || fail "No private key backup found."
|
||||
[ -f "$BACKUP_DIR/wg0-legacy.conf" ] || fail "No peer backup found."
|
||||
|
|
@ -142,7 +149,7 @@ echo "[WIREGUARD-START] $(date '+%Y-%m-%d %H:%M:%S')" >> "$LOG"
|
|||
|
||||
cd "$OPERATOR_DIR"
|
||||
sudo modprobe ip6table_filter 2>/dev/null || true
|
||||
docker compose up -d wireguard
|
||||
docker compose up -d --force-recreate wireguard
|
||||
info "Waiting for startup..."
|
||||
sleep 8
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue