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) <noreply@anthropic.com>
This commit is contained in:
Lorenzo Argentieri 2026-05-23 20:01:25 +02:00
parent 8cbade3ce3
commit 3e31eed659
2 changed files with 42 additions and 55 deletions

View File

@ -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://<host>:3030/ root is just an API index — the visual
# Open the dashboard at: http://<host-ip>:3000/ui/index.html
# (the bare http://<host-ip>: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:

View File

@ -24,10 +24,10 @@ CSI_SOURCE=simulated docker compose -f docker-compose.casaos.yml up -d
Then open the dashboard:
```
http://<host-ip>:3030/ui/index.html
http://<host-ip>:3000/ui/index.html
```
> The bare root `http://<host-ip>:3030/` is only an **API index** (a plain list
> The bare root `http://<host-ip>: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://<host-ip>:3030/ui/index.html`.
3. Install. The tile opens `http://<host-ip>: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://<host-ip>:3030/api/v1/status
curl -s http://<host-ip>:3000/api/v1/status
```
**Troubleshooting**
@ -172,4 +171,4 @@ curl -s http://<host-ip>: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`.