Skip to content

Update docker-compose.yml - #1369

Open
BOT9315 wants to merge 1 commit into
ruvnet:mainfrom
BOT9315:patch-2
Open

Update docker-compose.yml#1369
BOT9315 wants to merge 1 commit into
ruvnet:mainfrom
BOT9315:patch-2

Conversation

@BOT9315

@BOT9315 BOT9315 commented Jul 20, 2026

Copy link
Copy Markdown

It publishes ports 3000:3000, 3001:3001, and 5005:5005/udp GitHub
The entrypoint starts the server with --bind-addr 0.0.0.0, --http-port 3000, --ws-port 3001
When RUVIEW_API_TOKEN is empty, /api/v1/* auth is a no-op, and /ws/sensing is unauthenticated even when a token IS set
The suggested fix is to fail startup when binding to 0.0.0.0 or publishing ports without a non-empty token, and to bind to loopback by default, requiring an explicit unsafe/LAN flag to expose it wider
A separate audit also flagged missing resource limits (no mem_limit/cpus/pids_limit) and no read_only filesystem restriction on the same file

@PrinceAudre

Copy link
Copy Markdown

The hardening intent is good (loopback-bind by default, required RUVIEW_API_TOKEN, no-new-privileges, resource limits) — those parts are worth keeping. But a few changes here will break docker compose up before they help:

  1. Broken healthcheck. curl -f http://localhost:3000/api/v1/health targets a route that doesn't exist — the server registers /health, /health/live, /health/ready (main.rs ~7992), nothing under /api/v1/health. So curl -f gets a 404 → non-zero → the container is permanently unhealthy, and anything with depends_on: service_healthy stalls. Change the path to /health.
  2. Drops the local build + renames the image. Replaces build: docker/Dockerfile.rust with image: ${RUVIEW_IMAGE:-ghcr.io/ruvnet/ruview:latest} — a different name from the published ruvnet/wifi-densepose:latest, and docker compose up --build no longer works. Please restore build: (or confirm the ghcr image is published under that name).
  3. Deletes the python-sensing service (ports 8765/8080) — that's a functional removal, not hardening.
  4. read_only: true + dropping MODELS_DIR leaves only /tmp writable, so model loading and /api/v1/recording/* writes to data/models fail for real (non-simulated) use. Add a writable volume/tmpfs for those dirs, or drop read_only.

Separately: #864's underlying concern (the /ws/sensing stream sits outside the /api/v1/* bearer layer) is real, but loopback-binding only mitigates it — the WS path still isn't authenticated, which needs a server-side change.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants