#!/usr/bin/env bash set -euo pipefail if [ "$(id -u)" -ne 0 ]; then exec sudo "$0" "$@" fi echo "== LisgloSIPS B startup ==" hostname systemctl start lisglosips.target required_services=( tailscaled mysql redis-server lisglosips-caller-analytics-redis postgresql nginx opensips rtpengine-daemon rtpengine-recording-daemon lisglosips-redis-auth-proxy lisglosips@api lisglosips@cdr-worker lisglosips@recording-worker lisglosips@config-publisher heplify-server homer-app lisglosips-prometheus grafana-server lisglosips-node-exporter lisglosips-mysqld-exporter lisglosips-postgres-exporter lisglosips-redis-exporter ) for attempt in $(seq 1 30); do missing=() for unit in "${required_services[@]}"; do systemctl --quiet is-active "$unit" || missing+=("$unit") done [ "${#missing[@]}" -eq 0 ] && break [ "$attempt" -eq 30 ] && { printf 'startup timeout; inactive services: %s\n' "${missing[*]}" >&2 exit 1 } sleep 2 done nginx -t opensips -C -f /etc/opensips/opensips.cfg >/dev/null echo "== release ==" readlink -f /opt/lisglosips/current echo "== services ==" systemctl is-active "${required_services[@]}" echo "== timers ==" systemctl is-active lisglosips-backup.timer lisglosips-recording-finalize.timer lisglosips-caller-analytics-maintenance.timer systemctl is-enabled lisglosips.target lisglosips-backup.timer lisglosips-recording-finalize.timer lisglosips-caller-analytics-maintenance.timer \ lisglosips@api lisglosips@cdr-worker lisglosips@recording-worker lisglosips@config-publisher echo "== api ready ==" curl -fsS http://127.0.0.1:3000/api/v2/health/ready echo echo "== preflight ==" /opt/lisglosips/current/infra/server-b/s30/lisglosips-release-preflight.sh echo "== failed units ==" systemctl --failed --no-pager