#!/usr/bin/env bash # Shared helpers for deploy scripts. Server = BHS128b (ubuntu@51.161.112.85) since 2026-09-14 (was BHS64b / 10.67.0.61 # until then; its stopped stack + volumes are kept as a cold copy). Reached through the laptop's SSH alias. set -euo pipefail IP_SERVER="${IP_SERVER:-BHS128b}" IP_REMOTE_DIR="${IP_REMOTE_DIR:-/opt/internetpressure}" IP_GATEWAY="${IP_GATEWAY:-BHS64}" # MacLustr Tunnel gateway (Caddy + WireGuard hub) IP_DOMAIN="${IP_DOMAIN:-www.internetpressure.io}" IP_WG_IP="${IP_WG_IP:-10.67.0.62}" # wg1 address of IP_SERVER on the BHS64 hub (ipmap) REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" log() { printf '\033[1;36m▸\033[0m %s\n' "$*"; } ok() { printf '\033[1;32m✔\033[0m %s\n' "$*"; } warn() { printf '\033[1;33m!\033[0m %s\n' "$*" >&2; } die() { printf '\033[1;31m✘\033[0m %s\n' "$*" >&2; exit 1; } rssh() { ssh -n -o BatchMode=yes -o ConnectTimeout=15 "$IP_SERVER" "$@"; } sync_repo() { log "rsync repo → $IP_SERVER:$IP_REMOTE_DIR" rssh "sudo mkdir -p $IP_REMOTE_DIR && sudo chown \$(id -un):\$(id -gn) $IP_REMOTE_DIR" rsync -az --delete \ --exclude-from="$REPO_ROOT/deploy/rsync-exclude.txt" \ "$REPO_ROOT/" "$IP_SERVER:$IP_REMOTE_DIR/" } compose() { rssh "cd $IP_REMOTE_DIR && docker compose -f infra/compose.yml --env-file deploy/.env $*"; }