63 lines
1.3 KiB
Bash
63 lines
1.3 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ensure_root
|
|
detect_pkg_manager
|
|
pkg_install curl
|
|
|
|
BASE="/srv/docker/services/node-red"
|
|
$SUDO mkdir -p "$BASE/data"
|
|
cd "$BASE"
|
|
|
|
echo "Starte Installation von Node-RED..."
|
|
|
|
# Funktion: finde den nächsten freien Port ab 1880
|
|
find_free_port() {
|
|
PORT=1880
|
|
while ss -lnt | awk '{print $4}' | grep -q ":$PORT$"; do
|
|
PORT=$((PORT + 1))
|
|
done
|
|
echo "$PORT"
|
|
}
|
|
|
|
FREE_PORT=$(find_free_port)
|
|
echo "✅ Freier Port für Node-RED gefunden: $FREE_PORT"
|
|
|
|
$SUDO tee docker-compose.yml >/dev/null <<EOF
|
|
services:
|
|
node-red:
|
|
image: nodered/node-red:latest
|
|
container_name: node-red-$FREE_PORT
|
|
restart: unless-stopped
|
|
ports:
|
|
- "$FREE_PORT:1880"
|
|
volumes:
|
|
- ./data:/data
|
|
environment:
|
|
TZ=Europe/Berlin
|
|
EOF
|
|
|
|
$SUDO docker compose up -d
|
|
|
|
log "Node-RED wurde installiert."
|
|
log "Web UI: http://<server-ip>:$FREE_PORT"
|
|
log "Konfiguration / Flows: $BASE/data/"
|
|
|
|
echo ""
|
|
read -p "Soll ein NGINX Proxy-Pfad eingerichtet werden? (y/n): " PROXY
|
|
|
|
if [[ "$PROXY" == "y" || "$PROXY" == "Y" ]]; then
|
|
PROXY_SCRIPT="/srv/docker/system/nginx-proxy-path/install.sh"
|
|
|
|
if [ ! -f "$PROXY_SCRIPT" ]; then
|
|
log "Fehler: nginx-proxy-path nicht installiert."
|
|
log "Bitte zuerst das Rezept 'nginx-proxy-path' installieren."
|
|
exit 0
|
|
fi
|
|
|
|
echo ""
|
|
echo "Bitte Proxy-Pfad einrichten:"
|
|
bash "$PROXY_SCRIPT"
|
|
fi
|
|
|