Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
- ADD_CHAIN138_TO_LEDGER_LIVE: Ledger form done; public code review repo bis-innovations/LedgerLive; init/push commands - CONTRACT_DEPLOYMENT_RUNBOOK: Chain 138 gas price 1 gwei, 36-addr check, TransactionMirror workaround - CONTRACT_*: AddressMapper, MirrorManager deployed 2026-02-12; 36-address on-chain check - NEXT_STEPS_FOR_YOU: Ledger done; steps completable now (no LAN); run-completable-tasks-from-anywhere - MASTER_INDEX, OPERATOR_OPTIONAL, SMART_CONTRACTS_INVENTORY_SIMPLE: updates - LEDGER_BLOCKCHAIN_INTEGRATION_COMPLETE: bis-innovations/LedgerLive reference Co-authored-by: Cursor <cursoragent@cursor.com>
130 lines
5.1 KiB
Bash
Executable File
130 lines
5.1 KiB
Bash
Executable File
#!/bin/bash
|
|
# Upgrade Node.js to v22 LTS on All Application Containers
|
|
# Uses host mount method for unprivileged containers
|
|
|
|
set -uo pipefail
|
|
|
|
NODE_IP="192.168.11.11"
|
|
APPLICATION_CONTAINERS=(10030 10040 10050 10060 10070 10080 10090 10091 10092 10130 10150 10151)
|
|
|
|
log_info() { echo -e "\033[0;32m[INFO]\033[0m $1"; }
|
|
log_error() { echo -e "\033[0;31m[ERROR]\033[0m $1"; }
|
|
log_success() { echo -e "\033[0;32m[✓]\033[0m $1"; }
|
|
|
|
upgrade_nodejs_host_mount() {
|
|
local vmid="$1"
|
|
log_info "Upgrading Node.js to v22 LTS on CT $vmid via host mount..."
|
|
|
|
ssh -o ConnectTimeout=30 -o StrictHostKeyChecking=no root@${NODE_IP} "
|
|
# Stop container
|
|
pct stop $vmid 2>/dev/null || true
|
|
sleep 3
|
|
|
|
# Mount container
|
|
MOUNT_OUT=\$(pct mount $vmid 2>&1)
|
|
MOUNT=\$(echo \"\$MOUNT_OUT\" | grep -o '/var/lib/lxc/[0-9]*/rootfs' | head -1)
|
|
|
|
if [ -z \"\$MOUNT\" ]; then
|
|
# Try alternative mount point format
|
|
MOUNT=\$(echo \"\$MOUNT_OUT\" | grep rootfs | awk '{print \$NF}' | head -1)
|
|
fi
|
|
|
|
if [ -n \"\$MOUNT\" ] && [ -d \"\$MOUNT\" ]; then
|
|
# Upgrade Node.js using chroot
|
|
/usr/sbin/chroot \$MOUNT /bin/bash -c '
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
|
|
# Remove old Node.js if installed via apt
|
|
apt-get remove -y nodejs npm 2>/dev/null || true
|
|
|
|
# Update package lists
|
|
apt-get update -qq
|
|
|
|
# Install prerequisites
|
|
apt-get install -y -qq curl ca-certificates gnupg lsb-release || exit 1
|
|
|
|
# Add NodeSource repository for Node.js 22 LTS
|
|
curl -fsSL https://deb.nodesource.com/setup_22.x | bash - || exit 1
|
|
|
|
# Install Node.js 22 LTS
|
|
apt-get install -y -qq nodejs || exit 1
|
|
|
|
# Install pnpm globally
|
|
npm install -g pnpm || exit 1
|
|
|
|
# Verify installation
|
|
node --version && npm --version && pnpm --version && echo \"Node.js v22 installed\"
|
|
' && echo 'Node.js v22 installed successfully' || echo 'Installation failed'
|
|
|
|
# Unmount
|
|
pct unmount $vmid 2>/dev/null || true
|
|
else
|
|
echo \"Mount failed. Mount output: \$MOUNT_OUT\"
|
|
pct unmount $vmid 2>/dev/null || true
|
|
exit 1
|
|
fi
|
|
|
|
# Start container
|
|
pct start $vmid 2>/dev/null || true
|
|
sleep 3
|
|
" && log_success "Node.js v22 installed on CT $vmid" || log_error "Failed to install Node.js v22 on CT $vmid"
|
|
}
|
|
|
|
upgrade_nodejs_direct() {
|
|
local vmid="$1"
|
|
log_info "Upgrading Node.js to v22 LTS on CT $vmid (direct method)..."
|
|
|
|
ssh -o ConnectTimeout=30 -o StrictHostKeyChecking=no root@${NODE_IP} "
|
|
pct exec $vmid -- bash -c '
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
|
|
# Remove old Node.js if installed via apt
|
|
apt-get remove -y nodejs npm 2>/dev/null || true
|
|
|
|
# Update package lists
|
|
apt-get update -qq
|
|
|
|
# Install prerequisites
|
|
apt-get install -y -qq curl ca-certificates gnupg lsb-release || exit 1
|
|
|
|
# Add NodeSource repository for Node.js 22 LTS
|
|
curl -fsSL https://deb.nodesource.com/setup_22.x | bash - || exit 1
|
|
|
|
# Install Node.js 22 LTS
|
|
apt-get install -y -qq nodejs || exit 1
|
|
|
|
# Install pnpm globally
|
|
npm install -g pnpm || exit 1
|
|
|
|
# Verify installation
|
|
node --version && npm --version && pnpm --version && echo \"Node.js v22 installed\"
|
|
' 2>&1
|
|
" && log_success "Node.js v22 installed on CT $vmid" || log_error "Failed to install Node.js v22 on CT $vmid"
|
|
}
|
|
|
|
echo "═══════════════════════════════════════════════════════════"
|
|
echo "Upgrade Node.js to v22 LTS on All Application Containers"
|
|
echo "═══════════════════════════════════════════════════════════"
|
|
echo ""
|
|
|
|
# Use host mount method for unprivileged containers
|
|
log_info "Upgrading Node.js on application containers (using host mount method)..."
|
|
for vmid in "${APPLICATION_CONTAINERS[@]}"; do
|
|
upgrade_nodejs_host_mount "$vmid"
|
|
sleep 2
|
|
done
|
|
|
|
# Verify installations
|
|
echo ""
|
|
log_info "Verifying Node.js v22 installations..."
|
|
for vmid in "${APPLICATION_CONTAINERS[@]}"; do
|
|
version=$(ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no root@${NODE_IP} \
|
|
"pct exec $vmid -- node --version 2>&1 | head -1 || echo 'not installed'")
|
|
npm_version=$(ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no root@${NODE_IP} \
|
|
"pct exec $vmid -- npm --version 2>&1 | head -1 || echo 'not installed'")
|
|
echo " CT $vmid: Node.js $version, npm $npm_version"
|
|
done
|
|
|
|
echo ""
|
|
log_success "Node.js upgrade to v22 LTS complete!"
|