#!/usr/bin/env bash # ============================================================= # start.sh — Avvia Node-RED 5.0 in locale per s2s-reasoning-engine # # Uso: # ./start.sh # porta default 1881 # PORT=1900 ./start.sh # porta custom # LOG_LEVEL=debug ./start.sh # log più dettagliato # DEBUG=nodes:* ./start.sh # debug Node-RED interno # Stop: Ctrl+C # ============================================================= set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PARENT_DIR="$(dirname "$ROOT_DIR")" cd "$ROOT_DIR" # ---------------------------------------------------------- # 1) Carica env: prima locale .env (se esiste) poi padre ../.env # Il file locale sovrascrive il padre se c'è lo stesso var. # ---------------------------------------------------------- set -a if [ -f "$ROOT_DIR/.env" ]; then echo "[env] loaded $ROOT_DIR/.env" # shellcheck disable=SC1091 source "$ROOT_DIR/.env" fi if [ -f "$PARENT_DIR/.env" ]; then echo "[env] loaded $PARENT_DIR/.env" # shellcheck disable=SC1091 source "$PARENT_DIR/.env" fi set +a # ---------------------------------------------------------- # 2) Parametri runtime Node-RED # ---------------------------------------------------------- PORT="${PORT:-${NODE_RED_PORT:-1881}}" export PORT export NODE_RED_PORT="$PORT" export NODE_RED_LOG_LEVEL="${LOG_LEVEL:-${NODE_RED_LOG_LEVEL:-info}}" export NODE_RED_CREDENTIAL_SECRET="${NODE_RED_CREDENTIAL_SECRET:-s2s-reasoning-local-dev}" export FLOWS="${FLOWS:-$ROOT_DIR/.node-red/flows.json}" # UserDir locale (tutto dentro la cartella corrente, NO ~/.node-red) USERDIR="${USERDIR:-$ROOT_DIR/.node-red}" SETTINGS="${SETTINGS:-$USERDIR/settings.js}" # Assicura che la userDir esista e i file base siano presenti. mkdir -p "$USERDIR" if [ ! -f "$SETTINGS" ] || [ "$ROOT_DIR/settings.js" -nt "$SETTINGS" ]; then cp -f "$ROOT_DIR/settings.js" "$SETTINGS" echo "[init] copied settings.js -> $SETTINGS" fi if [ ! -f "$FLOWS" ] || [ "$ROOT_DIR/flows.json" -nt "$FLOWS" ]; then cp -f "$ROOT_DIR/flows.json" "$FLOWS" echo "[init] copied flows.json -> $FLOWS" fi # Verifica node_modules installati if [ ! -d "$ROOT_DIR/node_modules/node-red" ]; then echo "[init] node_modules non trovati. Avvio npm install..." npm install --no-audit --no-fund fi echo "" echo "╔════════════════════════════════════════════════════════════╗" echo "║ s2s-reasoning-engine — Node-RED v5 locale ║" echo "╠════════════════════════════════════════════════════════════╣" echo "║ Editor: http://localhost:${PORT}/ ║" echo "║ API: http://localhost:${PORT}/api/reasoning ║" echo "║ UserDir: ${USERDIR}" echo "║ LogLevel: ${NODE_RED_LOG_LEVEL}" echo "╚════════════════════════════════════════════════════════════╝" echo "" # ---------------------------------------------------------- # 3) Avvio Node-RED # ---------------------------------------------------------- exec "$ROOT_DIR/node_modules/.bin/node-red" \ --userDir "$USERDIR" \ --settings "$SETTINGS" \ --port "$PORT"