Headless Chromium server that tiles/JPEGs pages and streams frames to ESP32 via WebSocket.
10K+
Headless browser that renders target web pages (e.g., Home Assistant dashboards) and streams them as image tiles over WebSocket. Designed for low-power clients (ESP32 displays, etc.).
latest – newest stable release
beta – newest pre-release (rolling)
Semantic: 1.4.0, 1.4, 1
Create docker-compose.yml:
services:
rwvserver:
build: ./RemoteWebViewServer
image: strangev/remote-webview-server:latest # use :beta for pre-release
container_name: remote-webview-server
restart: unless-stopped
environment:
SCREEN_H: 480
SCREEN_W: 480
TILE_SIZE: 32
FULL_FRAME_TILE_COUNT: 4
FULL_FRAME_AREA_THRESHOLD: 0.5
FULL_FRAME_EVERY: 50
EVERY_NTH_FRAME: 1
MIN_FRAME_INTERVAL_MS: 80
JPEG_QUALITY: 85
MAX_BYTES_PER_MESSAGE: 14336
WS_PORT: 8081
DEBUG_PORT: 9221 # internal debug port
HEALTH_PORT: 18080
USER_DATA_DIR: /pw-data
ports:
- "8081:8081"
- "9222:9222"
expose:
- "18080" # healthcheck
- "9221" # debug port for socat
volumes:
- /opt/volumes/esp32-rdp/pw-data:/pw-data
devices:
- "/dev/dri:/dev/dri"
group_add:
- "993"
- "44"
shm_size: 1gb
healthcheck:
test: ["CMD-SHELL", "curl -fsS http://localhost:18080 || exit 1"]
interval: 10s
timeout: 3s
retries: 5
start_period: 10s
debug-proxy:
image: alpine/socat
container_name: remote-webview-server-debug
restart: unless-stopped
network_mode: "service:rwvserver"
depends_on:
rwvserver:
condition: service_healthy
command:
- "-d"
- "-d"
- "TCP-LISTEN:9222,fork,reuseaddr,keepalive" # external debug port
- "TCP:127.0.0.1:9221"
Then:
docker compose up -d
Switch to the newest beta at any time:
image: strangev/remote-webview-server:beta
Update to the latest tag:
docker compose pull && docker compose up -d
Content type
Image
Digest
sha256:755c25150…
Size
910.8 MB
Last updated
17 days ago
docker pull strangev/remote-webview-server