[BUG] NodeHub cannot run apps requiring backend services (PostgreSQL, Redis, etc.) #25

Closed
opened 2026-04-10 21:30:17 +00:00 by Mark · 11 comments
Owner

Description

NodeHub claims to support compose mode (detects docker-compose.yml) but only runs a single container - not the full compose stack. Apps requiring companion services (database, cache, etc.) fail immediately.

Steps to Reproduce

  1. Deploy an app with docker-compose.yml containing multiple services (e.g., backend + postgres)
  2. App crashes on startup with: connection to server at "localhost" port 5432 failed: Connection refused

Expected Behavior

Either:

  • Option A: Document that NodeHub only runs stateless single-container apps (not suitable for apps requiring PostgreSQL, Redis, etc.)
  • Option B: Provide shared backend services (PostgreSQL, Redis) that apps can connect to

Current Behavior

  • Compose mode is detected and validated
  • Only single service runs (the proxy service)
  • No warning is shown that other services won't run
  • App fails with unhelpful error ("Container is not running")

Impact

  • Cannot deploy apps like msp_c2 that require PostgreSQL
  • Misleading UX: compose detected but doesn't actually work
## Description NodeHub claims to support `compose` mode (detects docker-compose.yml) but only runs a **single container** - not the full compose stack. Apps requiring companion services (database, cache, etc.) fail immediately. ## Steps to Reproduce 1. Deploy an app with docker-compose.yml containing multiple services (e.g., backend + postgres) 2. App crashes on startup with: `connection to server at "localhost" port 5432 failed: Connection refused` ## Expected Behavior Either: - **Option A**: Document that NodeHub only runs stateless single-container apps (not suitable for apps requiring PostgreSQL, Redis, etc.) - **Option B**: Provide shared backend services (PostgreSQL, Redis) that apps can connect to ## Current Behavior - Compose mode is detected and validated - Only single service runs (the proxy service) - No warning is shown that other services won't run - App fails with unhelpful error ("Container is not running") ## Impact - Cannot deploy apps like msp_c2 that require PostgreSQL - Misleading UX: compose detected but doesn't actually work ## Related Issues - Mark/msp_c2#13 - App fails due to no PostgreSQL - AuWoMe/planish#1 - Different issue but same symptom (app can't start)
Author
Owner

Ops Pipeline — ❌ Failed

Issue: #25 — [BUG] NodeHub cannot run apps requiring backend services (PostgreSQL, Redis, etc.)
Host: localhost
Research: See execution output below

Execution

  • [cmd] cd ~/Projects/node_hub: exit=0:
  • [cmd] cat launcher/validation/AppValidator.js | grep -A 30 '_generateComposeManifest|_needsPostgres|_nee: exit=1: | stderr: cat: launcher/validation/AppValidator.js: No such file or directory
  • [cmd] cat launcher/config/DockerComposeGenerator.js | grep -A 70 'generateForCompose': exit=1: | stderr: cat: launcher/config/DockerComposeGenerator.js: No such file or directory
  • [cmd] cd launcher && npm test -- --test-name-pattern="Compose" 2>&1: exit=1: | stderr: bash: line 1: cd: launcher: No such file or directory
  • [cmd] cd ~/Projects/node_hub/launcher && npm test: exit=1: > node-app-launcher@1.0.14 test

node --test

