#!/usr/bin/env bash # Run journalctl --vacuum-time=7d in key CTs to limit journal size. # Usage: ./scripts/maintenance/journal-vacuum-key-ct.sh [--dry-run] # Requires: SSH to Proxmox hosts. VMIDs: 5000 (Blockscout), 2101 (RPC), 10233/10234 (NPMplus), 2400, 10130, 10150, 10151. # See: docs/04-configuration/STORAGE_GROWTH_AND_HEALTH.md set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" [[ -f "${PROJECT_ROOT}/config/ip-addresses.conf" ]] && source "${PROJECT_ROOT}/config/ip-addresses.conf" 2>/dev/null || true VACUUM_DAYS="${VACUUM_DAYS:-7}" DRY_RUN=0 [[ "${1:-}" == "--dry-run" ]] && DRY_RUN=1 # VMID -> host IP (from load-project-env get_host_for_vmid or defaults) get_host() { local vmid="$1" case "$vmid" in 5000|10234|10237|2201|2303|2401) echo "${PROXMOX_HOST_R630_02:-192.168.11.12}";; 2101|10130|10150|10151|10233) echo "${PROXMOX_HOST_R630_01:-192.168.11.11}";; 2400) echo "${PROXMOX_HOST_ML110:-192.168.11.10}";; *) echo "${PROXMOX_HOST_R630_01:-192.168.11.11}";; esac } KEY_VMIDS="5000 2101 10233 10234 2400 10130 10150 10151" run_ssh() { ssh -o ConnectTimeout=10 -o StrictHostKeyChecking=no root@"$1" "$2" 2>/dev/null || true; } echo "=== Journal vacuum (keep last ${VACUUM_DAYS}d) in key CTs ===" [[ $DRY_RUN -eq 1 ]] && echo "(dry-run: no changes)" echo "" for vmid in $KEY_VMIDS; do host=$(get_host "$vmid") status=$(run_ssh "$host" "pct status $vmid 2>/dev/null" || true) if [[ "$status" != *"running"* ]]; then echo " VMID $vmid: skip (not running)" continue fi if [[ $DRY_RUN -eq 1 ]]; then echo " [dry-run] VMID $vmid on $host: would run journalctl --vacuum-time=${VACUUM_DAYS}d" else out=$(run_ssh "$host" "pct exec $vmid -- journalctl --vacuum-time=${VACUUM_DAYS}d 2>&1" || true) echo " VMID $vmid: ${out:-done}" fi done echo "" echo "Done. Schedule weekly (e.g. with daily-weekly-checks weekly or separate cron)."