The server

One Linux machine, or a Raspberry Pi, holds the room. Friends never run the server.

Install

On x86_64, aarch64, or armv7:

curl -fsSL https://ryme.chat/install | bash

The script downloads the published ryme-server binary and checks its SHA-256 before it installs anything. Root installs to /usr/local/bin. Anyone else gets ~/.local/bin. It does not start a process.

Docker runs that same server when you would rather keep it in a container.

Start

Set the address friends can actually reach, then run it. If that line is still 0.0.0.0, the invite only works on the same machine.

export RYME_PUBLIC=voice.example
ryme-server

The invite is printed once, as ryme://host:port/# and a certificate pin. Copy that whole line into the client. Lobby is already open.

Rooms

Add names in the data directory, one per line. A line starting with # is a note. Names are at most 32 characters. Lobby cannot be removed. A name that is not on the list does not become a room.

# /var/lib/ryme/channels, or ./ryme-data/channels
Ranked
Night

Restart the server after editing the file. Everyone in the call sees the list. Only the host edits it.

Settings

  • RYME_BIND — listen address. Default 0.0.0.0:1542. This is UDP.
  • RYME_PUBLIC — host, host:port, or [ipv6]:port. This is what the invite prints.
  • RYME_DATA — where the certificate lives. Default ./ryme-data.
  • --new-invite — replace the certificate. Old invites stop connecting.

The data directory is mode 0700. The key file is mode 0600. Keep that directory. Copying it to a new machine keeps the same invite. Losing it means a new invite.

What gets logged

Listening, a peer connecting or leaving, a join, a leave, and a rejected handshake. The invite is not written on those lines. Audio and chat text are not logged.