Skip to main content

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 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.
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/udp open on your firewall
  • A modern browser (Chrome or Firefox recommended)

1

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:
docker run -d \
  --name nestri-relay \
  -e VERBOSE=true \
  -e STUN_SERVER="stun.l.google.com:19302" \
  -e WEBRTC_UDP_MUX=8088 \
  -p 8088:8088/udp \
  --restart unless-stopped \
  ghcr.io/nestrilabs/nestri/relay:nightly
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.
If your machine is behind NAT, set WEBRTC_NAT_IPS to your public IP address, or set AUTO_ADD_LOCAL_IP=true to let the relay detect it automatically.
Key relay environment variables:
VariableDefaultDescription
ENDPOINT_PORT8088Port for all relay protocols
VERBOSEfalseEnable verbose logging
DEBUGfalseEnable debug logging (implies verbose)
STUN_SERVERstun.l.google.com:19302WebRTC STUN server
WEBRTC_UDP_MUX8088UDP mux port for WebRTC
WEBRTC_NAT_IPS(empty)Public IP(s) for NAT traversal
AUTO_ADD_LOCAL_IPtrueAuto-detect and add local IP
REGEN_IDENTITYfalseRegenerate the relay’s libp2p identity
PERSIST_DIR./persist-dataDirectory for persistent identity data
2

Launch a game runner container

Nestri provides pre-built runner images for different launchers. The Steam runner installs Steam and sets NESTRI_LAUNCH_CMD="steam -tenfoot -cef-force-gpu" so Steam opens directly in Big Picture mode.
docker run -d \
  --name nestri-steam \
  --gpus all \
  -e RELAY_URL="ws://YOUR_RELAY_HOST:8088" \
  -e NESTRI_ROOM="my-room" \
  -e RESOLUTION="1920x1080" \
  -e FRAMERATE="60" \
  -e VIDEO_CODEC="h264" \
  -e VIDEO_BITRATE="6000" \
  --restart unless-stopped \
  ghcr.io/nestrilabs/nestri/runner:nightly-steam-v3
Replace 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.
The runner requires --gpus all (NVIDIA) or a GPU device passthrough for AMD/Intel. Without GPU access, the container falls back to software encoding, which may not be usable for real-time gaming.
Key runner environment variables:
VariableDefaultDescription
RELAY_URL(required)WebSocket URL of your relay
NESTRI_ROOM(required)Room identifier for this session
RESOLUTION1280x720Stream resolution (WxH)
FRAMERATE60Stream framerate (5–240)
VIDEO_CODECh264Video codec (h264, h265, av1)
VIDEO_BITRATE6000Target bitrate in kbps
VIDEO_BITRATE_MAX8000Maximum bitrate in kbps
VIDEO_ENCODER_TYPEhardwarehardware or software
AUDIO_CODECopusAudio codec
AUDIO_BITRATE128Audio bitrate in kbps
GPU_VENDOR(auto)Select GPU by vendor name
GPU_INDEX(auto)Select GPU by index
3

Connect via the Nestri web app

With your relay and runner container running, open nestri.io in your browser.
  1. Sign in to your Nestri account.
  2. Navigate to your session using the room name you set in NESTRI_ROOM.
  3. The browser connects to your relay, which brokers the WebRTC peer connection to the runner.
  4. Your game appears in the browser — mouse, keyboard, and gamepad input flows back to the container in real time.
For the lowest latency, run the relay on a machine that is network-close to your runner. For local setups, a single machine can host both.

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.

Build docs developers (and LLMs) love