Files
olcrtc/docs/fast.md
T

3.5 KiB

License Golang

RU / EN

Quick start

Important: always check that the video call service you need is on the allow lists, that it works in your network, and so on. If not, use another one.

This method runs olcrtc as an ordinary native binary. You need Go 1.26+, mage, git and curl.

Install dependencies

apt install git curl        # Debian / Ubuntu / Mint
pacman -S git curl          # Arch / CachyOS / Manjaro
dnf install git curl        # Fedora / RHEL / CentOS

Install Go 1.26+ and mage:

go install github.com/magefile/mage@latest
echo 'export PATH="$HOME/go/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

If the machine has less than 4 GB RAM, enable swap before building:

sudo fallocate -l 4G /swapfile && sudo chmod 600 /swapfile && sudo mkswap /swapfile && sudo swapon /swapfile

Build

git clone https://github.com/openlibrecommunity/olcrtc --recurse-submodules
cd olcrtc
mage build

The binary lands in build/, for example:

./build/olcrtc-linux-amd64

Generate a key

The key must match on the server and the client.

openssl rand -hex 32

Run the server

Create server.yaml:

Important: always check that the video call service you need is on the allow lists, that it works in your network, and so on. If not, use another one.

mode: srv
auth:
  provider: jitsi
room:
  
  id: "https://meet.small-dm.ru/REPLACE_ME_WITH_ROOM_ID" # or https://meet.small-dm.ru/ROOM  or  https://meet1.arbitr.ru/ROOM  or  https://meet.handyweb.org/ROOM etc.

crypto:
  key: "REPLACE_ME_WITH_64_HEX_CHARS"
net:
  transport: datachannel
  dns: "8.8.8.8:53"
data: data

Run it:

./build/olcrtc-linux-amd64 server.yaml

Run the client

Create client.yaml on the client machine. auth.provider, room.id, crypto.key and net.transport must match the server.

Important: always check that the video call service you need is on the allow lists, that it works in your network, and so on. If not, use another one.

mode: cnc
auth:
  provider: jitsi
room:
  id: "https://meet.small-dm.ru/REPLACE_ME_WITH_ROOM_ID" # or https://meet.small-dm.ru/ROOM  or  https://meet1.arbitr.ru/ROOM  or  https://meet.handyweb.org/ROOM etc.
crypto:
  key: "REPLACE_ME_WITH_64_HEX_CHARS"
net:
  transport: datachannel
  dns: "8.8.8.8:53"
socks:
  host: "127.0.0.1"
  port: 8808
data: data

Run it:

./build/olcrtc-linux-amd64 client.yaml

After startup SOCKS5 listens on 127.0.0.1:8808.

Verify

curl --socks5-hostname 127.0.0.1:8808 https://icanhazip.com

It should return the server IP.

Control

Stop a manual run with Ctrl+C.

If the process runs in the background:

pgrep -af olcrtc
kill <pid>

Update:

git pull --recurse-submodules
mage build

Restart the server and the client with the same YAML configs.

Multiple instances

You can run several servers or clients on one machine: create a separate YAML for each instance. For clients use different SOCKS5 ports:

socks:
  host: "127.0.0.1"
  port: 8809

All settings and the compatibility matrix: settings.md. Detailed manual build: manual.md.