123 lines
4.4 KiB
YAML
123 lines
4.4 KiB
YAML
# RuView — WiFi DensePose sensing server, CasaOS-ready compose.
|
|
#
|
|
# 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
|
|
# docker compose -f docker-compose.casaos.yml up -d
|
|
#
|
|
# 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
|
|
# simulated synthetic CSI, no hardware needed (good for first evaluation)
|
|
|
|
name: ruview
|
|
|
|
services:
|
|
ruview:
|
|
image: ruvnet/wifi-densepose:latest
|
|
container_name: ruview
|
|
hostname: ruview
|
|
labels:
|
|
icon: https://cdn.jsdelivr.net/gh/ruvnet/RuView@main/assets/ruview-icon.png
|
|
ports:
|
|
- mode: ingress
|
|
target: 3000
|
|
published: "3000"
|
|
protocol: tcp
|
|
- mode: ingress
|
|
target: 3001
|
|
published: "3001"
|
|
protocol: tcp
|
|
- mode: ingress
|
|
target: 5005
|
|
published: "5005"
|
|
protocol: udp
|
|
environment:
|
|
- RUST_LOG=info
|
|
# auto | esp32 | wifi | simulated (see header)
|
|
- CSI_SOURCE=${CSI_SOURCE:-auto}
|
|
- MODELS_DIR=/app/models
|
|
# Optional bearer-token auth on /api/v1/*. Leave empty for LAN-only use;
|
|
# set a token to require `Authorization: Bearer <token>`:
|
|
# RUVIEW_API_TOKEN=$(openssl rand -hex 32)
|
|
- RUVIEW_API_TOKEN=${RUVIEW_API_TOKEN:-}
|
|
volumes:
|
|
# Drop .rvf model files here to make them visible to the API.
|
|
- ./data/models:/app/models
|
|
restart: unless-stopped
|
|
networks:
|
|
default: null
|
|
|
|
networks:
|
|
default:
|
|
name: ruview_default
|
|
|
|
x-casaos:
|
|
architectures:
|
|
- amd64
|
|
main: ruview
|
|
author: self
|
|
developer: ruvnet
|
|
category: HomeAutomation
|
|
hostname: ""
|
|
icon: https://cdn.jsdelivr.net/gh/ruvnet/RuView@main/assets/ruview-icon.png
|
|
index: /ui/index.html
|
|
is_uncontrolled: false
|
|
port_map: "3000"
|
|
webui_port: 3000
|
|
scheme: http
|
|
tagline:
|
|
en_us: See through walls with WiFi — contactless presence, breathing & pose sensing
|
|
description:
|
|
en_us: |
|
|
RuView (WiFi DensePose) turns ordinary WiFi into a contactless spatial
|
|
sensor. Using Channel State Information (CSI) from low-cost ESP32-S3 nodes,
|
|
it detects people through walls, estimates breathing and heart rate, tracks
|
|
motion and falls, and runs 17-keypoint pose estimation — no cameras, no
|
|
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.
|
|
title:
|
|
en_us: RuView
|
|
thumbnail: https://cdn.jsdelivr.net/gh/ruvnet/RuView@main/assets/ruview-icon.png
|
|
screenshot_link:
|
|
- https://cdn.jsdelivr.net/gh/ruvnet/RuView@main/assets/ruview-icon.png
|
|
envs:
|
|
- container: CSI_SOURCE
|
|
description:
|
|
en_us: "Data source: auto (default) | esp32 | simulated. 'simulated' needs no hardware."
|
|
- container: RUVIEW_API_TOKEN
|
|
description:
|
|
en_us: "(Optional) bearer token to protect /api/v1/*. Leave empty for LAN-only use."
|
|
- container: MODELS_DIR
|
|
description:
|
|
en_us: "In-container path scanned for .rvf model files (default /app/models)."
|
|
- container: RUST_LOG
|
|
description:
|
|
en_us: "Log level: info (default), debug, warn, error."
|
|
ports:
|
|
- container: "3000"
|
|
description:
|
|
en_us: "Web UI + REST API (HTTP)."
|
|
- container: "3001"
|
|
description:
|
|
en_us: "WebSocket sensing stream."
|
|
- container: "5005"
|
|
description:
|
|
en_us: "ESP32-S3 CSI ingest (UDP)."
|
|
volumes:
|
|
- container: /app/models
|
|
description:
|
|
en_us: "Holds .rvf model files exposed via /api/v1/models."
|