Gryt

Windows (no Docker)

Run a Gryt server on Windows without Docker — just extract and start

The Windows self-hosted bundle lets you run a Gryt server on any Windows machine without Docker. Everything is included in a single zip: the signaling server, SFU media server, and image worker.

This is ideal for LAN parties, local teams, or anyone who wants a simple server on a Windows PC. For production deployments on a VPS or cloud server, see the Docker Compose guide.

Prerequisites

  • Windows 10 or later (x64)
  • Node.js 20 or later — download the LTS installer from nodejs.org

Verify Node.js is installed:

node --version

Setup

Download the bundle

Download the latest gryt-server-windows-x64-v*.zip from the GitHub releases page.

Extract it to a folder of your choice (e.g. C:\Gryt).

Configure

Open config.env in a text editor and customize:

# Give your server a name
SERVER_NAME=My Gryt Server

# Port for the signaling server (API + WebSocket)
PORT=5000

# Port for the SFU (voice/video media)
SFU_PORT=5005
SFU_WS_HOST=ws://127.0.0.1:5005
SFU_PUBLIC_HOST=127.0.0.1:5005

# STUN servers for automatic NAT traversal (voice/video)
STUN_SERVERS=stun:stun.l.google.com:19302,stun:stun1.l.google.com:19302

For LAN-only use, the defaults work out of the box. If you want users to connect over the internet, set SFU_PUBLIC_HOST and EXTERNAL_HOST to your public IP or domain:

EXTERNAL_HOST=http://your-public-ip:5000
SFU_PUBLIC_HOST=your-public-ip:5005
SFU_WS_HOST=ws://your-public-ip:5005

See the Configuration page for all available options.

Start the server

Double-click start.bat or run it from a terminal.

On first launch, it will download native modules for your Node.js version (this takes a few seconds and only happens once).

First-time setup: building native modules for your Node.js version...
Setup complete.

Starting Gryt Image Worker...
Starting Gryt SFU...
Starting Gryt Server...

Connect

Connect to your server using the Gryt desktop app or the hosted web client at app.gryt.chat.

Enter your server address: localhost:5000 (same machine) or your-ip:5000 (from another device on the network).

The first user to join becomes the owner/admin. After that, the server is invite-only — create invite links in Server settings → Invites.

Firewall

If other devices need to connect, allow these ports through Windows Firewall:

PortProtocolService
5000TCPSignaling server (API + WebSocket)
5005TCPSFU WebSocket
10000–10019UDPWebRTC media (voice/video)

To open a port: Windows Security → Firewall → Advanced settings → Inbound Rules → New Rule → Port.

For remote users, STUN is enabled by default and will automatically discover your public IP and attempt NAT hole-punching. On most home routers this means voice/video works without manual port forwarding. If remote users still can't connect to voice, forward the ports above in your router and set SFU_PUBLIC_HOST to your public IP in config.env.

Configuration reference

All settings are in config.env. Key options:

VariableDefaultDescription
SERVER_NAMEMy Gryt ServerDisplay name shown to users
PORT5000Signaling server port
SFU_PORT5005SFU media server port
SFU_WS_HOSTws://127.0.0.1:5005SFU WebSocket URL (used by the server internally)
SFU_PUBLIC_HOST127.0.0.1:5005SFU address given to clients
DATA_DIR./dataWhere SQLite database and file uploads are stored
STORAGE_BACKENDfilesystemFile storage mode (filesystem for self-hosted)
JWT_SECRET(auto-generated)Session token secret — set a strong value for production

Stopping the server

Close the terminal window, or press Ctrl+C in the terminal where start.bat is running.

To kill background processes from a previous run that didn't shut down cleanly:

taskkill /IM gryt_sfu.exe /F
taskkill /IM node.exe /F

Data and backups

All server data is stored in the data/ directory:

  • data/gryt.db — SQLite database (users, channels, messages, settings)
  • data/uploads/ — uploaded files and images

To back up your server, copy the entire data/ directory.

Troubleshooting

"node" is not recognized Node.js is not installed or not on your PATH. Download it from nodejs.org and restart your terminal.

Antivirus blocks gryt_sfu.exe Some antivirus software flags unsigned executables. Add an exception for the Gryt server folder.

Port already in use Another process is using port 5000 or 5005. Either close that process or change the ports in config.env.

Voice not working (remote users) The server uses STUN to automatically discover your public IP and punch through most home NATs — in many cases voice will work for remote users without manual port forwarding. If it still doesn't connect, open TCP 5005 + UDP 10000–10019 in your firewall and forward them in your router, then set SFU_PUBLIC_HOST to your public IP.

Can't connect from another device on the network Check Windows Firewall allows inbound connections on port 5000. Try connecting with your-local-ip:5000 (find your IP with ipconfig).

On this page