Add node docs, collabora purple UI, and portable install env

Human-readable help in all six palette nodes, docs/NODES.md with usage examples, expanded example flows, and auto-detect NODERED_DIR plus CODE bridge IP from .env on any VM.
This commit is contained in:
root
2026-08-22 17:10:34 +02:00
parent 3643bd2b31
commit 5f5a381662
13 changed files with 558 additions and 50 deletions
+69 -12
View File
@@ -9,7 +9,8 @@ NODERED_DIR="${NODERED_DIR:-/home/ncadmin/nextcloud-node-red}"
NODERED_CONTAINER="${NODERED_CONTAINER:-nextcloud-node-red}"
NODERED_PORT="${NODERED_PORT:-1880}"
CODE_CONTAINER="${CODE_CONTAINER:-code}"
COLLABORA_IP="${COLLABORA_IP:-172.17.0.2}"
COLLABORA_IP="${COLLABORA_IP:-}"
NEXTCLOUD_URL="${NEXTCLOUD_URL:-https://cloud.hannesahlin.se}"
MARKER="nextcloud-collabora-nodered"
log() { printf '[integrate] %s\n' "$*"; }
@@ -141,11 +142,66 @@ compose_run() {
run_as_root env DOCKER_BUILDKIT=1 ${compose} "$@"
}
code_bridge_ip() {
docker inspect -f '{{range $k,$v := .NetworkSettings.Networks}}{{if eq $k "bridge"}}{{$v.IPAddress}}{{end}}{{end}}' "${CODE_CONTAINER}" 2>/dev/null
}
detect_code_ip() {
local ip
ip="$(code_bridge_ip)"
if [ -n "${ip}" ]; then
COLLABORA_IP="${ip}"
log "CODE bridge-IP: ${COLLABORA_IP} (container ${CODE_CONTAINER})"
return 0
fi
if [ -n "${COLLABORA_IP}" ]; then
warn "Kunde inte läsa bridge-IP — använder COLLABORA_IP=${COLLABORA_IP}"
return 0
fi
die "CODE bridge-IP saknas — sätt COLLABORA_IP eller kontrollera att ${CODE_CONTAINER} kör på Docker bridge"
}
detect_nodered_dir() {
if [ -d "${NODERED_DIR}" ] && [ -f "${NODERED_DIR}/Dockerfile" ]; then
return 0
fi
local from_compose
from_compose="$(docker inspect -f '{{index .Config.Labels "com.docker.compose.project.working_dir"}}' "${NODERED_CONTAINER}" 2>/dev/null || true)"
if [ -n "${from_compose}" ] && [ -f "${from_compose}/Dockerfile" ]; then
NODERED_DIR="${from_compose}"
log "Node-RED-katalog från compose-label: ${NODERED_DIR}"
return 0
fi
for candidate in \
"/home/ncadmin/nextcloud-node-red" \
"/opt/nextcloud-node-red"; do
if [ -f "${candidate}/Dockerfile" ]; then
NODERED_DIR="${candidate}"
log "Node-RED-katalog hittad: ${NODERED_DIR}"
return 0
fi
done
die "NODERED_DIR saknas eller ogiltig — sätt sökväg till befintlig nextcloud-node-red (Dockerfile + entrypoint.sh)"
}
resolve_paths() {
if [ -f "${PKG_SRC}/.env" ]; then
set -a
# shellcheck disable=SC1091
. "${PKG_SRC}/.env"
set +a
fi
if [ "$(id -u)" -eq 0 ] && [ -d "/home/ncadmin/nextcloud-node-red" ]; then
NODERED_DIR="${NODERED_DIR:-/home/ncadmin/nextcloud-node-red}"
PKG_SRC="${PKG_SRC:-/home/ncadmin/nextcloud-collabora-nodered}"
fi
detect_nodered_dir
detect_code_ip
}
stop_sidecar_if_any() {
@@ -293,10 +349,6 @@ wait_nodered() {
warn "Node-RED svarade inte inom 60 s"
}
code_bridge_ip() {
docker inspect -f '{{range $k,$v := .NetworkSettings.Networks}}{{if eq $k "bridge"}}{{$v.IPAddress}}{{end}}{{end}}' "${CODE_CONTAINER}" 2>/dev/null
}
verify_code_from_nodered() {
local code_ip
code_ip="$(code_bridge_ip)"
@@ -328,21 +380,26 @@ main() {
wait_nodered
verify_code_from_nodered
local host_ip
local host_ip code_ip nc_url
host_ip="$(hostname -I 2>/dev/null | awk '{print $1}' || echo "127.0.0.1")"
code_ip="$(code_bridge_ip)"
[ -n "${code_ip}" ] || code_ip="${COLLABORA_IP}"
nc_url="${NEXTCLOUD_URL:-https://cloud.hannesahlin.se}"
cat <<EOF
Integrering klar — samma Node-RED på port ${NODERED_PORT}
UI: http://${host_ip}:${NODERED_PORT}
Noder: nc-collab-config, collabora-bridge, nc-office, ...
Noder: palett "nextcloud collabora" (6 st + config)
Nästa steg:
1. nc-collab-config → app-lösenord, collaboraUrl=https://172.17.0.2:9980 (verifyTls=false)
2. Importera flows/example-flows.json från ${PKG_SRC} (valfritt)
3. Test: capabilities → ncFileToPdf
Skapa config först (kugghjul → nc-collab-config):
Nextcloud: ${nc_url}
Collabora: https://${code_ip}:9980 (verifyTls=false)
Publik WOPI: ${nc_url}
Auth: användarnamn + app-lösenord
Ingen ny container skapad. odds-scraper orörd.
Testa: collabora-wopi (capabilities) → collabora-bridge (ncFileToPdf)
Exempelflöde: flows/example-flows.json
EOF
}