Nestri streams games from a Linux container directly to your browser using WebRTC. This guide walks you through the fastest path to a working setup: deploy a relay node, start a Steam runner container, and connect through the Nestri web app.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/nestrilabs/nestri/llms.txt
Use this file to discover all available pages before exploring further.
Nestri is experimental software under active development. Self-hosting requires a Linux machine with a compatible GPU (NVIDIA, AMD, or Intel) and Docker installed.
Prerequisites
Before you start, make sure you have:- A Linux machine with a GPU (NVIDIA, AMD, or Intel)
- Docker installed and running
- Ports
8088/udpopen on your firewall - A modern browser (Chrome or Firefox recommended)
Deploy the relay
The relay handles WebRTC signaling and peer-to-peer hole-punching between your runner container and your browser. Start it with Docker:The relay listens on port
8088 by default (ENDPOINT_PORT=8088). It supports TCP, QUIC, and WebTransport simultaneously — no separate port configuration needed for each protocol.Key relay environment variables:| Variable | Default | Description |
|---|---|---|
ENDPOINT_PORT | 8088 | Port for all relay protocols |
VERBOSE | false | Enable verbose logging |
DEBUG | false | Enable debug logging (implies verbose) |
STUN_SERVER | stun.l.google.com:19302 | WebRTC STUN server |
WEBRTC_UDP_MUX | 8088 | UDP mux port for WebRTC |
WEBRTC_NAT_IPS | (empty) | Public IP(s) for NAT traversal |
AUTO_ADD_LOCAL_IP | true | Auto-detect and add local IP |
REGEN_IDENTITY | false | Regenerate the relay’s libp2p identity |
PERSIST_DIR | ./persist-data | Directory for persistent identity data |
Launch a game runner container
Nestri provides pre-built runner images for different launchers. The Steam runner installs Steam and sets Replace
NESTRI_LAUNCH_CMD="steam -tenfoot -cef-force-gpu" so Steam opens directly in Big Picture mode.- Steam
- Heroic (Epic/GOG)
YOUR_RELAY_HOST with the IP or hostname of the machine running your relay. NESTRI_ROOM uniquely identifies this streaming session — use the same value when connecting from your browser.Key runner environment variables:| Variable | Default | Description |
|---|---|---|
RELAY_URL | (required) | WebSocket URL of your relay |
NESTRI_ROOM | (required) | Room identifier for this session |
RESOLUTION | 1280x720 | Stream resolution (WxH) |
FRAMERATE | 60 | Stream framerate (5–240) |
VIDEO_CODEC | h264 | Video codec (h264, h265, av1) |
VIDEO_BITRATE | 6000 | Target bitrate in kbps |
VIDEO_BITRATE_MAX | 8000 | Maximum bitrate in kbps |
VIDEO_ENCODER_TYPE | hardware | hardware or software |
AUDIO_CODEC | opus | Audio codec |
AUDIO_BITRATE | 128 | Audio bitrate in kbps |
GPU_VENDOR | (auto) | Select GPU by vendor name |
GPU_INDEX | (auto) | Select GPU by index |
Connect via the Nestri web app
With your relay and runner container running, open nestri.io in your browser.
- Sign in to your Nestri account.
- Navigate to your session using the room name you set in
NESTRI_ROOM. - The browser connects to your relay, which brokers the WebRTC peer connection to the runner.
- Your game appears in the browser — mouse, keyboard, and gamepad input flows back to the container in real time.
Next steps
Self-hosting overview
Full configuration reference for deploying Nestri on your own hardware — including TLS termination, firewall rules, and GPU drivers.
Core concepts
Learn how the streaming server, relay, runner containers, and maitred orchestration daemon fit together.
Streaming server configuration
Tune GPU selection, encoding parameters, bitrates, and latency settings for
nestri-server.Steam integration
Link your Steam account and stream your existing library with the Steam runner.