Skip to content

Latest commit

 

History

History
120 lines (79 loc) · 3.75 KB

File metadata and controls

120 lines (79 loc) · 3.75 KB

icey-server Demo

This is the fastest end-to-end path through the icey media stack:

  • C++ source-to-browser server
  • bundled web UI
  • Symple signalling over WebSocket
  • embedded TURN relay
  • real browser playback with a shipped demo source

This is the one place to point people for the demo.

One command. One URL. One click.

Express Path

The fastest way to try the demo is the published image.

This path targets Linux with host networking:

docker run --rm --network host 0state/icey-server:latest

Then open:

http://localhost:4500

Click Watch on the icey peer. The image ships with data/test.mp4 as the default stream source, so the browser should start receiving video immediately.

Source Path

If you want the repo-backed path for local edits or local artifacts, use Compose from this directory:

docker compose up --build

Then open:

http://localhost:4500

What This Runs

The published image and the local Compose build package:

  • the icey-server application
  • the production web UI build from icey-cli/web/
  • the sample media file at data/test.mp4

The published image is available as 0state/icey-server:latest.

The local Compose path reuses the existing local build artifacts instead of recompiling inside Docker, so rebuilds stay cheap.

If your current binary lives in a different build tree, point Docker at it directly:

ICEY_SERVER_BINARY=icey-cli/build-dev/src/server/icey-server docker compose build
docker compose up

The server starts in stream mode by default and listens on:

  • HTTP / WebSocket: 4500
  • TURN: 3478 TCP and UDP

Why Host Networking

This demo is meant to prove real WebRTC and TURN behavior, not just serve HTML.

Docker bridge networking hides the host-facing ICE and relay addresses the browser needs. network_mode: host keeps the advertised addresses honest on Linux, which is the path that consistently proves the full stack.

Runtime Overrides

You can switch the app mode or input source with environment variables.

Published image examples:

docker run --rm --network host -e ICEY_MODE=record -v "$(pwd)/recordings:/app/recordings" 0state/icey-server:latest
docker run --rm --network host -e ICEY_MODE=relay 0state/icey-server:latest
docker run --rm --network host -e ICEY_SOURCE=rtsp://camera.local/stream1 -e ICEY_LOOP=0 0state/icey-server:latest

Compose examples:

ICEY_MODE=record docker compose up --build
ICEY_MODE=relay docker compose up --build
ICEY_SOURCE=/app/media/test.mp4 docker compose up --build

For the Compose path, record mode writes files into:

icey-cli/docker/recordings/

For the published image path, record mode writes wherever you bind-mount /app/recordings.

Notes

  • This is the canonical icey-server demo for the self-hosted media stack.
  • The express path is docker run --rm --network host 0state/icey-server:latest.
  • The source path is docker compose up --build from this directory.
  • For direct local use, open http://localhost:4500.
  • The local Compose build expects the existing icey-cli/build-dev/src/server/icey-server binary and icey-cli/web/dist/ output to be present.
  • The default local Compose context assumes sibling icey-cli/ and icey/ checkouts so the demo media file can be copied from icey/data/test.mp4.
  • If port 4500 or 3478 is already busy on the host, free it first or override ICEY_PORT / ICEY_TURN_PORT.
  • For remote NAT testing, set ICEY_TURN_EXTERNAL_IP so embedded TURN advertises the right public address.
  • Docker Desktop host networking is not the primary target here. For non-Linux hosts, use the native app README first.

Related

  • App README
  • The icey core repo docs/recipes/media-server-stack.md source-to-browser recipe