From 3e31eed65937ac74c452e6b2d585ce995512a654 Mon Sep 17 00:00:00 2001 From: Lorenzo Argentieri Date: Sat, 23 May 2026 20:01:25 +0200 Subject: [PATCH] chore(casaos): generalize compose/docs for upstream (standard ports, repo icon URL) - use the project's standard host ports 3000/3001/5005 (no local conflict-avoidance remapping) - point icon/thumbnail/screenshot at ruvnet/RuView so they resolve once merged - drop deployment-specific notes (host IP, absolute paths) from comments/docs Co-Authored-By: Claude Opus 4.7 (1M context) --- docker-compose.casaos.yml | 56 +++++++++++++++------------------------ docs/DOCKER-CASAOS.md | 41 ++++++++++++++-------------- 2 files changed, 42 insertions(+), 55 deletions(-) diff --git a/docker-compose.casaos.yml b/docker-compose.casaos.yml index 15ce3e05..06842a2a 100644 --- a/docker-compose.casaos.yml +++ b/docker-compose.casaos.yml @@ -1,22 +1,21 @@ # RuView — WiFi DensePose sensing server, CasaOS-ready compose. # -# Uses the prebuilt image (amd64) from Docker Hub, so the CasaOS host does NOT -# need to compile the Rust workspace. (This server is amd64. For arm64 hosts the -# published tag has no arm64 layer yet — build locally with the dev compose: -# `docker compose -f docker/docker-compose.yml build`.) The server hosts the -# REST API + web UI on one port, a WebSocket stream, and a UDP listener for -# ESP32-S3 CSI nodes. -# -# Host ports were chosen to avoid clashes on this server (3000/3001 are already -# in use): the UI is published on 3030, the WebSocket on 3031, ESP32 CSI on 5005/udp. +# Uses the prebuilt image from Docker Hub, so the host does NOT need to compile +# the Rust workspace. (The published `:latest` tag is amd64; on arm64 hosts build +# locally first: `docker compose -f docker/docker-compose.yml build`.) The server +# hosts the REST API + web UI on one port, a WebSocket stream, and a UDP listener +# for ESP32-S3 CSI nodes. # # Import into CasaOS: App Store → Custom Install → paste this file, OR -# cd /DATA/AppData/ruview && docker compose -f docker-compose.casaos.yml up -d +# docker compose -f docker-compose.casaos.yml up -d # -# Open the dashboard at: http://192.168.1.177:3030/ui/index.html -# (the bare http://:3030/ root is just an API index — the visual +# Open the dashboard at: http://:3000/ui/index.html +# (the bare http://:3000/ root is just an API index — the visual # dashboards live under /ui/: index.html, observatory.html, pose-fusion.html) # +# If host ports 3000/3001 are already taken on your machine, change the +# `published:` values below (and `port_map` / `webui_port` to match the new UI port). +# # Data source (CSI_SOURCE): # auto probe UDP 5005 for an ESP32, else fall back to simulation (default) # esp32 require real CSI frames from an ESP32-S3 node on UDP 5005 @@ -30,15 +29,15 @@ services: container_name: ruview hostname: ruview labels: - icon: https://cdn.jsdelivr.net/gh/Aiacos/ruview@main/assets/ruview-icon.png + icon: https://cdn.jsdelivr.net/gh/ruvnet/RuView@main/assets/ruview-icon.png ports: - mode: ingress target: 3000 - published: "3030" + published: "3000" protocol: tcp - mode: ingress target: 3001 - published: "3031" + published: "3001" protocol: tcp - mode: ingress target: 5005 @@ -72,15 +71,14 @@ x-casaos: developer: ruvnet category: HomeAutomation hostname: "" - icon: https://cdn.jsdelivr.net/gh/Aiacos/ruview@main/assets/ruview-icon.png + icon: https://cdn.jsdelivr.net/gh/ruvnet/RuView@main/assets/ruview-icon.png index: /ui/index.html is_uncontrolled: false - port_map: "3030" - webui_port: 3030 + port_map: "3000" + webui_port: 3000 scheme: http tagline: en_us: See through walls with WiFi — contactless presence, breathing & pose sensing - custom: Vedere attraverso i muri con il WiFi — presenza, respiro e posa senza contatto description: en_us: | RuView (WiFi DensePose) turns ordinary WiFi into a contactless spatial @@ -90,21 +88,11 @@ x-casaos: wearables. This image runs the Rust sensing server with its web dashboard. With CSI_SOURCE=simulated it works with synthetic data and no hardware; point one or more ESP32-S3 CSI nodes at UDP 5005 for live sensing. - custom: | - RuView (WiFi DensePose) trasforma il normale WiFi in un sensore spaziale - senza contatto. Usando le Channel State Information (CSI) di nodi ESP32-S3 - a basso costo rileva le persone attraverso i muri, stima respiro e battito - cardiaco, traccia movimento e cadute ed esegue la stima della posa a 17 - punti — niente telecamere, niente dispositivi indossabili. Questa immagine - avvia il server Rust con la dashboard web. Con CSI_SOURCE=simulated funziona - con dati sintetici senza hardware; per il sensing dal vivo invia le CSI di - uno o più nodi ESP32-S3 sulla porta UDP 5005. title: en_us: RuView - custom: RuView - thumbnail: https://cdn.jsdelivr.net/gh/Aiacos/ruview@main/assets/ruview-icon.png + thumbnail: https://cdn.jsdelivr.net/gh/ruvnet/RuView@main/assets/ruview-icon.png screenshot_link: - - https://cdn.jsdelivr.net/gh/Aiacos/ruview@main/assets/ruview-icon.png + - https://cdn.jsdelivr.net/gh/ruvnet/RuView@main/assets/ruview-icon.png envs: - container: CSI_SOURCE description: @@ -121,13 +109,13 @@ x-casaos: ports: - container: "3000" description: - en_us: "Web UI + REST API (HTTP). Published on host port 3030." + en_us: "Web UI + REST API (HTTP)." - container: "3001" description: - en_us: "WebSocket sensing stream. Published on host port 3031." + en_us: "WebSocket sensing stream." - container: "5005" description: - en_us: "ESP32-S3 CSI ingest (UDP). Published on host port 5005." + en_us: "ESP32-S3 CSI ingest (UDP)." volumes: - container: /app/models description: diff --git a/docs/DOCKER-CASAOS.md b/docs/DOCKER-CASAOS.md index 2c5ecdb6..cd30eb2b 100644 --- a/docs/DOCKER-CASAOS.md +++ b/docs/DOCKER-CASAOS.md @@ -24,10 +24,10 @@ CSI_SOURCE=simulated docker compose -f docker-compose.casaos.yml up -d Then open the dashboard: ``` -http://:3030/ui/index.html +http://:3000/ui/index.html ``` -> The bare root `http://:3030/` is only an **API index** (a plain list +> The bare root `http://:3000/` is only an **API index** (a plain list > of endpoints) — the visual dashboards live under `/ui/`: > `index.html` (main), `observatory.html` (live feed), `pose-fusion.html` > (webcam + CSI), `viz.html` (3D). @@ -45,18 +45,19 @@ docker compose -f docker-compose.casaos.yml down ## 2. Ports -The compose file (`docker-compose.casaos.yml`) publishes **non-default host -ports** because 3000/3001 are commonly already in use: +The compose file (`docker-compose.casaos.yml`) publishes these host ports: -| Service | Container | Host (this compose) | Notes | -|------------------------|-----------|---------------------|-------| -| REST API + web UI | 3000/tcp | **3030** | Dashboard lives here (`/`, `/ui/...`) | -| WebSocket sensing feed | 3001/tcp | **3031** | `ws://host:3031/ws/sensing` | -| ESP32 CSI ingest | 5005/udp | **5005** | ESP32-S3 nodes stream CSI frames here | +| Service | Container | Host | Notes | +|------------------------|-----------|------|-------| +| REST API + web UI | 3000/tcp | **3000** | Dashboard lives here (`/`, `/ui/...`) | +| WebSocket sensing feed | 3001/tcp | **3001** | `ws://host:3001/ws/sensing` | +| ESP32 CSI ingest | 5005/udp | **5005** | ESP32-S3 nodes stream CSI frames here | If a host port clashes on your machine, edit the `published:` values in -`docker-compose.casaos.yml`. The dashboard's WebSocket URL is derived from the -page host, so keep the API and WS ports reachable from the same hostname. +`docker-compose.casaos.yml` (and update `port_map` / `webui_port` in the +`x-casaos` block to match the new UI port). The dashboard's WebSocket URL is +derived from the page host, so keep the API and WS ports reachable from the same +hostname. Verified endpoints (all return `200` once running): @@ -111,22 +112,20 @@ description, port map), so CasaOS shows it as a proper app tile. customized app"). 2. Switch to the **Import** / YAML view and paste the contents of `docker-compose.casaos.yml`. -3. Install. The tile opens `http://:3030/ui/index.html`. +3. Install. The tile opens `http://:3000/ui/index.html`. **Option B — CLI (CasaOS still detects the container)** ```bash -cd /DATA/AppData/ruview +cd ruview docker compose -f docker-compose.casaos.yml up -d ``` > **Icon:** the manifest points at -> `https://cdn.jsdelivr.net/gh/Aiacos/ruview@main/assets/ruview-icon.png`. -> jsDelivr serves it from the GitHub repo, so commit & push `assets/ruview-icon.png` -> to the `main` branch for the icon to resolve. Until then CasaOS shows a -> placeholder; everything else works. To use a fully local icon instead, replace -> both `icon:` URLs (in `labels:` and `x-casaos:`) with a file path served by your -> own host. +> `https://cdn.jsdelivr.net/gh/ruvnet/RuView@main/assets/ruview-icon.png` +> (jsDelivr serves `assets/ruview-icon.png` straight from the repo). To use a +> different or fully local icon, replace both `icon:` URLs (in `labels:` and +> `x-casaos:`) with another URL or a file path served by your own host. --- @@ -162,7 +161,7 @@ docker compose -f docker-compose.casaos.yml pull docker compose -f docker-compose.casaos.yml up -d # Status of the running server -curl -s http://:3030/api/v1/status +curl -s http://:3000/api/v1/status ``` **Troubleshooting** @@ -172,4 +171,4 @@ curl -s http://:3030/api/v1/status - *Multiple ESP32 nodes on Docker Desktop for Windows:* multi-source UDP collapses to one source IP at the WSL boundary. Use the host relay (see `docs/TROUBLESHOOTING.md §9`). Native Linux/CasaOS hosts are unaffected. -- *Port clash on 3030/3031:* edit `published:` in `docker-compose.casaos.yml`. +- *Port clash on 3000/3001:* edit `published:` in `docker-compose.casaos.yml`.