Pular para o conteúdo principal

Janus

O Janus WebRTC Server é o servidor que roteia as chamadas de voz do Rouxinol — tanto SIP (telefonia) quanto WhatsApp e WebRTC direto do navegador. É um pré-requisito obrigatório: sem ele, nenhum canal de voz funciona.

Não existe pacote oficial apt — o Janus é instalado compilando o código-fonte oficial.

Dependências de build (Ubuntu)

sudo apt update
sudo apt install -y \
libmicrohttpd-dev libjansson-dev \
libssl-dev libsrtp2-dev libsofia-sip-ua-dev libglib2.0-dev \
libopus-dev libogg-dev libcurl4-openssl-dev liblua5.3-dev \
libconfig-dev pkg-config gengetopt libtool automake \
cmake meson ninja-build git

Compilando o libnice

O Janus precisa de uma versão recente do libnice (ICE/STUN/TURN):

git clone https://gitlab.freedesktop.org/libnice/libnice.git
cd libnice
meson build && ninja -C build && sudo ninja -C build install
cd ..

Compilando o usrsctp

Necessário para o suporte a DataChannels:

git clone https://github.com/sctplab/usrsctp.git
cd usrsctp
./bootstrap
./configure --prefix=/usr && make && sudo make install
cd ..

Compilando o Janus Gateway

git clone https://github.com/meetecho/janus-gateway.git
cd janus-gateway
sh autogen.sh
./configure --prefix=/opt/janus
make
sudo make install
sudo make configs

O make configs gera os arquivos de configuração padrão em /opt/janus/etc/janus/, a partir dos exemplos .sample.

Configurando o Janus para o Rouxinol

Os arquivos relevantes ficam em /opt/janus/etc/janus/:

  • janus.jcfg — habilite o transporte HTTP (janus.transport.http.jcfg) e o WebSockets (janus.transport.websockets.jcfg), usados pelo Rouxinol via JANUS_BASE_URL e JANUS_WS_URL.
  • janus.plugin.sip.jcfg — plugin SIP, usado para as conexões SIP.
  • janus.transport.http.jcfg — defina admin_secret e a porta HTTP (padrão 8088).

Configure um segredo de API forte em janus.jcfg (api_secret) — ele corresponde à variável JANUS_API_SECRET no .env do Rouxinol (veja Configuração).

Rodando como serviço (systemd)

sudo tee /etc/systemd/system/janus.service > /dev/null <<'EOF'
[Unit]
Description=Janus WebRTC Server
After=network.target

[Service]
ExecStart=/opt/janus/bin/janus
Restart=on-failure
User=root

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl enable --now janus

Portas necessárias no firewall

PortaUso
8088/tcpAPI HTTP do Janus (JANUS_BASE_URL).
8188/tcpAPI WebSocket do Janus (JANUS_WS_URL).
5060/udpSinalização SIP (entre o Janus e o FreeSWITCH ou tronco SIP da operadora).
10000–10200/udpMídia RTP/RTCP (faixa configurável em janus.jcfg).

Próximo passo

Continue para FreeSWITCH, usado como PBX/tronco SIP para chamadas de telefonia.