Defaults matchar servern: intern CODE över HTTPS (ssl.enable=true)
- collaboraUrl -> https://code:9980 överallt (config-node, example-flows, .env.example, docker-compose.yml, install.sh, resolve_collabora_url); http://code:9980 failar när CODE kör SSL - verifyTls=false är nu ett krav (self-signed internt) i hjälptext/dok - integrate: connect_nodered_bridge efter container-up (docker network connect bridge, ignorerar already connected) + verifiering via docker exec curl -sk https://code:9980/hosting/capabilities (HTTP 200) - Publik URL förblir https://docs.domain.name i docs
This commit is contained in:
@@ -409,16 +409,17 @@ recreate_nodered_service() {
|
||||
log "ExtraHosts (${extra}): $(docker inspect -f '{{json .HostConfig.ExtraHosts}}' "${NODERED_CONTAINER}")"
|
||||
}
|
||||
|
||||
# COLLABORA_URL: intern CODE är HTTP — http://code:9980 primärt,
|
||||
# fallback http://<CODE-IP>:9980.
|
||||
# Aldrig http://127.0.0.1:9980 eller http://host.docker.internal:9980.
|
||||
# COLLABORA_URL: intern CODE kör HTTPS (ssl.enable=true, self-signed) —
|
||||
# https://code:9980 primärt, fallback https://<CODE-IP>:9980.
|
||||
# http://code:9980 failar när CODE har SSL påslaget.
|
||||
# Aldrig 127.0.0.1/host.docker.internal — CODE kör inte på Node-RED-värden.
|
||||
resolve_collabora_url() {
|
||||
local url="${COLLABORA_URL:-http://code:9980}"
|
||||
local url="${COLLABORA_URL:-https://code:9980}"
|
||||
case "${url}" in
|
||||
http://127.0.0.1:*|http://localhost:*|http://host.docker.internal:*|\
|
||||
https://127.0.0.1:*|https://localhost:*|https://host.docker.internal:*)
|
||||
warn "Otillåten COLLABORA_URL '${url}' — tvingar http://code:9980"
|
||||
url="http://code:9980"
|
||||
http://*|http://127.0.0.1:*|http://localhost:*|http://host.docker.internal:*|\
|
||||
https://127.0.0.1:*|https://localhost:*|https://host.docker.internal:*|"")
|
||||
warn "Otillåten COLLABORA_URL '${url}' — tvingar https://code:9980"
|
||||
url="https://code:9980"
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -428,8 +429,8 @@ resolve_collabora_url() {
|
||||
ip="$(docker inspect -f '{{range $k,$v := .NetworkSettings.Networks}}{{$v.IPAddress}} {{end}}' "${CODE_CONTAINER}" 2>/dev/null | awk '{print $1}')"
|
||||
[ -n "${ip}" ] || ip="${COLLABORA_IP:-}"
|
||||
if [ -n "${ip}" ]; then
|
||||
warn "'code' inte resolvbart från ${NODERED_CONTAINER} — fallback http://${ip}:9980"
|
||||
url="http://${ip}:9980"
|
||||
warn "'code' inte resolvbart från ${NODERED_CONTAINER} — fallback https://${ip}:9980"
|
||||
url="https://${ip}:9980"
|
||||
else
|
||||
die "Varken 'code'-DNS eller CODE-IP tillgänglig — kan inte sätta COLLABORA_URL"
|
||||
fi
|
||||
@@ -439,6 +440,22 @@ resolve_collabora_url() {
|
||||
log "COLLABORA_URL=${COLLABORA_URL}"
|
||||
}
|
||||
|
||||
# Node-RED-containern på default bridge — krävs för att nå https://code:9980.
|
||||
# Körs EFTER container-up: recreate nollställer manuella network connect.
|
||||
# Ignorerar "already connected".
|
||||
connect_nodered_bridge() {
|
||||
log "Connecting ${NODERED_CONTAINER} → bridge"
|
||||
local out rc=0
|
||||
out="$(docker network connect bridge "${NODERED_CONTAINER}" 2>&1)" || rc=$?
|
||||
if [ "${rc}" -eq 0 ]; then
|
||||
log "Connected: ${NODERED_CONTAINER} on bridge"
|
||||
elif printf '%s' "${out}" | grep -qi 'already exists\|already connected'; then
|
||||
log "Already connected: ${NODERED_CONTAINER} on bridge"
|
||||
else
|
||||
warn "docker network connect bridge ${NODERED_CONTAINER} misslyckades: ${out}"
|
||||
fi
|
||||
}
|
||||
|
||||
rebuild_nodered() {
|
||||
log "Rebuilding ${NODERED_CONTAINER} (same instance, port ${NODERED_PORT})..."
|
||||
fix_nodered_build_permissions
|
||||
@@ -477,11 +494,16 @@ verify_code_from_nodered() {
|
||||
fi
|
||||
done
|
||||
|
||||
if docker exec "${NODERED_CONTAINER}" curl -sfk "${COLLABORA_URL}/hosting/capabilities" >/dev/null 2>&1; then
|
||||
log "OK: CODE nås från Node-RED: ${COLLABORA_URL}/hosting/capabilities"
|
||||
# Verifiera enligt serverns verklighet: CODE kör HTTPS internt,
|
||||
# https://code:9980 ska ge HTTP 200 från Node-RED på bridge.
|
||||
local code_status
|
||||
code_status="$(docker exec "${NODERED_CONTAINER}" \
|
||||
curl -sk -o /dev/null -w '%{http_code}' https://code:9980/hosting/capabilities 2>/dev/null || echo 000)"
|
||||
if [ "${code_status}" = "200" ]; then
|
||||
log "OK: CODE nås från Node-RED: https://code:9980/hosting/capabilities (HTTP 200)"
|
||||
else
|
||||
warn "CODE inte nåbar: ${COLLABORA_URL}/hosting/capabilities"
|
||||
warn "Kör: docker network connect \$(docker inspect -f '{{range \$k,\$_ := .NetworkSettings.Networks}}{{printf \"%s\\n\" \$k}}{{end}}' ${NODERED_CONTAINER} | head -n1) ${CODE_CONTAINER}"
|
||||
warn "CODE inte nåbar: https://code:9980/hosting/capabilities (HTTP ${code_status})"
|
||||
warn "Kör: docker network connect bridge ${NODERED_CONTAINER} — http://code:9980 failar, CODE kräver HTTPS"
|
||||
fail=1
|
||||
fi
|
||||
|
||||
@@ -507,6 +529,7 @@ main() {
|
||||
patch_dockerfile
|
||||
patch_entrypoint
|
||||
rebuild_nodered
|
||||
connect_nodered_bridge
|
||||
connect_code_network
|
||||
resolve_collabora_url
|
||||
wait_nodered
|
||||
|
||||
Reference in New Issue
Block a user