From fa4c1684a3218cf3adc8e73911799f3403b07ad3 Mon Sep 17 00:00:00 2001 From: Mitchell R Date: Tue, 19 May 2026 04:15:25 +0200 Subject: [PATCH] fix(deploy+kiosk): server healthcheck wget, nodered spider, cloud discovery MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - server Dockerfile installs wget — bookworm-slim doesn't include it by default, so the healthcheck CMD silently failed → Coolify marked the container unhealthy. - nodered healthcheck swapped to /nrdp/ (always 200 when runtime up) via wget --spider; previous /nrdp/auth/login returned non-2xx when adminAuth disabled. - start_period bumped to 90s for nodered's flow load on smaller hosts. - Kiosk discovery: cloud fallback now frame-eu.betterportal.net per the managed-fleet endpoint. --- deploy/docker/Dockerfile.server | 2 +- docker-compose.coolify.yml | 5 +++-- docker-compose.yml | 4 ++-- kiosk/src/server.rs | 6 +++++- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/deploy/docker/Dockerfile.server b/deploy/docker/Dockerfile.server index 9cd65db..bf4ad7a 100644 --- a/deploy/docker/Dockerfile.server +++ b/deploy/docker/Dockerfile.server @@ -24,7 +24,7 @@ FROM node:23-bookworm-slim # ffmpeg for camera snapshot capture (optional but needed for /admin/entities/:id/snapshot) RUN apt-get update && apt-get install -y --no-install-recommends \ - ca-certificates ffmpeg \ + ca-certificates ffmpeg wget \ && rm -rf /var/lib/apt/lists/* RUN useradd -m -d /var/lib/betterframe -s /bin/false betterframe diff --git a/docker-compose.coolify.yml b/docker-compose.coolify.yml index 9524973..152e2b9 100644 --- a/docker-compose.coolify.yml +++ b/docker-compose.coolify.yml @@ -68,11 +68,12 @@ services: expose: - "1880" healthcheck: - test: ["CMD-SHELL", "wget -qO- http://localhost:1880/nrdp/auth/login >/dev/null || exit 1"] + # Node-RED root admin path returns 200 once the runtime is up. + test: ["CMD-SHELL", "wget -q --spider http://localhost:1880/nrdp/ || exit 1"] interval: 30s timeout: 5s retries: 3 - start_period: 60s + start_period: 90s networks: - betterframe diff --git a/docker-compose.yml b/docker-compose.yml index 9c34b48..724e232 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -85,11 +85,11 @@ services: expose: - "1880" healthcheck: - test: ["CMD-SHELL", "wget -qO- http://localhost:1880/nrdp/auth/login >/dev/null || exit 1"] + test: ["CMD-SHELL", "wget -q --spider http://localhost:1880/nrdp/ || exit 1"] interval: 30s timeout: 5s retries: 3 - start_period: 60s + start_period: 90s networks: - betterframe diff --git a/kiosk/src/server.rs b/kiosk/src/server.rs index b888d93..e34eec7 100644 --- a/kiosk/src/server.rs +++ b/kiosk/src/server.rs @@ -73,10 +73,14 @@ pub fn discover_server(override_url: Option<&str>) -> String { } } + // Probe order: on-device → LAN mDNS → BetterCorp managed cloud. + // Single image works for aio (server beside kiosk on same Pi), on-prem + // (server on the LAN, discoverable by mDNS), and client-only (no local + // server — falls through to the cloud). let candidates = [ "http://localhost", "http://betterframe.local", - "https://frame.betterportal.cloud", + "https://frame-eu.betterportal.net", ]; for url in candidates {