From 35be32711f462427373e3349470abb12dcff787a Mon Sep 17 00:00:00 2001 From: Dorian Date: Sat, 7 Mar 2026 20:53:02 +0000 Subject: [PATCH] fix: quote API key header in nginx-demo.conf to prevent empty-value crash - Wrap ${ANTHROPIC_API_KEY} in quotes so envsubst produces valid nginx directive even when the variable is empty - Skip Docker container polling when runtime is unavailable (stops log spam in demo/Portainer deployments) Co-Authored-By: Claude Opus 4.6 --- neode-ui/docker/nginx-demo.conf | 2 +- neode-ui/mock-backend.js | 29 ++++++++++++++++------------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/neode-ui/docker/nginx-demo.conf b/neode-ui/docker/nginx-demo.conf index c70a6624..8f247d95 100644 --- a/neode-ui/docker/nginx-demo.conf +++ b/neode-ui/docker/nginx-demo.conf @@ -77,7 +77,7 @@ http { proxy_pass https://api.anthropic.com; proxy_ssl_server_name on; proxy_set_header Host api.anthropic.com; - proxy_set_header x-api-key ${ANTHROPIC_API_KEY}; + proxy_set_header x-api-key "${ANTHROPIC_API_KEY}"; proxy_set_header anthropic-version "2023-06-01"; proxy_set_header Content-Type "application/json"; diff --git a/neode-ui/mock-backend.js b/neode-ui/mock-backend.js index 726818a6..2ed54951 100755 --- a/neode-ui/mock-backend.js +++ b/neode-ui/mock-backend.js @@ -1006,19 +1006,22 @@ server.listen(PORT, '0.0.0.0', async () => { console.log('Mock backend is running. Press Ctrl+C to stop.\n') // Periodically update package data from Docker (merge with static dev apps) - setInterval(async () => { - const dockerApps = await getDockerContainers() - mockData['package-data'] = mergePackageData(dockerApps) - - // Broadcast update to connected clients - broadcastUpdate([ - { - op: 'replace', - path: '/package-data', - value: mockData['package-data'] - } - ]) - }, 5000) // Update every 5 seconds + // Only poll if container runtime is available (avoids log spam in demo/Docker deployments) + if (runtime.available) { + setInterval(async () => { + const dockerApps = await getDockerContainers() + mockData['package-data'] = mergePackageData(dockerApps) + + // Broadcast update to connected clients + broadcastUpdate([ + { + op: 'replace', + path: '/package-data', + value: mockData['package-data'] + } + ]) + }, 5000) // Update every 5 seconds + } }) process.on('SIGINT', () => {