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:
dev
2026-08-22 21:55:28 +02:00
parent 6e02c2d31e
commit 5ca7b4d4e0
9 changed files with 58 additions and 33 deletions
+37 -14
View File
@@ -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