diff --git a/docs/devops/single_azure_vm/setup.sh b/docs/devops/single_azure_vm/setup.sh index 496b4f58..7ed2708e 100755 --- a/docs/devops/single_azure_vm/setup.sh +++ b/docs/devops/single_azure_vm/setup.sh @@ -91,7 +91,7 @@ phase1_system() { # Install essentials apt-get install -y -qq \ - ca-certificates curl gnupg lsb-release git jq unzip + ca-certificates curl gnupg lsb-release git jq unzip iproute2 # ── Docker ───────────────────────────────────────────────────────── if ! command -v docker &>/dev/null; then @@ -101,8 +101,7 @@ phase1_system() { | gpg --dearmor -o /etc/apt/keyrings/docker.gpg chmod a+r /etc/apt/keyrings/docker.gpg - echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \ - https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" \ + echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" \ > /etc/apt/sources.list.d/docker.list apt-get update -qq @@ -250,7 +249,7 @@ phase2_gitea() { -H "Content-Type: application/json" \ -d '{"name":"vm-deploy","scopes":["write:package","read:package","write:organization","read:organization"]}') - GITEA_NPM_TOKEN=$(echo "$token_response" | jq -r '.sha1') + GITEA_NPM_TOKEN=$(echo "$token_response" | jq -r '.sha1 // .token') if [ -z "$GITEA_NPM_TOKEN" ] || [ "$GITEA_NPM_TOKEN" = "null" ]; then fail "Failed to create Gitea API token. Response: $token_response" fi @@ -299,12 +298,12 @@ phase3_clone() { for df in "${INSTALL_DIR}"/*/backend/Dockerfile "${INSTALL_DIR}"/*/web/Dockerfile "${INSTALL_DIR}"/learning_multimodal_memory_agents/mindlyst-native/web/Dockerfile "${INSTALL_DIR}"/learning_voice_ai_agent/user-dashboard-web/Dockerfile; do [ -f "$df" ] || continue if grep -q 'cso\.proxy\.att\.com' "$df" 2>/dev/null; then - # Remove proxy ENV lines and jfrog registry reference sed -i \ -e '/HTTP_PROXY=http:\/\/cso\.proxy/d' \ -e '/HTTPS_PROXY=http:\/\/cso\.proxy/d' \ -e '/NO_PROXY=/d' \ - -e 's|npm config set registry https://jfrog-pkg-proxy[^ ]* && ||' \ + -e '/jfrog-pkg-proxy.*\\$/d' \ + -e 's| && npm config set registry https://jfrog-pkg-proxy[^ ]*||' \ "$df" patched=$((patched + 1)) fi @@ -602,12 +601,17 @@ HEALTH # MAIN # ═══════════════════════════════════════════════════════════════════════ main() { + # Tee all output to a log file so SSH disconnection doesn't lose context + mkdir -p "$INSTALL_DIR" + exec > >(tee -a "${INSTALL_DIR}/setup.log") 2>&1 + echo "" echo "╔═══════════════════════════════════════════════════════════════╗" echo "║ ByteLyst Single-VM Deployment (raw Ubuntu) ║" echo "║ 27 services · 10 products · Ollama · Gitea · 1 VM ║" echo "╚═══════════════════════════════════════════════════════════════╝" echo "" + log "Log file: ${INSTALL_DIR}/setup.log" [ "$(id -u)" -eq 0 ] || fail "This script must be run as root (sudo)."