Nestri is designed to run entirely on hardware you control. You can deploy the relay, runner containers, and — optionally — the maitred orchestration daemon on a single Linux machine or across multiple hosts. This page orients you to the architecture and links to each component’s setup guide.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.
If you want the fastest path to a running game stream, see the quickstart first. This section goes deeper into each component’s configuration for production or advanced self-hosted deployments.
Hardware requirements
| Requirement | Details |
|---|---|
| OS | Linux (any modern distribution with kernel 5.15+) |
| GPU | NVIDIA, AMD, or Intel — hardware encoding is required for low-latency streaming |
| Container runtime | Docker (Podman support is planned) |
| Network | Port 8088/udp reachable from the internet for WebRTC; TLS termination recommended for the relay HTTP/WebSocket endpoint |
| RAM | 8 GB minimum; 16 GB or more recommended when running multiple game sessions |
| Storage | 50 GB minimum for a single runner image; SSD recommended |
Architecture overview
A complete Nestri self-hosted stack has three layers. A player’s browser connects through a relay to a runner container that streams video and receives input over WebRTC.Browser initiates a session
The player opens nestri.io (or your self-hosted frontend) and requests a room by name. The frontend contacts the Nestri cloud (or your local maitred instance) to locate the relay endpoint for that room.
Relay brokers the connection
The relay — a libp2p node — handles WebRTC signaling, STUN/TURN negotiation, and NAT hole-punching between the browser and the runner container. All media traffic flows peer-to-peer once the connection is established; the relay is not in the media path.
Runner streams the game
The runner container runs
nestri-server, which captures the Wayland display output via GStreamer, encodes it with a hardware encoder (VA-API, NVENC, or QSV), and sends it directly to the browser over WebRTC. Input events (mouse, keyboard, gamepad) travel the same channel in reverse.Components
Relay
Deploy the WebRTC signaling and libp2p relay node. Covers Docker setup, all environment variables, TLS proxy configuration with Caddy or Traefik, and NAT traversal tips.
Runner containers
Build and run Steam, Heroic, or Minecraft runner containers. Covers the container image hierarchy, GPU passthrough, encoding env vars, and custom launcher commands.
Maitred
Run the container orchestration daemon that automatically manages relay and runner lifecycles in response to cloud session requests.
Quickstart
Get from zero to a running game stream in minutes with the minimal setup guide.
Managed cloud vs. self-hosting
Nestri offers a managed cloud option at nestri.io that handles relay infrastructure and session routing for you. Self-hosting is the right choice when you need:- Full control over where your game data and streams live
- Lower latency by co-locating the runner with your network
- Custom launcher configurations or game libraries not covered by the managed service
- Operation in an air-gapped or private network environment