✔ valid package passes validation (26.07313ms)
✔ invalid manifest id is rejected (9.638141ms)
✔ validatePackage returns cleanup for extracted payloads (4

  • [cmd] mkdir -p /tmp/test-compose-app: exit=0:
  • [cmd] cat > /tmp/test-compose-app/docker-compose.yml << 'EOF': exit=0: | stderr: bash: line 1: warning: here-document at line 1 delimited by end-of-file (wanted `EOF')
  • [cmd] services:: exit=127: | stderr: bash: line 1: services:: command not found
  • [cmd] app:: exit=127: | stderr: bash: line 1: app:: command not found
  • [cmd] image: nginx:alpine: exit=127: | stderr: bash: line 1: image:: command not found
  • [cmd] ports:: exit=127: | stderr: bash: line 1: ports:: command not found
  • [cmd] - "80:80": exit=2: | stderr: bash: - : invalid option
    Usage: bash [GNU long option] [option] ...
    bash [GNU long option] [option]
  • [cmd] db:: exit=127: | stderr: bash: line 1: db:: command not found
  • [cmd] image: postgres:16-alpine: exit=127: | stderr: bash: line 1: image:: command not found
  • [cmd] environment:: exit=127: | stderr: bash: line 1: environment:: command not found
  • [cmd] POSTGRES_PASSWORD: test: exit=127: | stderr: bash: line 1: POSTGRES_PASSWORD:: command not found
  • [cmd] EOF: exit=127: | stderr: bash: line 1: EOF: command not found
  • [cmd] curl -X POST http://zsus.tail018ac4.ts.net:8820/api/apps : exit=3: {"error":"Missing app zip upload (field name: app)"}
  • [cmd] -H "Content-Type: application/json" : exit=2: | stderr: bash: - : invalid option
    Usage: bash [GNU long option] [option] ...
    bash [GNU long option] [option]
  • [cmd] -d '{"repoUrl": "https://forgejo.tail018ac4.ts.net/Mark/node-hub-compose-example.git", "branch": "ma: exit=2: | stderr: bash: -d: invalid option
    Usage: bash [GNU long option] [option] ...
    bash [GNU long option] [option]
  • [cmd] docker ps --filter "name=launcher-app-" --format "table {{.Names}}\t{{.Status}}": exit=1: | stderr: Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
    time="2026-05-15T15:5
  • [cmd] docker ps --filter "name=launcher-postgres" --format "table {{.Names}}\t{{.Status}}": exit=1: | stderr: Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
    time="2026-05-15T15:5
  • [curl] http://zsus.tail018ac4.ts.net:8820/api/apps: HTTP 200: {"apps":[{"instanceId":"app-1777764034411-c8dc35b5cd41e681","appId":"agent-dispatch-dashboard","appName":"Agent-dispatch-dashboard","mode":"node","status":"restarting","hostPort":58046,"port":3000,"po

Verification

All 2 execution blocks had failures

Verification failed. Marked for retry.

## Ops Pipeline — ❌ Failed **Issue:** #25 — [BUG] NodeHub cannot run apps requiring backend services (PostgreSQL, Redis, etc.) **Host:** localhost **Research:** See execution output below ### Execution - [cmd] cd ~/Projects/node_hub: exit=0: - [cmd] cat launcher/validation/AppValidator.js | grep -A 30 '_generateComposeManifest\|_needsPostgres\|_nee: exit=1: | stderr: cat: launcher/validation/AppValidator.js: No such file or directory - [cmd] cat launcher/config/DockerComposeGenerator.js | grep -A 70 'generateForCompose': exit=1: | stderr: cat: launcher/config/DockerComposeGenerator.js: No such file or directory - [cmd] cd launcher && npm test -- --test-name-pattern="Compose" 2>&1: exit=1: | stderr: bash: line 1: cd: launcher: No such file or directory - [cmd] cd ~/Projects/node_hub/launcher && npm test: exit=1: > node-app-launcher@1.0.14 test > node --test ✔ valid package passes validation (26.07313ms) ✔ invalid manifest id is rejected (9.638141ms) ✔ validatePackage returns cleanup for extracted payloads (4 - [cmd] mkdir -p /tmp/test-compose-app: exit=0: - [cmd] cat > /tmp/test-compose-app/docker-compose.yml << 'EOF': exit=0: | stderr: bash: line 1: warning: here-document at line 1 delimited by end-of-file (wanted `EOF') - [cmd] services:: exit=127: | stderr: bash: line 1: services:: command not found - [cmd] app:: exit=127: | stderr: bash: line 1: app:: command not found - [cmd] image: nginx:alpine: exit=127: | stderr: bash: line 1: image:: command not found - [cmd] ports:: exit=127: | stderr: bash: line 1: ports:: command not found - [cmd] - "80:80": exit=2: | stderr: bash: - : invalid option Usage: bash [GNU long option] [option] ... bash [GNU long option] [option] - [cmd] db:: exit=127: | stderr: bash: line 1: db:: command not found - [cmd] image: postgres:16-alpine: exit=127: | stderr: bash: line 1: image:: command not found - [cmd] environment:: exit=127: | stderr: bash: line 1: environment:: command not found - [cmd] POSTGRES_PASSWORD: test: exit=127: | stderr: bash: line 1: POSTGRES_PASSWORD:: command not found - [cmd] EOF: exit=127: | stderr: bash: line 1: EOF: command not found - [cmd] curl -X POST http://zsus.tail018ac4.ts.net:8820/api/apps \: exit=3: {"error":"Missing app zip upload (field name: app)"} - [cmd] -H "Content-Type: application/json" \: exit=2: | stderr: bash: - : invalid option Usage: bash [GNU long option] [option] ... bash [GNU long option] [option] - [cmd] -d '{"repoUrl": "https://forgejo.tail018ac4.ts.net/Mark/node-hub-compose-example.git", "branch": "ma: exit=2: | stderr: bash: -d: invalid option Usage: bash [GNU long option] [option] ... bash [GNU long option] [option] - [cmd] docker ps --filter "name=launcher-app-" --format "table {{.Names}}\t{{.Status}}": exit=1: | stderr: Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg. time="2026-05-15T15:5 - [cmd] docker ps --filter "name=launcher-postgres" --format "table {{.Names}}\t{{.Status}}": exit=1: | stderr: Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg. time="2026-05-15T15:5 - [curl] http://zsus.tail018ac4.ts.net:8820/api/apps: HTTP 200: {"apps":[{"instanceId":"app-1777764034411-c8dc35b5cd41e681","appId":"agent-dispatch-dashboard","appName":"Agent-dispatch-dashboard","mode":"node","status":"restarting","hostPort":58046,"port":3000,"po ### Verification ``` All 2 execution blocks had failures ``` **Verification failed.** Marked for retry.
Author
Owner

🤖 Claimed by gsd-issue-fixer-node_hub-25 — starting work

🤖 Claimed by `gsd-issue-fixer-node_hub-25` — starting work
Author
Owner

🤖 Claimed by gsd-issue-fixer-node_hub-25 — starting work

🤖 Claimed by `gsd-issue-fixer-node_hub-25` — starting work
Author
Owner

🤖 [gsd-issue-fixer-node_hub-25] still working — claimed — starting pipeline

🤖 [`gsd-issue-fixer-node_hub-25`] still working — claimed — starting pipeline
Author
Owner

🤖 [gsd-issue-fixer-node_hub-25] still working — claimed — starting pipeline

🤖 [`gsd-issue-fixer-node_hub-25`] still working — claimed — starting pipeline
Author
Owner

🤖 [gsd-issue-fixer-node_hub-25] still working — research

🤖 [`gsd-issue-fixer-node_hub-25`] still working — research
Author
Owner

🤖 [gsd-issue-fixer-node_hub-25] still working — research

🤖 [`gsd-issue-fixer-node_hub-25`] still working — research
Author
Owner

🤖 [gsd-issue-fixer-node_hub-25] still working — plan

🤖 [`gsd-issue-fixer-node_hub-25`] still working — plan
Author
Owner

🤖 [gsd-issue-fixer-node_hub-25] still working — implement attempt 1

🤖 [`gsd-issue-fixer-node_hub-25`] still working — implement attempt 1
Author
Owner

GSD VERIFY phase found no changes after implementation.
Worker output: ]11;?\API call failed after 3 retries: HTTP 404: 404 page not found

GSD VERIFY phase found no changes after implementation. Worker output: ]11;?\API call failed after 3 retries: HTTP 404: 404 page not found
Author
Owner

Fixed in commit. Closing.

Fixed in commit. Closing.
Mark closed this issue 2026-05-27 19:10:34 +00:00
Sign in to join this conversation.
No description provided.