Giter VIP home page Giter VIP logo

nextcloud-spreed-signaling's Introduction

Spreed standalone signaling server

Build Status Coverage Status Documentation Status Go Report

This repository contains the standalone signaling server which can be used for Nextcloud Talk (https://apps.nextcloud.com/apps/spreed).

See https://nextcloud-spreed-signaling.readthedocs.io/en/latest/ for further information on the API of the signaling server.

Building

The following tools are required for building the signaling server.

  • git
  • go >= 1.20
  • make
  • protobuf-compiler >= 3

Usually the last two versions of Go are supported. This follows the release policy of Go: https://go.dev/doc/devel/release#policy

All other dependencies are fetched automatically while building.

$ make build

or on FreeBSD

$ gmake build

Afterwards the binary is created as bin/signaling.

Configuration

A default configuration file is included as server.conf.in. Copy this to server.conf and adjust as necessary for the local setup. See the file for comments about the different parameters that can be changed.

Running

The signaling server connects to a NATS server (https://nats.io/) to distribute messages between different instances. See the NATS documentation on how to set up a server and run it.

Once the NATS server is running (and the URL to it is configured for the signaling server), you can start the signaling server.

$ ./bin/signaling

By default, the configuration is loaded from server.conf in the current directory, but a different path can be passed through the --config option.

$ ./bin/signaling --config /etc/signaling/server.conf

Running as daemon

systemd

Create a dedicated group and user:

sudo groupadd --system signaling
sudo useradd --system \
    --gid signaling \
    --shell /usr/sbin/nologin \
    --comment "Standalone signaling server for Nextcloud Talk." \
    signaling

Copy server.conf.in to /etc/signaling/server.conf and fix permissions:

sudo chmod 600 /etc/signaling/server.conf
sudo chown signaling: /etc/signaling/server.conf

Copy dist/init/systemd/signaling.service to /etc/systemd/system/signaling.service (adjust abs. path in ExecStart to match your binary location!)

Enable and start service:

systemctl enable signaling.service
systemctl start signaling.service

Running with Docker

Official docker containers for the signaling server and -proxy are available on Docker Hub at https://hub.docker.com/r/strukturag/nextcloud-spreed-signaling

See the README.md in the docker subfolder for details.

Docker Compose

You will likely have to adjust the Janus command line options depending on the exact network configuration on your server. Refer to Setup of Janus and the Janus documentation for how to configure your Janus server.

Copy server.conf.in to server.conf and adjust it to your liking.

If you're using the docker-compose.yml configuration as is, the MCU Url must be set to ws://localhost:8188, the NATS Url must be set to nats://localhost:4222, and TURN Servers must be set to turn:localhost:3478?transport=udp,turn:localhost:3478?transport=tcp.

docker-compose build
docker-compose up -d

Please note that docker-compose v2 is required for building while most distributions will ship older versions. You can download a recent version from https://docs.docker.com/compose/install/

Setup of NATS server

There is a detailed description on how to install and run the NATS server available at https://docs.nats.io/running-a-nats-service/introduction

You can use the gnatsd.conf file as base for the configuration of the NATS server.

Setup of Janus

A Janus server (from https://github.com/meetecho/janus-gateway) can be used to act as a WebRTC gateway. See the documentation of Janus on how to configure and run the server. At least the VideoRoom plugin and the websocket transport of Janus must be enabled.

The signaling server uses the VideoRoom plugin of Janus to manage sessions. All gateway details are hidden from the clients, all messages are sent through the signaling server. Only WebRTC media is exchanged directly between the gateway and the clients.

Edit the server.conf and enter the URL to the websocket endpoint of Janus in the section [mcu] and key url. During startup, the signaling server will connect to Janus and log information of the gateway.

The maximum bandwidth per publishing stream can also be configured in the section [mcu], see properties maxstreambitrate and maxscreenbitrate.

Use multiple Janus servers

To scale the setup and add high availability, a signaling server can connect to one or multiple proxy servers that each provide access to a single Janus server.

For that, set the type key in section [mcu] to proxy and set url to a space-separated list of URLs where a proxy server is running.

Each signaling server that connects to a proxy needs a unique token id and a public / private RSA keypair. The token id must be configured as token_id in section [mcu], the path to the private key file as token_key.

Setup of proxy server

The proxy server is built with the standard make command make build as bin/proxy binary. Copy the proxy.conf.in as proxy.conf and edit section [tokens] to the list of allowed token ids and filenames of the public keys for each token id. See the comments in proxy.conf.in for other configuration options.

When the proxy process receives a SIGHUP signal, the list of allowed token ids / public keys is reloaded. A SIGUSR1 signal can be used to shutdown a proxy process gracefully after all clients have been disconnected. No new publishers will be accepted in this case.

Clustering

The signaling server supports a clustering mode where multiple running servers can be interconnected to form a single "virtual" server. This can be used to increase the capacity of the signaling server or provide a failover setup.

For that a central NATS server / cluster must be used by all instances. Each instance must run a GRPC server (enable listening in section grpc and optionally setup certificate, private key and CA). The list of other GRPC targets must be configured as targets in section grpc or can be retrieved from an etcd cluster. See server.conf.in in section grpc for configuration details.

Setup of frontend webserver

Usually the standalone signaling server is running behind a webserver that does the SSL protocol or acts as a load balancer for multiple signaling servers.

The configuration examples below assume a pre-configured webserver (nginx or Apache) with a working HTTPS setup, that is listening on the external interface of the server hosting the standalone signaling server.

After everything has been set up, the configuration can be tested using curl:

$ curl -i https://myserver.domain.invalid/standalone-signaling/api/v1/welcome
HTTP/1.1 200 OK
Date: Thu, 05 Jul 2018 09:28:08 GMT
Server: nextcloud-spreed-signaling/1.0.0
Content-Type: application/json; charset=utf-8
Content-Length: 59

{"nextcloud-spreed-signaling":"Welcome","version":"1.0.0"}

nginx

Nginx can be used as frontend for the standalone signaling server without any additional requirements.

The backend should be configured separately so it can be changed in a single location and also to allow using multiple backends from a single frontend server.

Assuming the standalone signaling server is running on the local interface on port 8080 below, add the following block to the nginx server definition in /etc/nginx/sites-enabled (just before the server definition):

upstream signaling {
    server 127.0.0.1:8080;
}

To proxy all requests for the standalone signaling to the correct backend, the following location block must be added inside the server definition of the same file:

location /standalone-signaling/ {
    proxy_pass http://signaling/;
    proxy_http_version 1.1;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

location /standalone-signaling/spreed {
    proxy_pass http://signaling/spreed;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "Upgrade";
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

Example (e.g. /etc/nginx/sites-enabled/default):

upstream signaling {
    server 127.0.0.1:8080;
}

server {
    listen 443 ssl http2;
    server_name myserver.domain.invalid;

    # ... other existing configuration ...

    location /standalone-signaling/ {
        proxy_pass http://signaling/;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    location /standalone-signaling/spreed {
        proxy_pass http://signaling/spreed;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Apache

To configure the Apache webservice as frontend for the standalone signaling server, the modules mod_proxy_http and mod_proxy_wstunnel must be enabled so WebSocket and API backend requests can be proxied:

$ sudo a2enmod proxy
$ sudo a2enmod proxy_http
$ sudo a2enmod proxy_wstunnel

Now the Apache VirtualHost configuration can be extended to forward requests to the standalone signaling server (assuming the server is running on the local interface on port 8080 below):

<VirtualHost *:443>

    # ... existing configuration ...

    # Enable proxying Websocket requests to the standalone signaling server.
    ProxyPass "/standalone-signaling/"  "ws://127.0.0.1:8080/"

    RewriteEngine On
    # Websocket connections from the clients.
    RewriteRule ^/standalone-signaling/spreed/$ - [L]
    # Backend connections from Nextcloud.
    RewriteRule ^/standalone-signaling/api/(.*) http://127.0.0.1:8080/api/$1 [L,P]

    # ... existing configuration ...

</VirtualHost>

Caddy

v1

Caddy (v1) configuration:

myserver.domain.invalid {
  proxy /standalone-signaling/ http://127.0.0.1:8080 {
    without /standalone-signaling
    transparent
    websocket
  }
}

v2

Caddy (v2) configuration:

myserver.domain.invalid {
  route /standalone-signaling/* {
    uri strip_prefix /standalone-signaling
    reverse_proxy http://127.0.0.1:8080
  }
}

Setup of Nextcloud Talk

Login to your Nextcloud as admin and open the additional settings page. Scroll down to the "Talk" section and enter the base URL of your standalone signaling server in the field "External signaling server". Please note that you have to use https if your Nextcloud is also running on https. Usually you should enter https://myhostname/standalone-signaling as URL.

The value "Shared secret for external signaling server" must be the same as the property secret in section backend of your server.conf.

If you are using a self-signed certificate for development, you need to uncheck the box Validate SSL certificate so backend requests from Nextcloud to the signaling server can be performed.

Benchmarking the server

A simple client exists to benchmark the server. Please note that the features that are benchmarked might not cover the whole functionality, check the implementation in src/client for details on the client.

To authenticate new client connections to the signaling server, the client starts a dummy authentication handler on a local interface and passes the URL in the hello request. Therefore the signaling server should be configured to allow all backend hosts (option allowall in section backend).

The client is not compiled by default, but can be using the client target:

$ make client

Usage:

$ ./bin/client
Usage of ./bin/client:
  -addr string
        http service address (default "localhost:28080")
  -config string
        config file to use (default "server.conf")
  -maxClients int
        number of client connections (default 100)

nextcloud-spreed-signaling's People

Contributors

3x3cut0r avatar blackclaws avatar danxuliu avatar dependabot[bot] avatar fancycode avatar fredevora avatar gary-kim avatar kesselb avatar kleener avatar loelkes avatar membero avatar morph027 avatar n-connect avatar nickvergessen avatar solracsf avatar stweil avatar supersandro2000 avatar systemkeeper avatar tachi107 avatar tcitworld avatar zoey2936 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nextcloud-spreed-signaling's Issues

How to use without a (public) coturn server

As given in the documentation and in the examples here, it is required to have a public coturn server for running the signaling server. I also tested this and its really required.

But i also ordered the test version of the official high perfomance backend, which worked perfect without any TURN/STUN server.

So may you can explain to me, how i have to set up the signaling server, that there is no need of a public coturn server?

Thanks!

Signaling answers โ€œ404 page not foundโ€

Hello.
I installed Signaling server as it described here. Everything is OK, in syslog I have:
Jan 21 13:20:28 nc-talk-srv systemd[1]: Started Nextcloud Talk signaling server.
Jan 21 13:20:28 nc-talk-srv signaling[14053]: main.go:130: Starting up version 25b2722/go1.15.6 as pid 14053
Jan 21 13:20:28 nc-talk-srv signaling[14053]: main.go:139: Using a maximum of 4 CPUs
Jan 21 13:20:28 nc-talk-srv signaling[14053]: natsclient.go:116: Connection established to nats://localhost:4222 (NDKXRAPVENPIW3QZWOFVPIF7FKXQUU7EXGE3J3CLLJYBWXVD72S7DCLF)
Jan 21 13:20:28 nc-talk-srv signaling[14053]: hub.go:165: WARNING: No shared secret has been set for internal clients.
Jan 21 13:20:28 nc-talk-srv signaling[14053]: backend_configuration.go:77: Backend backend-1 added for https://nextcloud.my-domain.tld/
Jan 21 13:20:28 nc-talk-srv signaling[14053]: hub.go:177: Using a maximum of 8 concurrent backend connections per host
Jan 21 13:20:28 nc-talk-srv signaling[14053]: hub.go:184: Using a timeout of 10s for backend connections
Jan 21 13:20:28 nc-talk-srv signaling[14053]: hub.go:270: Not using GeoIP database
Jan 21 13:20:28 nc-talk-srv signaling[14053]: mcu_janus.go:289: Connected to Janus WebRTC Server 0.7.3 by Meetecho s.r.l.
Jan 21 13:20:28 nc-talk-srv signaling[14053]: mcu_janus.go:293: Found JANUS VideoRoom plugin 0.0.9 by Meetecho s.r.l.
Jan 21 13:20:28 nc-talk-srv signaling[14053]: mcu_janus.go:299: Data channels are supported
Jan 21 13:20:28 nc-talk-srv janus[697]: Creating new session: 5204023035686044; 0x7f9014004c30
Jan 21 13:20:28 nc-talk-srv signaling[14053]: mcu_janus.go:305: Full-Trickle is enabled
Jan 21 13:20:28 nc-talk-srv signaling[14053]: mcu_janus.go:308: Maximum bandwidth 1048576 bits/sec per publishing stream
Jan 21 13:20:28 nc-talk-srv signaling[14053]: mcu_janus.go:309: Maximum bandwidth 2097152 bits/sec per screensharing stream
Jan 21 13:20:28 nc-talk-srv janus[697]: Creating new handle in session 5204023035686044: 4705766480014858; 0x7f9014004c30 0x7f9014009d00
Jan 21 13:20:28 nc-talk-srv signaling[14053]: mcu_janus.go:315: Created Janus session 5204023035686044
Jan 21 13:20:28 nc-talk-srv signaling[14053]: mcu_janus.go:322: Created Janus handle 4705766480014858
Jan 21 13:20:28 nc-talk-srv signaling[14053]: main.go:226: Using janus MCU
Jan 21 13:20:28 nc-talk-srv signaling[14053]: hub.go:357: Using a timeout of 10s for MCU requests
Jan 21 13:20:28 nc-talk-srv signaling[14053]: backend_server.go:94: Using configured TURN API key
Jan 21 13:20:28 nc-talk-srv signaling[14053]: backend_server.go:95: Using configured shared TURN secret
Jan 21 13:20:28 nc-talk-srv signaling[14053]: backend_server.go:97: Adding "turn:turn.my-domain.tld:3478?transport=udp" as TURN server
Jan 21 13:20:28 nc-talk-srv signaling[14053]: backend_server.go:97: Adding "turn:turn.my-domain.tld:3478?transport=tcp" as TURN server
Jan 21 13:20:28 nc-talk-srv signaling[14053]: backend_server.go:104: No IPs configured for the stats endpoint, only allowing access from 127.0.0.1
Jan 21 13:20:28 nc-talk-srv signaling[14053]: main.go:302: Listening on 127.0.0.1:8080

but at the end of step 5 when I try
curl -i http://127.0.0.1:8080/standalone-signaling/api/v1/welcome
I recieve an answer:

HTTP/1.1 404 Not Found
Content-Type: text/plain; charset=utf-8
X-Content-Type-Options: nosniff
Date: Tue, 19 Jan 2021 10:48:25 GMT
Content-Length: 19

What could be the reason?

backend_client.go:333: Could not send request

Hello,

System: LXC Ubuntu 18.04
Talk: 9.0.8

After adding my signaling server in the Talk settings and getting an OK status with signaling server version, I am unable to start calls. When I attempt to start the call the connection simply times out. I have this entry in my signaling servers log:

backend_client.go:333: Could not send request {"type":"auth","auth":{"version":"1.0","params":{"userid":"grickard","ticket":"Yx75v4urLPeA9pXU:1612983382:grickard:4bedb6a87b9bd618f49025218909f7943e8aee2a0d1952730110b81b06703061"}}} to https://nc.example.com/ocs/v2.php/apps/spreed/api/v1/signaling/backend: Post https://nc.example.com/ocs/v2.php/apps/spreed/api/v1/signaling/backend: dial tcp <my_ip>:443: i/o timeout

I'm not sure if the fact that I built the standalone signaling server in LXC has anything to do with the issue but I cannot find any signs to indicate as such. Coturn, Janus and Nginx are all functioning fine with no errors being logged.

The NC application servers are NAT'd to their public IP, however the signaling server has it's public IP attached to the vNIC.

Thanks!

UPDATE:

I'm getting another error when attempting to use the Android Talk app:

Error reading from <IP_ADDRESS>.239: read tcp 127.0.0.1:8080->127.0.0.1:54622: use of closed network connection

Hardware Requirements for a complete high performance backend

After getting the news that the HPB got open sourced and is open to use for everyone (thank you!) I'm considering a installation for the local student representation (to start things ;-) ).

Unfortunaly - I found no information at all regarding the server requirements and number of servers needed. What I did understand is that it should be separated from the normal NC since same ports will be used.

I would propose to update the readme regarding:

  • Which services can be combined/should be separated.
  • What requirements exist for small/medium/large demands. Especially which parts need what kind of ressource (CPU/Bandwith/etc.)

Apache proxy

Hi!

I set up the signaling server on a different VM. My webfacing VM runs nextcloud on an Univention appliance.
I SSH-d in to that VM an made a singaling.conf for proxying to the signaling server as it writen down here in the readme.

But I only get a 404. I made some tweeks, I created a different DNS name for it and used it in th proxy conf as servername, now I get a 503 in the nextcloud talk settings, I even managed to reach the internal nginx server of the signaling VM. But something still doesn't add up.

Some help would be much appreciated!
Thanks!

Deb/PPA packaging?

Any chance we can get this in a deb package and/or with a PPA repo? Great that this is open sourced, but compiling from source means package managers aren't kept in the loop, causing supportability challenges in production.

Error while building Dependencies in v0.2.0

I am trying to build version 0.2.0 as I assume this is the last stable version. Unfortunately the process fails already when building the dependencies.

go version go1.16.4 linux/amd64

/usr/bin/go build -o ./vendor/bin/easyjson ./vendor/src/github.com/mailru/easyjson/easyjson/main.go vendor/src/github.com/mailru/easyjson/easyjson/main.go:11:2: no required module provides package github.com/mailru/easyjson/bootstrap: go.mod file not found in current directory or any parent directory; see 'go help modules' vendor/src/github.com/mailru/easyjson/easyjson/main.go:15:2: no required module provides package github.com/mailru/easyjson/gen: go.mod file not found in current directory or any parent directory; see 'go help modules' vendor/src/github.com/mailru/easyjson/easyjson/main.go:16:2: no required module provides package github.com/mailru/easyjson/parser: go.mod file not found in current directory or any parent directory; see 'go help modules'

Edit: if I build the latest state of master branch everything works fine.

Permission denied issue with the janus container

Getting this error while running -> docker-compose up --build

ERROR: Service 'janus' failed to build: OCI runtime create failed: container_linux.go:349: starting container process caused "process_linux.go:449: container init caused "rootfs_linux.go:58: mounting \"proc\" to rootfs \"/var/lib/docker/overlay2/f8ee3ca38315b9424bb157426b66d004849ef44ff6ac182fb2dd81409f95edcf/merged\" at \"/proc\" caused \"permission denied\""": unknown

Janus MCU data channels not supported - do I have a wrong URL?

Hello,

I've successfully managed to compile everything, but where do I find how a mcu url looks like, which I need to configure here?
Edit the server.conf and enter the URL to the websocket endpoint of Janus in the section [mcu] and key url. During startup, the signaling server will connect to Janus and log information of the gateway.

Thanks in advanced, Christian.

Force HTTPS connections to Nextcloud instance

Right now a user could force a downgrade by setting a HTTP URL directly inside the hello message. To avoid any potential sensitive data being transmitted unencrypted we should consider always using HTTPS. (or requiring users to also configure the protocol for any given backend)

SIP bridge

Is there any or can you provide any information on whether the now open source High Performance Backend can work as a SIP bridge?

According to several issues in the Nextcloud Talk repository (nextcloud/spreed#1604, nextcloud/spreed#1605, nextcloud/spreed#1606, nextcloud/spreed#1607, nextcloud/spreed#1608, nextcloud/spreed#2511, nextcloud/spreed#2512), especially:

[...] the SIP bridge is part of the Nextcloud Talk High Performance Back end [...]
nextcloud/spreed#2512 (comment)

this is possible with the closed source version.

Makefile's prerequisites problem when 'make -j >1 build'

Hi,

I was preparing a package for AUR (Arch Linux) and my system has -j enabled for building packages. When I build the package (makepkg), I get some errors. If I add -j 1 I can compile it without errors.

The error:

$ make -j 2 build
[ ! -d "/home/liam/Documents/Development/aur/nextcloud-spreed-signaling/src/nextcloud-spreed-signaling-v0.2.0/.git/hooks" ] || ln -sf "/home/liam/Documents/Development/aur/nextcloud-spreed-signaling/src/nextcloud-spreed-signaling-v0.2.0/scripts/pre-commit.hook" "/home/liam/Documents/Development/aur/nextcloud-spreed-signaling/src/nextcloud-spreed-signaling-v0.2.0/.git/hooks/pre-commit"
GOPATH="/home/liam/Documents/Development/aur/nextcloud-spreed-signaling/src/nextcloud-spreed-signaling-v0.2.0/vendor:/home/liam/Documents/Development/aur/nextcloud-spreed-signaling/src/nextcloud-spreed-signaling-v0.2.0" /usr/bin/go get github.com/rogpeppe/godeps
PATH=/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/opt/android-sdk/tools:/opt/android-sdk/tools/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/opt/pscripts/uihelper:/opt/pscripts/sysadmin GOPATH="/home/liam/Documents/Development/aur/nextcloud-spreed-signaling/src/nextcloud-spreed-signaling-v0.2.0/vendor:/home/liam/Documents/Development/aur/nextcloud-spreed-signaling/src/nextcloud-spreed-signaling-v0.2.0" ./vendor/bin/easyjson -all src/signaling/api_signaling.go
PATH=/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/opt/android-sdk/tools:/opt/android-sdk/tools/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/opt/pscripts/uihelper:/opt/pscripts/sysadmin GOPATH="/home/liam/Documents/Development/aur/nextcloud-spreed-signaling/src/nextcloud-spreed-signaling-v0.2.0/vendor:/home/liam/Documents/Development/aur/nextcloud-spreed-signaling/src/nextcloud-spreed-signaling-v0.2.0" ./vendor/bin/easyjson -all src/signaling/api_backend.go
PATH=/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/opt/android-sdk/tools:/opt/android-sdk/tools/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/opt/pscripts/uihelper:/opt/pscripts/sysadmin GOPATH="/home/liam/Documents/Development/aur/nextcloud-spreed-signaling/src/nextcloud-spreed-signaling-v0.2.0/vendor:/home/liam/Documents/Development/aur/nextcloud-spreed-signaling/src/nextcloud-spreed-signaling-v0.2.0" ./vendor/bin/easyjson -all src/signaling/api_proxy.go
/bin/sh: ./vendor/bin/easyjson: No such file or directory
make: *** [Makefile:95: src/signaling/api_signaling_easyjson.go] Error 127
make: *** Waiting for unfinished jobs....
/bin/sh: ./vendor/bin/easyjson: No such file or directory
make: *** [Makefile:95: src/signaling/api_backend_easyjson.go] Error 127
/bin/sh: ./vendor/bin/easyjson: No such file or directory
make: *** [Makefile:95: src/signaling/api_proxy_easyjson.go] Error 127

I didn't go through that much, but I believe the problem starts at line 108 of Makefile, server: dependencies common. When running multithreaded it will run common at same time as dependencies. I might be completely wrong.

I suggest, in mean time, adding a warning on readme to not run with -j >1.

tag a release

Hi! I would like to package this software for Arch Linux (as I already package the spreed app).
Packaging policies currently prevent me from doing this though (because there is no release of this software).

Can you please tag a release? :)

Which port should public reachable and which one only from nextcloud instance?

janus: WebRTC gateway used by spreedbackend. WebRTC port range (20000-20100/udp) exposed to public.
nginx: Reverse proxy for spreedbackend. HTTP(S) exposed to public.
nats: NATS streaming server because required by spreedbackend.
coturn TURN relay. Ports 3478,5349 (TCP/UDP) and 49160-49200 (UDP) exposed to public.

I got these port from https://github.com/lnobach/nctalk-backend-cloud-config
But coturn is reached from client? I am not sure about that

Which ports need to be forwarded ?

Hi,

  1. Thank you so much for sharing this amazing project ! :D
  2. I want to run this along with Nextcloud Talk on my Raspberry Pi via Docker.
    I'm not going to forward all ports from my router to the Raspberry Pi. Therefore, could you tell me which ports are required for this to work ?
    Putting everything in network_mode: host just makes it difficult to know what's happening with ports. I have no idea which port should be opened to the Internet, and I am definitely not going to open up all ports on my router.

Would someone please explain how this setup works ?

Many thanks to whoever answers :)

Video and audio not working in video chat with signaling server

Hi.

I've tried setting up the Signaling Server & Janus according to the instructions here, but I've gotten to an issue I'm not sure how to solve.

So the Signaling Server, Janus, nats etc seems to be up and running. In Nextcloud Talk settings, we get an "OK" from the TURN server and Signaling Server. I've entered them like this:
TURN Server: our.domain.com:3478
Signaling Server: https://our.domain.com/standalone-signaling

However, when entering a video chat in TALK, it doesn't work.

Step by Step:

  1. User A creates group conversation.
  2. User A invites User B into the group.
  3. User A starts a call. He can see his own video (webcam).
  4. User B joins the call. He can see his own video (webcam).
  5. Both users are unable to see eachothers video or hear audio from eachother.

I've gone through our configurations multiple times now but I can't see what is wrong. I tried to remove and then make the Signaling Server again, but it didn't change anything.

In the Signaling Server console nothing unatural appear until the second person (e.g User B) joins the conversation. Then we get some error from Janus.

2020/08/12 08:11:34.980192 mcu_janus.go:673: Publisher 4138884646681718 received connected 2020/08/12 08:11:35.424210 mcu_janus.go:506: Started listener &{{janus.plugin.videoroom map[room:1820587936572240 started:ok videoroom:event]} map[] 5800955549083094 2175678738512156} 2020/08/12 08:11:35.578720 mcu_janus.go:954: Subscriber 2175678738512156 received hangup (DTLS alert), closing 2020/08/12 08:11:35.579253 janus_client.go:473: Unable to deliver message { "janus": "detached", "session_id": 5800955549083094, "sender": 2175678738512156 }. Handle 2175678738512156 gone? 2020/08/12 08:11:35.610435 hub.go:1329: No MCU subscriber found for session gkmV8MgM_lujxyjgwVt6WjEFIe6sk-GbFd4E8sPEjg98PT1nd1FVcDR3S0ZoeFZQQmt3SmpEUHFRMU11VHFUZHR4NUlLU0xFWFpNck9ydlJQd21zS3BoMGJBdE1jZHpJTWVmMy1BcnRKaTdVVmQ3TWI5SE1PVWdCRTMwMnlTVEp5alBGVWZyVExrdGlnR3hoM2tLcHV4d01scm9oTHg5dk5xcHFkczI3T2NWSEFVc0xUOUZZOXhvRGhIdGpmZzBhZnExWDZacTlzOTFvU3w3Nzg5MTI3OTUx to send &{Type:candidate Sid:1597219893463 RoomType:video Payload:map[candidate:map[candidate:candidate:2644336306 1 udp 2122260223 192.168.2.117 58769 typ host generation 0 ufrag +zuR network-id 1 network-cost 10 sdpMLineIndex:0 sdpMid:audio]]} to mvlCnxjfdc6qCWVt3nV1-zUO5nxvpBYfIlBMHOatbSZ8PT1BTzZzdnNhRmVSbXZYdGx5b3VOMWxjRWEtbDdBbTBxWGQ0SFpFdjZmaW94YVB1NXltYl81dzR3U0l1dFJJWXJxVWdjVGZaVWRodk9YYzg4SHpKYmNWSWZTTjcxTnVTV243VU1IdDFRQnRUYmNReWZoakZBWm14blROUmxpakhMbVZNUEFwZnJSX2ppN1I4dVJMQlVETm5JQkdpUEY3b2VkWEJQZUg4LTQ4OXw0ODg5MTI3OTUx

This error keeps repeating until the call ends.

Any clue what the issue could be here?

docker-compose: ports are only exportet to localhost

My nginx-reverse-proxy is on another machine than the signaling server, which I try to run via the provided docker-compose file. So I can not use proxy_pass http://localhost:8080, I have to use proxy_pass http://nano:8080. With my other docker-compose environmets, this works well, but not with the nextcloud-spreed-signaling server.

The container is up and running on my machine nano, I can test it with
curl -i http://localhost:8080/api/v1/welcome
But when I try to use the machine name or ip-address:
curl -i http://nano:8080/api/v1/welcome
curl -i http://192.168.0.2:8080/api/v1/welcome
I only get
curl: (7) Failed to connect to nano port 8080: connection refused

I think, the ports are not exposed correctly.

Stefan

violating local access rules

Hi,

first, thanks for publishing!! ;-)
I'm not sure if it's the right place here - so if not, sorry.

I've setup NATS / janus / nginx and signaling like described in README - and i think it's fine.
Output of curl:

curl -i https://host1.local/standalone-signaling/api/v1/welcome -k
HTTP/2 200
server: nginx/1.14.0 (Ubuntu)
date: Fri, 05 Jun 2020 08:29:18 GMT
content-type: application/json; charset=utf-8
content-length: 94
strict-transport-security: max-age=63072000; includeSubdomains; preload

{"nextcloud-spreed-signaling":"Welcome","version":"563658bf59cfeae40cee75eb0a7b009feb9e79cd"}

Fine so far.
Next, i've configured signaling server in my nextcloud instance (host2.local) like described, but there comes an error. A look into nextcloud.log shows:
{"reqId":"Xtnz7nh7Su8bFtoymkXUogAAAAE","level":2,"time":"2020-06-05T07:27:42+00:00","remoteAddr":"10.20.0.13","user":"B793BDBF-EB1B-4057-BF89-DC90A18D8635","app":"no app in context","method":"GET","url":"/ocs/v2.php/apps/spreed/api/v1/signaling/welcome/0","message":"Host host1.local was not connected to because it violates local access rules","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36 Edg/83.0.478.37","version":"19.0.0.12"}

My setup:

  • host1.local Ubuntu 18.04.4 LTS
    -- janus 0.10.1
    -- nextcloud-spreed-signaling version 563658b/go1.10.4
    -- nats-server version 2.1.7
    -- nginx/1.14.0

  • host2.local CentOS 8.1
    -- Nextcloud 19.0.0.12
    -- Talk 9.0.0
    -- Apache/2.4.37
    -- coturn 4.5.1.2

Nextcloud config.php:

<?php
$CONFIG = array (
  'instanceid' => 'my_id',
  'passwordsalt' => 'my_salt',
  'secret' => 'my_secret',
  'trusted_domains' =>
  array (
    0 => 'host2.local',
    1 => 'host1.local',
  ),
  'datadirectory' => '/var/www/nextcloud/data',
  'dbtype' => 'mysql',
  'version' => '19.0.0.12',
  'overwrite.cli.url' => 'https://host2.local',
  'dbname' => 'nc',
  'dbhost' => 'localhost',
  'dbport' => '',
  'dbtableprefix' => 'oc_',
  'mysql.utf8mb4' => true,
  'dbuser' => 'my_user',
  'dbpassword' => 'my_password',
  'installed' => true,
  'ldapIgnoreNamingRules' => false,
  'ldapProviderFactory' => 'OCA\\User_LDAP\\LDAPProviderFactory',
  'app_install_overwrite' =>
  array (
    0 => 'groupquota',
  ),
);

Any idea why Nextcloud is saying "Host host1.local was not connected to because it violates local access rules"?
Maybe because singaling server is a seperate hosts?

Have a nice day!
Michael

context deadline exceeded

Hi,

after compiling, installing and configuring the signaling server on a new Ubuntu 20.04 I get this error message in the logs, when I try to initiate a Talk call.

2020/05/20 11:19:02.412062 backend_client.go:345: Could not send request {"type":"auth","auth":{"version":"1.0","params":{"userid":"[USER]","ticket":"UP***********kI:1589973319:[USER]:d9f4*******************************************************************739"}}} to https://nextcloud.domain.reg/ocs/v2.php/apps/spreed/api/v1/signaling/backend: context deadline exceeded

Nextcloud version is 18.0.4 and Talk had been upgraded to the latest 8.0.9.

The benchmark client connects without any issues via localhost on the same machine.

Error trying to connect to nextcloud 21

Hello! I am trying to configure a high performance engine based on this repository, but in Nextcloud it does not connect, throwing the error: "Establishing the signaling connection is taking longer than expected ..."

The stack is created in a clean vps and independent of nextcloud. Ports https and 3478 are open.

Testing the API from the browser returns the message:
{"nextcloud-spreed-signaling":"Welcome","version":"b091db000e4ec9d9a65a9d2021ffb3780c08848a"}

I'm not entirely sure it's a bug in my nextcloud or the high-performance engine. I clarify that without configuring the high performance engine, Talk works correctly but begins to degrade when there are more than 5 users

** Nextcloud Talk Configuration: **
image

Docker backend spreed logs:

2021-06-17 23:05:13.304194 I | main.go:133: Starting up version b091db000e4ec9d9a65a9d2021
ffb3780c08848a/go1.16.5 as pid 1
2021-06-17 23:05:13.306570 I | main.go:142: Using a maximum of 1 CPUs
2021-06-17 23:05:13.308774 I | natsclient.go:118: Connection established to nats://localho
st:4222 (NAKJ773MQJ6B55H5MXUISAJWQKA3YQZTQYRFOSJZGD55ZSYQ56ITIH3C)
2021-06-17 23:05:13.308911 I | hub.go:152: WARNING: The sessions hash key should be 32 or 
64 bytes but is 24 bytes
2021-06-17 23:05:13.309018 I | hub.go:169: WARNING: No shared secret has been set for inte
rnal clients.
2021-06-17 23:05:13.310040 I | backend_configuration.go:113: WARNING: All backend hostname
s are allowed, only use for development!
2021-06-17 23:05:13.310155 I | hub.go:181: Using a maximum of 8 concurrent backend connect
ions per host
2021-06-17 23:05:13.310265 I | hub.go:188: Using a timeout of 1h23m20s for backend connect
ions
2021-06-17 23:05:13.310416 I | hub.go:274: Not using GeoIP database
2021-06-17 23:05:13.318835 I | mcu_janus.go:293: Connected to Janus WebRTC Server 0.11.1 b
y Meetecho s.r.l.
2021-06-17 23:05:13.318931 I | mcu_janus.go:297: Found JANUS VideoRoom plugin 0.0.9 by Mee
techo s.r.l.
2021-06-17 23:05:13.319022 I | mcu_janus.go:303: Data channels are supported
2021-06-17 23:05:13.319087 I | mcu_janus.go:309: Full-Trickle is enabled
2021-06-17 23:05:13.319182 I | mcu_janus.go:311: Maximum bandwidth 1048576 bits/sec per pu
blishing stream
2021-06-17 23:05:13.319264 I | mcu_janus.go:312: Maximum bandwidth 2097152 bits/sec per sc
reensharing stream
2021-06-17 23:05:13.319724 I | mcu_janus.go:318: Created Janus session 5107390698667570
2021-06-17 23:05:13.322244 I | mcu_janus.go:325: Created Janus handle 4688474631247185
2021-06-17 23:05:13.322355 I | main.go:229: Using janus MCU
2021-06-17 23:05:13.322446 I | hub.go:361: Using a timeout of 10s for MCU requests
2021-06-17 23:05:13.322549 I | backend_server.go:94: Using configured TURN API key
2021-06-17 23:05:13.322629 I | backend_server.go:95: Using configured shared TURN secret
2021-06-17 23:05:13.322712 I | backend_server.go:97: Adding "turn:localhost:3478?transport
=udp" as TURN server
2021-06-17 23:05:13.322791 I | backend_server.go:97: Adding "turn:localhost:3478?transport
=tcp" as TURN server
2021-06-17 23:05:13.322875 I | backend_server.go:104: No IPs configured for the stats endp
oint, only allowing access from 127.0.0.1
2021-06-17 23:05:13.323139 I | main.go:305: Listening on 127.0.0.1:8080

Docker Janus Logs:


Janus commit: not-a-git-repo
Compiled on:  Thu Jun 17 22:37:33 UTC 2021

Logger plugins folder: /usr/local/lib/janus/loggers
[WARN] Couldn't access logger plugins folder...
---------------------------------------------------
  Starting Meetecho Janus (WebRTC Server) v0.11.1
---------------------------------------------------

Checking command line arguments...
Debug/log level is 4
Debug/log timestamps are disabled
Debug/log colors are enabled
Adding 'vmnet' to the ICE ignore list...
Using 172.26.10.217 as local IP...
Token based authentication disabled
Initializing recorder code
Initializing ICE stuff (Full mode, ICE-TCP candidates disabled, full-trickle, IPv6 support disabled)
TURN REST API backend: (disabled)
[WARN] Janus is deployed on a private address (172.26.10.217) but you didn't specify any STUN server! Expect trouble if this is supposed to work over the internet and not 
just in a LAN...
Crypto: OpenSSL >= 1.1.0
No cert/key specified, autogenerating some...
Fingerprint of our certificate: 22:12:40:DA:9E:E7:87:26:03:09:6D:50:88:49:3E:ED:08:D4:F1:2C:AC:9B:5C:A0:14:6E:30:F7:C8:0C:B3:55
Event handlers support disabled
Plugins folder: /usr/local/lib/janus/plugins
Joining Janus requests handler thread
Sessions watchdog started
Loading plugin 'libjanus_voicemail.so'...
JANUS VoiceMail plugin initialized!
Loading plugin 'libjanus_textroom.so'...
JANUS TextRoom plugin initialized!
Loading plugin 'libjanus_nosip.so'...
JANUS NoSIP plugin initialized!
Loading plugin 'libjanus_videoroom.so'...
JANUS VideoRoom plugin initialized!
Loading plugin 'libjanus_videocall.so'...
JANUS VideoCall plugin initialized!
Loading plugin 'libjanus_streaming.so'...
JANUS Streaming plugin initialized!
Loading plugin 'libjanus_recordplay.so'...
JANUS Record&Play plugin initialized!
Loading plugin 'libjanus_echotest.so'...
JANUS EchoTest plugin initialized!
Transport plugins folder: /usr/local/lib/janus/transports
Loading transport plugin 'libjanus_pfunix.so'...
[WARN] No Unix Sockets server started, giving up...
[WARN] The 'janus.transport.pfunix' plugin could not be initialized
Loading transport plugin 'libjanus_websockets.so'...
[WARN] libwebsockets has been built without IPv6 support, will bind to IPv4 only
libwebsockets logging: 0
WebSockets server started (port 8188)...
JANUS WebSockets transport plugin initialized!
WebSockets thread started
Creating new session: 5107390698667570; 0x7ff32f5618a0
Creating new handle in session 5107390698667570: 4688474631247185; 0x7ff32f5618a0 0x7ff32f354820

Error on Nexcloud:
image

Browser console log:

DOMException: Failed to construct 'WebSocket': The URL 'signaling.mydomain.com/standalone-signaling/spreed' is invalid.
    at g.m.Standalone.connect (https://mynextcloud/custom_apps/spreed/js/talk.js?v=3d718cb8-114:1098:9957)

STUN Server Returns LAN IP

Hello,

Environment
Server/Host OS: Centos8-Stream
NC: 21.0.0

Docker Container Versions
nextcloud-spreed-signaling_spreedbackend: latest
nextcloud-spreed-signaling_coturn: latest
nextcloud-spreed-signaling_janus: latest
nats: 2.1
alpine: 3.11

Issue
I'm running a dedicated signaling server in my LAN. The signaling server is NAT'd behind a gateway, and the gateway is reachable by public IPv4 (e.g., 8.7.6.5). The signaling server itself only has a LAN IPv4 (e.g., 10.0.0.11). The server is not functioning correctly, as client calls never connect.

Client side firewall logs show that clients are trying to connect to the signaling server's LAN IP (10.0.0.11) rather than the publicly routable IP (8.7.6.5). Thus, the issue is that the signaling server is telling clients it's (LAN) IPv4 address rather than the public/gateway IP, which makes sense given that the signaling server has no awareness of the public IPv4.

Attempted Resolution
I attempted to resolve this by creating /etc/coturn/turnserver.conf in the coturn Docker image. I set external-ip= to the public IPv4, and I restarted the Docker container. This had no effect on client behavior, and they continued trying to connect to the LAN IP.

Perhaps I'm overlooking a setting in the signaling server.conf or elsewhere? Oddly, the signaling server was working, until I updated the server and made some changes to the network environment.

Thanks so much, and I really appreciate the work that has gone into this incredible setup.

~Scott

JSON will be translated as ByteArray on entering a VideoCall

Hello,

I use the Docker-Compose Environment to run the Spreed-Backend for Nextcloud Talk. My setup is configured like the documentation and seems to be correct because every Service starts and connect to each other. The proxy runs on Apache and seems even okay because the Talk Clients connect to the Spreed-Backend. My problem is after I start a VideoCall the Spreed-Backend report the following and no Video of the opponent User is visible:

spreedbackend_1  | mcu_janus.go:586: Attached video as publisher 5332286782901507 to plugin janus.plugin.videoroom in session 6674277710715842
janus_1          | Creating new handle in session 6674277710715842: 5332286782901507; 0x55e4321d3180 0x55e432238dc0
spreedbackend_1  | mcu_janus.go:619: Created room 7425501481227170 {janus.plugin.videoroom map[permanent:false room:7425501481227170 videoroom:created]}
spreedbackend_1  | mcu_janus.go:677: Could not publish "created" event for publisher 6IHPDBCj[...]DYx: json: error calling MarshalJSON for type *signaling.NatsMessage: unexpected end of JSON input
spreedbackend_1  | clientsession.go:581: Publishing video as 5332286782901507 for session 6IHPDBCj[...]DYx
janus_1          | [5332286782901507] Creating ICE agent (ICE Full mode, controlled)
spreedbackend_1  | mcu_janus.go:711: Publisher 5332286782901507 received connected
spreedbackend_1  | mcu_janus.go:713: Could not publish "connected" event for publisher 6IHPDBCj[...]DYx: json: error calling MarshalJSON for type *signaling.NatsMessage: unexpected end of JSON input
janus_1          | [5332286782901507] The DTLS handshake has been completed
janus_1          | [janus.plugin.videoroom-0x55e432238b60] WebRTC media is now available
spreedbackend_1  | backend_server.go:584: Error processing {"type":"message","message":{"data":{"type":"chat","chat":{"refresh":true}}}} for room g2t3t5kn: json: error calling MarshalJSON for type *signaling.NatsMessage: unexpected end of JSON input
spreedbackend_1  | backend_server.go:584: Error processing {"type":"incall","incall":{"incall":7,"changed":[{"inCall":7,"lastPing":1600782425,"sessionId":"SESSIONID","participantType":3,"userId":"admin"}],"users":[{"inCall":7,"lastPing":1600782425,"sessionId":"SESSIONID","participantType":3,"userId":"admin"},{"inCall":7,"lastPing":1600782425,"sessionId":"SESSIONID","participantType":1,"userId":"mulrich"}]}} for room g2t3t5kn: json: error calling MarshalJSON for type *signaling.NatsMessage: unexpected end of JSON input

can someone give me a hint where the problem might be or what information would be important for further analysis.

Greetings

Docker image

Would it be possible to build a Docker image for this performance backend ?

bypass cert verification signaling --> janus

Janus ws config

`#

general :
{
json = "indented";
ws = "yes";
ws_port = "8188";
ws_ip = "127.0.0.1";
wss = "yes";
wss_ip = "127.0.0.1"
wss_port = "8189"
};
admin :
{
admin_ws = "no";
admin_ws_port = "7188";
admin_wss = "no";
};
certificates :
{
cert_pem = "/etc/ssl/certs/ssl-cert-snakeoil.pem";
cert_key = "/etc/ssl/private/ssl-cert-snakeoil.key";
};
`


[mcu]
# The type of the MCU to use. Currently only "janus" and "proxy" are supported.
# Leave empty to disable MCU functionality.
#type =

type = janus
url = wss://127.0.0.1:8189
skipverify = true


log
Could not initialize janus MCU (x509: cannot validate certificate for 127.0.0.1 because it doesn't contain any IP SANs) will retry in 16s

It's possible to disable cert verification ?

Endless loop of renew sessions with Talk 9.0.3

I got a working nats, Janus, coturn, spreed signaling setup with Nextcloud 18 and Talk 8.x.
I turned it off because there was no need atm.

Now on Nextcloud 19 und Talk 9, I turned it on again and it seems that it doesn't work anymore.

The video call sessions are reloading, reloading, reloading ...so all people left and join and left and join ...
So it is unuseable.

I'm not sure if it is related to Janus (0.9.2 in the docker setup of this repository). Because in the latest 9.0.3 Talk update, it is mentioned to work with Janu 0.10.4
https://github.com/nextcloud/spreed/releases/tag/v9.0.3

Janus logs

...
[WARN] Subscriber is using the legacy 'listener' ptype
[8937183532198227] Creating ICE agent (ICE Full mode, controlling)
Creating new handle in session 8379557828949997: 1992690372055633; 0x5646f2b3d1a0 0x5646f2b868c0
Creating new handle in session 8379557828949997: 6144606228744884; 0x5646f2b3d1a0 0x5646f2b92ae0
[1992690372055633] Creating ICE agent (ICE Full mode, controlled)
[WARN] Subscriber is using the legacy 'listener' ptype
[ERR] [plugins/janus_videoroom.c:janus_videoroom_handler:5710] No such feed (1)
Detaching handle from JANUS VideoRoom plugin; 0x5646f2b92ae0 0x5646f2b55e20 0x5646f2b92ae0 0x5646f2b6a820
...

spreed signaling

2020/08/25 17:57:53.896305 hub.go:1306: Could not send MCU message &{Type:requestoffer Sid: RoomType:video Payload:map[]} for session bY71yyYqeklh4F-Z_3jmCmjNeuCV4yj-cRaMiSWpCMp8QXVqbHdnTWRSSnJidTdlTDc1bkJ0UGJFRVZvMnhla3prRjVfdTBXeEwzRzlEVUdSLUhZSENYV0tTM2RpQVh0S2ZYWnNxYW9GMGVxR1RhN0tQZDRzd2M5Z0NiSFZyT0ItV0RnVVZHbkNEWW9JVER1X0VEQ0FFc2xNb3pUTUFfMnNXYjFqSFFCWGVPbGV8NjUyODczODk1MQ== to 6aKQdqqv0n-Hz1ymBvgocqBPXojeukSqMAmNHX0O-Vh8eGlnR2I0UEozN29iTEptTjEza1AyY0d6YlNaeHBESklQTnlLaUJxNVJKMThNVFI4SWc3SDVQclJIaXlxOUhGUmR6NHlha0ZEVWE5aS1qZDZIQnNqNlgyUTZtX2hqelE2Sk1QUFVZdWlxUGdvNWt5d0haWjhCbm45TFRWc3hQM080RUhVMWltTmlXaTV8MzYyODczODk1MQ==: context deadline exceeded

Writes credentials to log

When starting the server I find these entries in the syslog:

May 23 09:57:42 signaling[777636]: 2020/05/23 09:57:42.988578 backend_server.go:91: Using "<mykey>" as TURN API key
May 23 09:57:42 signaling[777636]: 2020/05/23 09:57:42.988599 backend_server.go:92: Using "<mysecret>" as shared TURN secret

I don't think the secrets should be revealed there.

[Question] GuzzleHttp\Exception\ClientException: Client error: `POST https://signaling.<my_server>/signaling/api/v1/room/waa4ph5a` resulted in a `403 Forbidden` response: Authentication check failed

I'm trying the signaling server with my (working, private, non-commercial) nextcloud instance in the internet. I mainly followed this guide - but my installation is completely podman-compose based.

I'm able to run the suggested tests on the signaling server:

$ curl -i https://<myserver>/signaling/api/v1/welcome
HTTP/2 200 
server: nginx/1.21.1
date: Thu, 05 Aug 2021 13:16:30 GMT
content-type: application/json; charset=utf-8
content-length: 94
referrer-policy: no-referrer
x-content-type-options: nosniff
x-download-options: noopen
x-frame-options: SAMEORIGIN
x-permitted-cross-domain-policies: none
x-robots-tag: none
x-xss-protection: 1; mode=block
strict-transport-security: max-age=15768000; includeSubDomains; preload;

{"nextcloud-spreed-signaling":"Welcome","version":"64faa1c4990347424583c8626255e408df6bf793"}

$ curl -i http://signaling.<my_server>:8080/api/v1/welcome
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Server: nextcloud-spreed-signaling/64faa1c4990347424583c8626255e408df6bf793
Date: Thu, 05 Aug 2021 13:15:36 GMT
Content-Length: 94

{"nextcloud-spreed-signaling":"Welcome","version":"64faa1c4990347424583c8626255e408df6bf793"}

Where https://<myserver>/signaling is on nginx with reverse proxy configuration like suggested, and http://signaling.<my_server>:8080 is the exposed port of the (podman-running) signaling container. As you could see, nginx is configured to allow http/2 as well.

However, I always encounter a 'Fehler beim Aufbau der Signaling-Verbindung. Versuche erneutโ€ฆ' message in talk on nextcloud, and I (sometimes) find the following in the logs ('Protokollierung'):

GuzzleHttp\Exception\ClientException: Client error: `POST https://<my_server>/signaling/api/v1/room/waa4ph5a` resulted in a `403 Forbidden` response: Authentication check failed 

Is there any way to get more debug info on what is running wrong? (I already looked into the nginx-debug logs but could not find anything remarkable.) Is there a way to switch debugging on in the signaling server?

Signaling Backend crashes if third user joins with safari browser

Hey!

first: thanks for this cool piece of software and all your work, this is such a great integration into nextcloud!

I started to setup my own hpb on my personal nextcloud and found that the signaling go service is crashing, if a user connects with a safari browser:

2021-06-07T11:49:29.127552297Z fatal error: sync: unlock of unlocked mutex
2021-06-07T11:49:29.129706940Z 
2021-06-07T11:49:29.129758853Z goroutine 672 [running]:
2021-06-07T11:49:29.129776237Z runtime.throw(0xd8caab, 0x1e)
2021-06-07T11:49:29.129791312Z 	/usr/local/go/src/runtime/panic.go:1117 +0x72 fp=0xc0005867c8 sp=0xc000586798 pc=0x439c72
2021-06-07T11:49:29.129806474Z sync.throw(0xd8caab, 0x1e)
2021-06-07T11:49:29.129819955Z 	/usr/local/go/src/runtime/panic.go:1103 +0x35 fp=0xc0005867e8 sp=0xc0005867c8 pc=0x46e735
2021-06-07T11:49:29.129834939Z sync.(*Mutex).unlockSlow(0xc0003029d8, 0xffffffff)
2021-06-07T11:49:29.129851902Z 	/usr/local/go/src/sync/mutex.go:196 +0xd8 fp=0xc000586810 sp=0xc0005867e8 pc=0x48b018
2021-06-07T11:49:29.129865016Z sync.(*Mutex).Unlock(0xc0003029d8)
2021-06-07T11:49:29.129877050Z 	/usr/local/go/src/sync/mutex.go:190 +0x48 fp=0xc000586830 sp=0xc000586810 pc=0x48af28
2021-06-07T11:49:29.129888704Z runtime.call16(0x0, 0xdb7810, 0xc0004846d8, 0x800000008)
2021-06-07T11:49:29.129902807Z 	/usr/local/go/src/runtime/asm_amd64.s:550 +0x3e fp=0xc000586850 sp=0xc000586830 pc=0x471d5e
2021-06-07T11:49:29.129916692Z runtime.reflectcallSave(0xc000586988, 0xdb7810, 0xc0004846d8, 0x7f0f00000008)
2021-06-07T11:49:29.129933020Z 	/usr/local/go/src/runtime/panic.go:877 +0x58 fp=0xc000586880 sp=0xc000586850 pc=0x439238
2021-06-07T11:49:29.129947547Z runtime.runOpenDeferFrame(0xc0005c1b00, 0xc000484690, 0x0)
2021-06-07T11:49:29.129962488Z 	/usr/local/go/src/runtime/panic.go:851 +0x62d fp=0xc000586908 sp=0xc000586880 pc=0x438f0d
2021-06-07T11:49:29.129998314Z panic(0xc3c380, 0xe62030)
2021-06-07T11:49:29.130036282Z 	/usr/local/go/src/runtime/panic.go:965 +0x1b9 fp=0xc0005869d0 sp=0xc000586908 pc=0x4394b9
2021-06-07T11:49:29.130061420Z github.com/strukturag/nextcloud-spreed-signaling.(*Notifier).NewWaiter(0xc000420070, 0xc0002b7cc0, 0x12e, 0x0)
2021-06-07T11:49:29.130107417Z 	/workdir/notifier.go:55 +0x225 fp=0xc000586a38 sp=0xc0005869d0 pc=0xb9ec05
2021-06-07T11:49:29.130135087Z github.com/strukturag/nextcloud-spreed-signaling.(*mcuJanus).getPublisher(0xc000420000, 0xe83478, 0xc000396de0, 0xc0002b77c0, 0x128, 0xc000038ce0, 0x5, 0x0, 0x0, 0x0)
2021-06-07T11:49:29.130188591Z 	/workdir/mcu_janus.go:826 +0x1b0 fp=0xc000586ae8 sp=0xc000586a38 pc=0xb8b930
2021-06-07T11:49:29.130272398Z github.com/strukturag/nextcloud-spreed-signaling.(*mcuJanus).getOrCreateSubscriberHandle(0xc000420000, 0xe83478, 0xc000396de0, 0xc0002b77c0, 0x128, 0xc000038ce0, 0x5, 0xc0002b7ca9, 0xc000586c80, 0x45a6d9, ...)
2021-06-07T11:49:29.130341311Z 	/workdir/mcu_janus.go:847 +0x8e fp=0xc000586bb0 sp=0xc000586ae8 pc=0xb8bc2e
2021-06-07T11:49:29.130501853Z github.com/strukturag/nextcloud-spreed-signaling.(*mcuJanus).NewSubscriber(0xc000420000, 0xe83478, 0xc000396de0, 0xe85038, 0xc000302900, 0xc0002b77c0, 0x128, 0xc000038ce0, 0x5, 0xc000586cd0, ...)
2021-06-07T11:49:29.130561190Z 	/workdir/mcu_janus.go:870 +0xcf fp=0xc000586c58 sp=0xc000586bb0 pc=0xb8bfaf
2021-06-07T11:49:29.130578273Z github.com/strukturag/nextcloud-spreed-signaling.(*ClientSession).GetOrCreateSubscriber(0xc000302900, 0xe83478, 0xc000396de0, 0xe89268, 0xc000420000, 0xc0002b77c0, 0x128, 0xc000038ce0, 0x5, 0x0, ...)
2021-06-07T11:49:29.130594647Z 	/workdir/clientsession.go:699 +0x22e fp=0xc000586de0 sp=0xc000586c58 pc=0xb6bcce
2021-06-07T11:49:29.130607574Z github.com/strukturag/nextcloud-spreed-signaling.(*Hub).processMcuMessage(0xc00041a000, 0xc000302900, 0xc000302900, 0xc0004845f0, 0xc0003d10c0, 0xc0003d1100)
2021-06-07T11:49:29.130703850Z 	/workdir/hub.go:1629 +0xc33 fp=0xc000586fb0 sp=0xc000586de0 pc=0xb7d853
2021-06-07T11:49:29.130741344Z runtime.goexit()
2021-06-07T11:49:29.130800437Z 	/usr/local/go/src/runtime/asm_amd64.s:1371 +0x1 fp=0xc000586fb8 sp=0xc000586fb0 pc=0x4737c1
2021-06-07T11:49:29.130818933Z created by github.com/strukturag/nextcloud-spreed-signaling.(*Hub).processMessageMsg
2021-06-07T11:49:29.130834586Z 	/workdir/hub.go:1206 +0x102c
2021-06-07T11:49:29.130848535Z 
2021-06-07T11:49:29.130860994Z goroutine 1 [chan receive, 2 minutes]:
2021-06-07T11:49:29.130877355Z main.main()
2021-06-07T11:49:29.130889794Z 	/workdir/server/main.go:325 +0xa32
2021-06-07T11:49:29.130905186Z 
2021-06-07T11:49:29.130919118Z goroutine 18 [syscall, 2 minutes]:
2021-06-07T11:49:29.130934484Z os/signal.signal_recv(0x0)
2021-06-07T11:49:29.130949960Z 	/usr/local/go/src/runtime/sigqueue.go:168 +0xa5
2021-06-07T11:49:29.130963822Z os/signal.loop()
2021-06-07T11:49:29.130979201Z 	/usr/local/go/src/os/signal/signal_unix.go:23 +0x25
2021-06-07T11:49:29.130994907Z created by os/signal.Notify.func1.1
2021-06-07T11:49:29.131010253Z 	/usr/local/go/src/os/signal/signal.go:151 +0x45
2021-06-07T11:49:29.131023169Z 
2021-06-07T11:49:29.131038324Z goroutine 35 [IO wait]:
2021-06-07T11:49:29.131070595Z internal/poll.runtime_pollWait(0x7f0fb6679098, 0x72, 0xffffffffffffffff)
2021-06-07T11:49:29.131140197Z 	/usr/local/go/src/runtime/netpoll.go:222 +0x55
2021-06-07T11:49:29.131158850Z internal/poll.(*pollDesc).wait(0xc0003d8098, 0x72, 0x8000, 0x8000, 0xffffffffffffffff)
2021-06-07T11:49:29.131174326Z 	/usr/local/go/src/internal/poll/fd_poll_runtime.go:87 +0x45
2021-06-07T11:49:29.131188395Z internal/poll.(*pollDesc).waitRead(...)
2021-06-07T11:49:29.131204392Z 	/usr/local/go/src/internal/poll/fd_poll_runtime.go:92
2021-06-07T11:49:29.131218932Z internal/poll.(*FD).Read(0xc0003d8080, 0xc0002c8000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
2021-06-07T11:49:29.131233265Z 	/usr/local/go/src/internal/poll/fd_unix.go:166 +0x1d5
2021-06-07T11:49:29.131343076Z net.(*netFD).Read(0xc0003d8080, 0xc0002c8000, 0x8000, 0x8000, 0x35a9, 0x0, 0xc000283900)
2021-06-07T11:49:29.131410101Z 	/usr/local/go/src/net/fd_posix.go:55 +0x4f
2021-06-07T11:49:29.131431481Z net.(*conn).Read(0xc0003a0028, 0xc0002c8000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
2021-06-07T11:49:29.131445744Z 	/usr/local/go/src/net/net.go:183 +0x91
2021-06-07T11:49:29.131458700Z github.com/nats-io/nats%2ego.(*Conn).readLoop(0xc0003bc000)
2021-06-07T11:49:29.131473170Z 	/workdir/vendor/pkg/mod/github.com/nats-io/[email protected]/nats.go:2328 +0x11b
2021-06-07T11:49:29.131488222Z created by github.com/nats-io/nats%2ego.(*Conn).processConnectInit
2021-06-07T11:49:29.131505970Z 	/workdir/vendor/pkg/mod/github.com/nats-io/[email protected]/nats.go:1647 +0x1a7
2021-06-07T11:49:29.131521045Z 
2021-06-07T11:49:29.131534118Z goroutine 36 [chan receive]:
2021-06-07T11:49:29.131546747Z github.com/nats-io/nats%2ego.(*Conn).flusher(0xc0003bc000)
2021-06-07T11:49:29.131560339Z 	/workdir/vendor/pkg/mod/github.com/nats-io/[email protected]/nats.go:2601 +0xef
2021-06-07T11:49:29.131577816Z created by github.com/nats-io/nats%2ego.(*Conn).processConnectInit
2021-06-07T11:49:29.131593359Z 	/workdir/vendor/pkg/mod/github.com/nats-io/[email protected]/nats.go:1648 +0x1c9
2021-06-07T11:49:29.131607047Z 
2021-06-07T11:49:29.131621433Z goroutine 37 [sync.Cond.Wait, 2 minutes]:
2021-06-07T11:49:29.131633234Z sync.runtime_notifyListWait(0xc0003c0050, 0x0)
2021-06-07T11:49:29.131646324Z 	/usr/local/go/src/runtime/sema.go:513 +0xf8
2021-06-07T11:49:29.132099000Z sync.(*Cond).Wait(0xc0003c0040)
2021-06-07T11:49:29.132145999Z 	/usr/local/go/src/sync/cond.go:56 +0x99
2021-06-07T11:49:29.132164384Z github.com/nats-io/nats%2ego.(*asyncCallbacksHandler).asyncCBDispatcher(0xc0003b0040)
2021-06-07T11:49:29.132181335Z 	/workdir/vendor/pkg/mod/github.com/nats-io/[email protected]/nats.go:2251 +0x35
2021-06-07T11:49:29.132199253Z created by github.com/nats-io/nats%2ego.Options.Connect
2021-06-07T11:49:29.132214525Z 	/workdir/vendor/pkg/mod/github.com/nats-io/[email protected]/nats.go:1185 +0x226
2021-06-07T11:49:29.132230424Z 
2021-06-07T11:49:29.132244573Z goroutine 40 [select]:
2021-06-07T11:49:29.132259805Z github.com/strukturag/nextcloud-spreed-signaling.(*JanusGateway).ping(0xc0003d6640)
2021-06-07T11:49:29.132275473Z 	/workdir/janus_client.go:372 +0xdf
2021-06-07T11:49:29.132290377Z created by github.com/strukturag/nextcloud-spreed-signaling.NewJanusGateway
2021-06-07T11:49:29.132306104Z 	/workdir/janus_client.go:282 +0x17b
2021-06-07T11:49:29.132321343Z 
2021-06-07T11:49:29.132335806Z goroutine 41 [IO wait]:
2021-06-07T11:49:29.132351027Z internal/poll.runtime_pollWait(0x7f0fb6678fb0, 0x72, 0xffffffffffffffff)
2021-06-07T11:49:29.132404605Z 	/usr/local/go/src/runtime/netpoll.go:222 +0x55
2021-06-07T11:49:29.132422690Z internal/poll.(*pollDesc).wait(0xc0003d8318, 0x72, 0x1000, 0x1000, 0xffffffffffffffff)
2021-06-07T11:49:29.132438301Z 	/usr/local/go/src/internal/poll/fd_poll_runtime.go:87 +0x45
2021-06-07T11:49:29.132490327Z internal/poll.(*pollDesc).waitRead(...)
2021-06-07T11:49:29.132507837Z 	/usr/local/go/src/internal/poll/fd_poll_runtime.go:92
2021-06-07T11:49:29.132523863Z internal/poll.(*FD).Read(0xc0003d8300, 0xc000422000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
2021-06-07T11:49:29.132538894Z 	/usr/local/go/src/internal/poll/fd_unix.go:166 +0x1d5
2021-06-07T11:49:29.132554603Z net.(*netFD).Read(0xc0003d8300, 0xc000422000, 0x1000, 0x1000, 0x7f0fdd385f18, 0x89, 0x19)
2021-06-07T11:49:29.132570119Z 	/usr/local/go/src/net/fd_posix.go:55 +0x4f
2021-06-07T11:49:29.132585219Z net.(*conn).Read(0xc0003a00a0, 0xc000422000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
2021-06-07T11:49:29.132601067Z 	/usr/local/go/src/net/net.go:183 +0x91
2021-06-07T11:49:29.132616379Z bufio.(*Reader).fill(0xc0003a2540)
2021-06-07T11:49:29.132638145Z 	/usr/local/go/src/bufio/bufio.go:101 +0x108
2021-06-07T11:49:29.132654164Z bufio.(*Reader).Peek(0xc0003a2540, 0x2, 0x1, 0xc0000386c8, 0xbc9c71, 0xc000038690, 0xcb8660)
2021-06-07T11:49:29.132670059Z 	/usr/local/go/src/bufio/bufio.go:139 +0x4f
2021-06-07T11:49:29.132684762Z github.com/gorilla/websocket.(*Conn).read(0xc000412420, 0x2, 0x2, 0xc000351d48, 0x78653a, 0xc000506f70, 0xa)
2021-06-07T11:49:29.132700978Z 	/workdir/vendor/pkg/mod/github.com/gorilla/[email protected]/conn.go:370 +0x46
2021-06-07T11:49:29.132716793Z github.com/gorilla/websocket.(*Conn).advanceFrame(0xc000412420, 0x0, 0x0, 0xc000351e78)
2021-06-07T11:49:29.132769471Z 	/workdir/vendor/pkg/mod/github.com/gorilla/[email protected]/conn.go:798 +0x5c
2021-06-07T11:49:29.132793808Z github.com/gorilla/websocket.(*Conn).NextReader(0xc000412420, 0xc00043fdd0, 0xc000024000, 0xc144a0, 0xc000038690, 0x1)
2021-06-07T11:49:29.132810748Z 	/workdir/vendor/pkg/mod/github.com/gorilla/[email protected]/conn.go:980 +0x8f
2021-06-07T11:49:29.132826804Z github.com/strukturag/nextcloud-spreed-signaling.(*JanusGateway).recv(0xc0003d6640)
2021-06-07T11:49:29.132841678Z 	/workdir/janus_client.go:406 +0xc8
2021-06-07T11:49:29.132857128Z created by github.com/strukturag/nextcloud-spreed-signaling.NewJanusGateway
2021-06-07T11:49:29.132872845Z 	/workdir/janus_client.go:283 +0x19d
2021-06-07T11:49:29.132887716Z 
2021-06-07T11:49:29.132902889Z goroutine 7 [select]:
2021-06-07T11:49:29.132917290Z github.com/strukturag/nextcloud-spreed-signaling.(*mcuJanus).run(0xc000420000)
2021-06-07T11:49:29.132938571Z 	/workdir/mcu_janus.go:351 +0xdb
2021-06-07T11:49:29.132954146Z created by github.com/strukturag/nextcloud-spreed-signaling.(*mcuJanus).Start
2021-06-07T11:49:29.132983716Z 	/workdir/mcu_janus.go:327 +0x753
2021-06-07T11:49:29.132999020Z 
2021-06-07T11:49:29.133013866Z goroutine 154 [chan receive]:
2021-06-07T11:49:29.133029247Z github.com/strukturag/nextcloud-spreed-signaling.(*Client).processMessages(0xc0003beb40)
2021-06-07T11:49:29.133044766Z 	/workdir/client.go:319 +0xce
2021-06-07T11:49:29.133065655Z created by github.com/strukturag/nextcloud-spreed-signaling.(*Client).ReadPump
2021-06-07T11:49:29.133108047Z 	/workdir/client.go:265 +0x173
2021-06-07T11:49:29.133125036Z 
2021-06-07T11:49:29.133139808Z goroutine 8 [select]:
2021-06-07T11:49:29.133154511Z github.com/strukturag/nextcloud-spreed-signaling.(*Hub).Run(0xc00041a000)
2021-06-07T11:49:29.133176493Z 	/workdir/hub.go:415 +0x1e5
2021-06-07T11:49:29.133192628Z created by main.main
2021-06-07T11:49:29.133207208Z 	/workdir/server/main.go:234 +0x790
2021-06-07T11:49:29.133222253Z 
2021-06-07T11:49:29.133236311Z goroutine 9 [IO wait]:
2021-06-07T11:49:29.133251273Z internal/poll.runtime_pollWait(0x7f0fb6678ec8, 0x72, 0x0)
2021-06-07T11:49:29.133265882Z 	/usr/local/go/src/runtime/netpoll.go:222 +0x55
2021-06-07T11:49:29.133281263Z internal/poll.(*pollDesc).wait(0xc0000eea18, 0x72, 0x0, 0x0, 0xd79042)
2021-06-07T11:49:29.133295955Z 	/usr/local/go/src/internal/poll/fd_poll_runtime.go:87 +0x45
2021-06-07T11:49:29.133311402Z internal/poll.(*pollDesc).waitRead(...)
2021-06-07T11:49:29.133332151Z 	/usr/local/go/src/internal/poll/fd_poll_runtime.go:92
2021-06-07T11:49:29.133348345Z internal/poll.(*FD).Accept(0xc0000eea00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
2021-06-07T11:49:29.133363457Z 	/usr/local/go/src/internal/poll/fd_unix.go:401 +0x212
2021-06-07T11:49:29.133378805Z net.(*netFD).accept(0xc0000eea00, 0xdad835042f65a87e, 0x0, 0x0)
2021-06-07T11:49:29.133394299Z 	/usr/local/go/src/net/fd_unix.go:172 +0x45
2021-06-07T11:49:29.133438616Z net.(*TCPListener).accept(0xc00000f320, 0x60be07c9, 0xc00006bdd0, 0x4dc826)
2021-06-07T11:49:29.133461476Z 	/usr/local/go/src/net/tcpsock_posix.go:139 +0x32
2021-06-07T11:49:29.133477648Z net.(*TCPListener).Accept(0xc00000f320, 0xc00006be20, 0x18, 0xc0002be600, 0x6ced3b)
2021-06-07T11:49:29.133493095Z 	/usr/local/go/src/net/tcpsock.go:261 +0x65
2021-06-07T11:49:29.133508057Z net/http.(*Server).Serve(0xc0001382a0, 0xe818b8, 0xc00000f320, 0x0, 0x0)
2021-06-07T11:49:29.133523543Z 	/usr/local/go/src/net/http/server.go:2981 +0x285
2021-06-07T11:49:29.133539056Z main.main.func3(0xc00040e000, 0xc000392051, 0xe, 0xc00029aaf0, 0xc00029aaf8, 0xc000392051, 0xe)
2021-06-07T11:49:29.133554794Z 	/workdir/server/main.go:317 +0x1d9
2021-06-07T11:49:29.133569450Z created by main.main
2021-06-07T11:49:29.133603470Z 	/workdir/server/main.go:304 +0xf5e
2021-06-07T11:49:29.133619318Z 
2021-06-07T11:49:29.133634374Z goroutine 56 [IO wait]:
2021-06-07T11:49:29.133648790Z internal/poll.runtime_pollWait(0x7f0fb6678de0, 0x72, 0xffffffffffffffff)
2021-06-07T11:49:29.133664313Z 	/usr/local/go/src/runtime/netpoll.go:222 +0x55
2021-06-07T11:49:29.133679861Z internal/poll.(*pollDesc).wait(0xc0004b0318, 0x72, 0x1000, 0x1000, 0xffffffffffffffff)
2021-06-07T11:49:29.133721944Z 	/usr/local/go/src/internal/poll/fd_poll_runtime.go:87 +0x45
2021-06-07T11:49:29.133745318Z internal/poll.(*pollDesc).waitRead(...)
2021-06-07T11:49:29.133761250Z 	/usr/local/go/src/internal/poll/fd_poll_runtime.go:92
2021-06-07T11:49:29.133776933Z internal/poll.(*FD).Read(0xc0004b0300, 0xc0004ea000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
2021-06-07T11:49:29.133791801Z 	/usr/local/go/src/internal/poll/fd_unix.go:166 +0x1d5
2021-06-07T11:49:29.133807120Z net.(*netFD).Read(0xc0004b0300, 0xc0004ea000, 0x1000, 0x1000, 0x1ae, 0x0, 0x0)
2021-06-07T11:49:29.133823190Z 	/usr/local/go/src/net/fd_posix.go:55 +0x4f
2021-06-07T11:49:29.133837929Z net.(*conn).Read(0xc000486068, 0xc0004ea000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
2021-06-07T11:49:29.133853208Z 	/usr/local/go/src/net/net.go:183 +0x91
2021-06-07T11:49:29.133868075Z bufio.(*Reader).fill(0xc000480540)
2021-06-07T11:49:29.133890578Z 	/usr/local/go/src/bufio/bufio.go:101 +0x108
2021-06-07T11:49:29.133906039Z bufio.(*Reader).Peek(0xc000480540, 0x2, 0x4, 0x0, 0x0, 0x0, 0x0)
2021-06-07T11:49:29.133959031Z 	/usr/local/go/src/bufio/bufio.go:139 +0x4f
2021-06-07T11:49:29.133976726Z github.com/gorilla/websocket.(*Conn).read(0xc000492580, 0x2, 0xdb7638, 0xc68e40, 0x7f0fb6678ec0, 0x7b, 0xc9e801)
2021-06-07T11:49:29.134004766Z 	/workdir/vendor/pkg/mod/github.com/gorilla/[email protected]/conn.go:370 +0x46
2021-06-07T11:49:29.134021095Z github.com/gorilla/websocket.(*Conn).advanceFrame(0xc000492580, 0x0, 0x0, 0x132d360)
2021-06-07T11:49:29.134036840Z 	/workdir/vendor/pkg/mod/github.com/gorilla/[email protected]/conn.go:798 +0x5c
2021-06-07T11:49:29.134052338Z github.com/gorilla/websocket.(*Conn).NextReader(0xc000492580, 0xc0279fe14795f25a, 0x2eb137f6d3, 0x132d360, 0x0, 0x0)
2021-06-07T11:49:29.134067949Z 	/workdir/vendor/pkg/mod/github.com/gorilla/[email protected]/conn.go:980 +0x8f
2021-06-07T11:49:29.134082732Z github.com/strukturag/nextcloud-spreed-signaling.(*Client).ReadPump(0xc00049c900)
2021-06-07T11:49:29.134098495Z 	/workdir/client.go:269 +0x1d4
2021-06-07T11:49:29.134113654Z github.com/strukturag/nextcloud-spreed-signaling.(*Hub).serveWs.func3(0xc00049c900, 0xc00041a000)
2021-06-07T11:49:29.134153335Z 	/workdir/hub.go:1875 +0x73
2021-06-07T11:49:29.134170185Z created by github.com/strukturag/nextcloud-spreed-signaling.(*Hub).serveWs
2021-06-07T11:49:29.134185650Z 	/workdir/hub.go:1872 +0x328
2021-06-07T11:49:29.134213955Z 
2021-06-07T11:49:29.134228462Z goroutine 55 [select]:
2021-06-07T11:49:29.134243519Z github.com/strukturag/nextcloud-spreed-signaling.(*Client).WritePump(0xc00049c900)
2021-06-07T11:49:29.134258816Z 	/workdir/client.go:460 +0xdb
2021-06-07T11:49:29.134273803Z github.com/strukturag/nextcloud-spreed-signaling.(*Hub).serveWs.func2(0xc00049c900, 0xc00041a000)
2021-06-07T11:49:29.134289104Z 	/workdir/hub.go:1870 +0x73
2021-06-07T11:49:29.134303993Z created by github.com/strukturag/nextcloud-spreed-signaling.(*Hub).serveWs
2021-06-07T11:49:29.134319323Z 	/workdir/hub.go:1867 +0x2f9
2021-06-07T11:49:29.134333836Z 
2021-06-07T11:49:29.134348281Z goroutine 422 [select]:
2021-06-07T11:49:29.134362827Z github.com/strukturag/nextcloud-spreed-signaling.(*mcuJanusClient).run(0xc0003cc280, 0xc0004fe500, 0xc000081490)
2021-06-07T11:49:29.134378588Z 	/workdir/mcu_janus.go:483 +0xcf
2021-06-07T11:49:29.134409342Z created by github.com/strukturag/nextcloud-spreed-signaling.(*mcuJanus).NewSubscriber
2021-06-07T11:49:29.134426254Z 	/workdir/mcu_janus.go:897 +0x3cd
2021-06-07T11:49:29.134441442Z 
2021-06-07T11:49:29.134455307Z goroutine 57 [chan receive]:
2021-06-07T11:49:29.134469882Z github.com/strukturag/nextcloud-spreed-signaling.(*Client).processMessages(0xc00049c900)
2021-06-07T11:49:29.134485223Z 	/workdir/client.go:319 +0xce
2021-06-07T11:49:29.134499780Z created by github.com/strukturag/nextcloud-spreed-signaling.(*Client).ReadPump
2021-06-07T11:49:29.134515369Z 	/workdir/client.go:265 +0x173
2021-06-07T11:49:29.134530674Z 
2021-06-07T11:49:29.134544579Z goroutine 77 [select]:
2021-06-07T11:49:29.134559650Z github.com/strukturag/nextcloud-spreed-signaling.(*ClientSession).run(0xc000302900)
2021-06-07T11:49:29.134574535Z 	/workdir/clientsession.go:265 +0xa9
2021-06-07T11:49:29.134589829Z created by github.com/strukturag/nextcloud-spreed-signaling.NewClientSession
2021-06-07T11:49:29.134605283Z 	/workdir/clientsession.go:139 +0x325
2021-06-07T11:49:29.134620562Z 
2021-06-07T11:49:29.134635054Z goroutine 75 [IO wait]:
2021-06-07T11:49:29.134649407Z internal/poll.runtime_pollWait(0x7f0fb6678cf8, 0x72, 0xffffffffffffffff)
2021-06-07T11:49:29.134665141Z 	/usr/local/go/src/runtime/netpoll.go:222 +0x55
2021-06-07T11:49:29.134709783Z internal/poll.(*pollDesc).wait(0xc0000eec18, 0x72, 0x1400, 0x142a, 0xffffffffffffffff)
2021-06-07T11:49:29.134727030Z 	/usr/local/go/src/internal/poll/fd_poll_runtime.go:87 +0x45
2021-06-07T11:49:29.134742768Z internal/poll.(*pollDesc).waitRead(...)
2021-06-07T11:49:29.134757318Z 	/usr/local/go/src/internal/poll/fd_poll_runtime.go:92
2021-06-07T11:49:29.134772667Z internal/poll.(*FD).Read(0xc0000eec00, 0xc00050c000, 0x142a, 0x142a, 0x0, 0x0, 0x0)
2021-06-07T11:49:29.134816838Z 	/usr/local/go/src/internal/poll/fd_unix.go:166 +0x1d5
2021-06-07T11:49:29.134833232Z net.(*netFD).Read(0xc0000eec00, 0xc00050c000, 0x142a, 0x142a, 0x141d, 0xc0001c7a20, 0xd)
2021-06-07T11:49:29.134848701Z 	/usr/local/go/src/net/fd_posix.go:55 +0x4f
2021-06-07T11:49:29.134863878Z net.(*conn).Read(0xc000011918, 0xc00050c000, 0x142a, 0x142a, 0x0, 0x0, 0x0)
2021-06-07T11:49:29.134879124Z 	/usr/local/go/src/net/net.go:183 +0x91
2021-06-07T11:49:29.134894024Z crypto/tls.(*atLeastReader).Read(0xc0003c2918, 0xc00050c000, 0x142a, 0x142a, 0xc00048f9f8, 0xc000380000, 0x0)
2021-06-07T11:49:29.134940473Z 	/usr/local/go/src/crypto/tls/conn.go:776 +0x63
2021-06-07T11:49:29.134957217Z bytes.(*Buffer).ReadFrom(0xc0001c7af8, 0xe70f60, 0xc0003c2918, 0x40d5c5, 0xc89a80, 0xd4ace0)
2021-06-07T11:49:29.134972686Z 	/usr/local/go/src/bytes/buffer.go:204 +0xbe
2021-06-07T11:49:29.134987961Z crypto/tls.(*Conn).readFromUntil(0xc0001c7880, 0xe720c0, 0xc000011918, 0x5, 0xc000011918, 0x203000)
2021-06-07T11:49:29.135002879Z 	/usr/local/go/src/crypto/tls/conn.go:798 +0xf3
2021-06-07T11:49:29.135027442Z crypto/tls.(*Conn).readRecordOrCCS(0xc0001c7880, 0x0, 0x0, 0x43c99c)
2021-06-07T11:49:29.135042706Z 	/usr/local/go/src/crypto/tls/conn.go:605 +0x115
2021-06-07T11:49:29.135058175Z crypto/tls.(*Conn).readRecord(...)
2021-06-07T11:49:29.135072400Z 	/usr/local/go/src/crypto/tls/conn.go:573
2021-06-07T11:49:29.135119203Z crypto/tls.(*Conn).Read(0xc0001c7880, 0xc00027f000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
2021-06-07T11:49:29.135136104Z 	/usr/local/go/src/crypto/tls/conn.go:1276 +0x165
2021-06-07T11:49:29.135151682Z net/http.(*persistConn).Read(0xc0001d9320, 0xc00027f000, 0x1000, 0x1000, 0xc00008c7e0, 0xc00048fd40, 0x4073f5)
2021-06-07T11:49:29.135167183Z 	/usr/local/go/src/net/http/transport.go:1922 +0x77
2021-06-07T11:49:29.135182262Z bufio.(*Reader).fill(0xc000481680)
2021-06-07T11:49:29.135196516Z 	/usr/local/go/src/bufio/bufio.go:101 +0x108
2021-06-07T11:49:29.135212091Z bufio.(*Reader).Peek(0xc000481680, 0x1, 0x0, 0x1, 0x4, 0x1, 0x3)
2021-06-07T11:49:29.135227151Z 	/usr/local/go/src/bufio/bufio.go:139 +0x4f
2021-06-07T11:49:29.135241858Z net/http.(*persistConn).readLoop(0xc0001d9320)
2021-06-07T11:49:29.135282592Z 	/usr/local/go/src/net/http/transport.go:2083 +0x1a8
2021-06-07T11:49:29.135300156Z created by net/http.(*Transport).dialConn
2021-06-07T11:49:29.135314910Z 	/usr/local/go/src/net/http/transport.go:1743 +0xc77
2021-06-07T11:49:29.135330601Z 
2021-06-07T11:49:29.135344557Z goroutine 76 [select]:
2021-06-07T11:49:29.135359512Z net/http.(*persistConn).writeLoop(0xc0001d9320)
2021-06-07T11:49:29.135373978Z 	/usr/local/go/src/net/http/transport.go:2382 +0xf7
2021-06-07T11:49:29.135402218Z created by net/http.(*Transport).dialConn
2021-06-07T11:49:29.135454000Z 	/usr/local/go/src/net/http/transport.go:1744 +0xc9c
2021-06-07T11:49:29.135471505Z 
2021-06-07T11:49:29.135485786Z goroutine 80 [select]:
2021-06-07T11:49:29.135500824Z github.com/strukturag/nextcloud-spreed-signaling.(*Room).run(0xc0006b6630)
2021-06-07T11:49:29.135515622Z 	/workdir/room.go:154 +0xc8
2021-06-07T11:49:29.135530774Z created by github.com/strukturag/nextcloud-spreed-signaling.NewRoom
2021-06-07T11:49:29.135545276Z 	/workdir/room.go:131 +0x2b5
2021-06-07T11:49:29.135560173Z 
2021-06-07T11:49:29.135574810Z goroutine 120 [select, 2 minutes]:
2021-06-07T11:49:29.135589448Z github.com/strukturag/nextcloud-spreed-signaling.(*mcuJanusClient).run(0xc0001dd4a0, 0xc00016c7c0, 0xc000080a80)
2021-06-07T11:49:29.135638929Z 	/workdir/mcu_janus.go:483 +0xcf
2021-06-07T11:49:29.135655477Z created by github.com/strukturag/nextcloud-spreed-signaling.(*mcuJanus).NewPublisher
2021-06-07T11:49:29.135671631Z 	/workdir/mcu_janus.go:694 +0x4e5
2021-06-07T11:49:29.135687081Z 
2021-06-07T11:49:29.137010922Z goroutine 159 [select, 2 minutes]:
2021-06-07T11:49:29.137022118Z github.com/strukturag/nextcloud-spreed-signaling.(*mcuJanusClient).run(0xc00020c4d0, 0xc00016cb80, 0xc000081b90)
2021-06-07T11:49:29.137029137Z 	/workdir/mcu_janus.go:483 +0xcf
2021-06-07T11:49:29.137035607Z created by github.com/strukturag/nextcloud-spreed-signaling.(*mcuJanus).NewPublisher
2021-06-07T11:49:29.137042331Z 	/workdir/mcu_janus.go:694 +0x4e5
2021-06-07T11:49:29.137048398Z 
2021-06-07T11:49:29.137058479Z goroutine 138 [select, 2 minutes]:
2021-06-07T11:49:29.137064764Z github.com/strukturag/nextcloud-spreed-signaling.(*mcuJanusClient).run(0xc0003cc780, 0xc0004bdf80, 0xc00040b180)
2021-06-07T11:49:29.137071028Z 	/workdir/mcu_janus.go:483 +0xcf
2021-06-07T11:49:29.137076923Z created by github.com/strukturag/nextcloud-spreed-signaling.(*mcuJanus).NewSubscriber
2021-06-07T11:49:29.137083284Z 	/workdir/mcu_janus.go:897 +0x3cd
2021-06-07T11:49:29.137089240Z 
2021-06-07T11:49:29.137094940Z goroutine 152 [select]:
2021-06-07T11:49:29.137100820Z github.com/strukturag/nextcloud-spreed-signaling.(*Client).WritePump(0xc0003beb40)
2021-06-07T11:49:29.137107033Z 	/workdir/client.go:460 +0xdb
2021-06-07T11:49:29.137112973Z github.com/strukturag/nextcloud-spreed-signaling.(*Hub).serveWs.func2(0xc0003beb40, 0xc00041a000)
2021-06-07T11:49:29.137119352Z 	/workdir/hub.go:1870 +0x73
2021-06-07T11:49:29.137125273Z created by github.com/strukturag/nextcloud-spreed-signaling.(*Hub).serveWs
2021-06-07T11:49:29.137131455Z 	/workdir/hub.go:1867 +0x2f9
2021-06-07T11:49:29.137137517Z 
2021-06-07T11:49:29.137151077Z goroutine 153 [IO wait]:
2021-06-07T11:49:29.137157562Z internal/poll.runtime_pollWait(0x7f0fb6678c10, 0x72, 0xffffffffffffffff)
2021-06-07T11:49:29.137163725Z 	/usr/local/go/src/runtime/netpoll.go:222 +0x55
2021-06-07T11:49:29.137170091Z internal/poll.(*pollDesc).wait(0xc0004b1e98, 0x72, 0x1000, 0x1000, 0xffffffffffffffff)
2021-06-07T11:49:29.137176325Z 	/usr/local/go/src/internal/poll/fd_poll_runtime.go:87 +0x45
2021-06-07T11:49:29.137182362Z internal/poll.(*pollDesc).waitRead(...)
2021-06-07T11:49:29.137188412Z 	/usr/local/go/src/internal/poll/fd_poll_runtime.go:92
2021-06-07T11:49:29.137194407Z internal/poll.(*FD).Read(0xc0004b1e80, 0xc00020a000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
2021-06-07T11:49:29.137200963Z 	/usr/local/go/src/internal/poll/fd_unix.go:166 +0x1d5
2021-06-07T11:49:29.137218101Z net.(*netFD).Read(0xc0004b1e80, 0xc00020a000, 0x1000, 0x1000, 0x1ae, 0x0, 0x0)
2021-06-07T11:49:29.137225118Z 	/usr/local/go/src/net/fd_posix.go:55 +0x4f
2021-06-07T11:49:29.137231265Z net.(*conn).Read(0xc000486150, 0xc00020a000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
2021-06-07T11:49:29.137237583Z 	/usr/local/go/src/net/net.go:183 +0x91
2021-06-07T11:49:29.137251226Z bufio.(*Reader).fill(0xc0000247e0)
2021-06-07T11:49:29.137266804Z 	/usr/local/go/src/bufio/bufio.go:101 +0x108
2021-06-07T11:49:29.137273154Z bufio.(*Reader).Peek(0xc0000247e0, 0x2, 0x4, 0x0, 0x0, 0x0, 0x0)
2021-06-07T11:49:29.137293088Z 	/usr/local/go/src/bufio/bufio.go:139 +0x4f
2021-06-07T11:49:29.137317282Z github.com/gorilla/websocket.(*Conn).read(0xc0002086e0, 0x2, 0xdb7638, 0xc68e40, 0x7f0fb6678cf0, 0x1bb, 0xc9e801)
2021-06-07T11:49:29.137324114Z 	/workdir/vendor/pkg/mod/github.com/gorilla/[email protected]/conn.go:370 +0x46
2021-06-07T11:49:29.137339921Z github.com/gorilla/websocket.(*Conn).advanceFrame(0xc0002086e0, 0x0, 0x0, 0x132d360)
2021-06-07T11:49:29.137347085Z 	/workdir/vendor/pkg/mod/github.com/gorilla/[email protected]/conn.go:798 +0x5c
2021-06-07T11:49:29.137354691Z github.com/gorilla/websocket.(*Conn).NextReader(0xc0002086e0, 0xc0279fe147511d5e, 0x2eb0f321e3, 0x132d360, 0x0, 0x0)
2021-06-07T11:49:29.137361446Z 	/workdir/vendor/pkg/mod/github.com/gorilla/[email protected]/conn.go:980 +0x8f
2021-06-07T11:49:29.137367622Z github.com/strukturag/nextcloud-spreed-signaling.(*Client).ReadPump(0xc0003beb40)
2021-06-07T11:49:29.137373900Z 	/workdir/client.go:269 +0x1d4
2021-06-07T11:49:29.137379838Z github.com/strukturag/nextcloud-spreed-signaling.(*Hub).serveWs.func3(0xc0003beb40, 0xc00041a000)
2021-06-07T11:49:29.137386120Z 	/workdir/hub.go:1875 +0x73
2021-06-07T11:49:29.137392034Z created by github.com/strukturag/nextcloud-spreed-signaling.(*Hub).serveWs
2021-06-07T11:49:29.137398261Z 	/workdir/hub.go:1872 +0x328
2021-06-07T11:49:29.137408074Z 
2021-06-07T11:49:29.137414001Z goroutine 131 [select]:
2021-06-07T11:49:29.137425595Z github.com/strukturag/nextcloud-spreed-signaling.(*ClientSession).run(0xc000303080)
2021-06-07T11:49:29.137432115Z 	/workdir/clientsession.go:265 +0xa9
2021-06-07T11:49:29.137438290Z created by github.com/strukturag/nextcloud-spreed-signaling.NewClientSession
2021-06-07T11:49:29.137444301Z 	/workdir/clientsession.go:139 +0x325
2021-06-07T11:49:29.137450431Z 
2021-06-07T11:49:29.137455973Z goroutine 161 [select, 2 minutes]:
2021-06-07T11:49:29.137461846Z github.com/strukturag/nextcloud-spreed-signaling.(*mcuJanusClient).run(0xc0003c4820, 0xc0003c1a00, 0xc000081e30)
2021-06-07T11:49:29.137468274Z 	/workdir/mcu_janus.go:483 +0xcf
2021-06-07T11:49:29.137474099Z created by github.com/strukturag/nextcloud-spreed-signaling.(*mcuJanus).NewSubscriber
2021-06-07T11:49:29.137480041Z 	/workdir/mcu_janus.go:897 +0x3cd
2021-06-07T11:49:29.137486225Z 
2021-06-07T11:49:29.137491882Z goroutine 385 [select]:
2021-06-07T11:49:29.137497962Z github.com/strukturag/nextcloud-spreed-signaling.(*mcuJanusClient).run(0xc0004cc000, 0xc0003c01c0, 0xc00040a2a0)
2021-06-07T11:49:29.137504224Z 	/workdir/mcu_janus.go:483 +0xcf
2021-06-07T11:49:29.137510061Z created by github.com/strukturag/nextcloud-spreed-signaling.(*mcuJanus).NewPublisher
2021-06-07T11:49:29.137516363Z 	/workdir/mcu_janus.go:694 +0x4e5
2021-06-07T11:49:29.137522286Z 
2021-06-07T11:49:29.137536619Z goroutine 173 [IO wait]:
2021-06-07T11:49:29.137541019Z internal/poll.runtime_pollWait(0x7f0fb6678b28, 0x72, 0xffffffffffffffff)
2021-06-07T11:49:29.137545633Z 	/usr/local/go/src/runtime/netpoll.go:222 +0x55
2021-06-07T11:49:29.137550136Z internal/poll.(*pollDesc).wait(0xc00031cd18, 0x72, 0x1000, 0x1000, 0xffffffffffffffff)
2021-06-07T11:49:29.137554596Z 	/usr/local/go/src/internal/poll/fd_poll_runtime.go:87 +0x45
2021-06-07T11:49:29.137559264Z internal/poll.(*pollDesc).waitRead(...)
2021-06-07T11:49:29.137563775Z 	/usr/local/go/src/internal/poll/fd_poll_runtime.go:92
2021-06-07T11:49:29.137568150Z internal/poll.(*FD).Read(0xc00031cd00, 0xc0005e1000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
2021-06-07T11:49:29.137572195Z 	/usr/local/go/src/internal/poll/fd_unix.go:166 +0x1d5
2021-06-07T11:49:29.137576234Z net.(*netFD).Read(0xc00031cd00, 0xc0005e1000, 0x1000, 0x1000, 0x2f3, 0x0, 0x0)
2021-06-07T11:49:29.137580058Z 	/usr/local/go/src/net/fd_posix.go:55 +0x4f
2021-06-07T11:49:29.137582723Z net.(*conn).Read(0xc0004860d8, 0xc0005e1000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
2021-06-07T11:49:29.137585887Z 	/usr/local/go/src/net/net.go:183 +0x91
2021-06-07T11:49:29.137594175Z bufio.(*Reader).fill(0xc00033cea0)
2021-06-07T11:49:29.137598087Z 	/usr/local/go/src/bufio/bufio.go:101 +0x108
2021-06-07T11:49:29.137601596Z bufio.(*Reader).Peek(0xc00033cea0, 0x2, 0x4, 0x0, 0x0, 0x0, 0x0)
2021-06-07T11:49:29.137609285Z 	/usr/local/go/src/bufio/bufio.go:139 +0x4f
2021-06-07T11:49:29.137612966Z github.com/gorilla/websocket.(*Conn).read(0xc0004931e0, 0x2, 0xdb7638, 0xc68e40, 0x7f0fb6678c08, 0xf7, 0xc9e801)
2021-06-07T11:49:29.137616857Z 	/workdir/vendor/pkg/mod/github.com/gorilla/[email protected]/conn.go:370 +0x46
2021-06-07T11:49:29.137621352Z github.com/gorilla/websocket.(*Conn).advanceFrame(0xc0004931e0, 0x0, 0x0, 0x132d360)
2021-06-07T11:49:29.137625919Z 	/workdir/vendor/pkg/mod/github.com/gorilla/[email protected]/conn.go:798 +0x5c
2021-06-07T11:49:29.137630136Z github.com/gorilla/websocket.(*Conn).NextReader(0xc0004931e0, 0xc0279fe07a605519, 0x2df59731d3, 0x132d360, 0x0, 0x0)
2021-06-07T11:49:29.137634508Z 	/workdir/vendor/pkg/mod/github.com/gorilla/[email protected]/conn.go:980 +0x8f
2021-06-07T11:49:29.137638996Z github.com/strukturag/nextcloud-spreed-signaling.(*Client).ReadPump(0xc0000fe510)
2021-06-07T11:49:29.137643691Z 	/workdir/client.go:269 +0x1d4
2021-06-07T11:49:29.137648158Z github.com/strukturag/nextcloud-spreed-signaling.(*Hub).serveWs.func3(0xc0000fe510, 0xc00041a000)
2021-06-07T11:49:29.137652428Z 	/workdir/hub.go:1875 +0x73
2021-06-07T11:49:29.137656362Z created by github.com/strukturag/nextcloud-spreed-signaling.(*Hub).serveWs
2021-06-07T11:49:29.137660265Z 	/workdir/hub.go:1872 +0x328
2021-06-07T11:49:29.137664138Z 
2021-06-07T11:49:29.137667697Z goroutine 174 [chan receive]:
2021-06-07T11:49:29.137671567Z github.com/strukturag/nextcloud-spreed-signaling.(*Client).processMessages(0xc0000fe510)
2021-06-07T11:49:29.137675295Z 	/workdir/client.go:319 +0xce
2021-06-07T11:49:29.137678835Z created by github.com/strukturag/nextcloud-spreed-signaling.(*Client).ReadPump
2021-06-07T11:49:29.137685293Z 	/workdir/client.go:265 +0x173
2021-06-07T11:49:29.137694428Z 
2021-06-07T11:49:29.137699868Z goroutine 172 [select]:
2021-06-07T11:49:29.137703941Z github.com/strukturag/nextcloud-spreed-signaling.(*Client).WritePump(0xc0000fe510)
2021-06-07T11:49:29.137708262Z 	/workdir/client.go:460 +0xdb
2021-06-07T11:49:29.137712031Z github.com/strukturag/nextcloud-spreed-signaling.(*Hub).serveWs.func2(0xc0000fe510, 0xc00041a000)
2021-06-07T11:49:29.137715725Z 	/workdir/hub.go:1870 +0x73
2021-06-07T11:49:29.137719090Z created by github.com/strukturag/nextcloud-spreed-signaling.(*Hub).serveWs
2021-06-07T11:49:29.137722528Z 	/workdir/hub.go:1867 +0x2f9
2021-06-07T11:49:29.137726283Z 
2021-06-07T11:49:29.137729275Z goroutine 427 [select]:
2021-06-07T11:49:29.137731780Z github.com/strukturag/nextcloud-spreed-signaling.(*mcuJanusClient).run(0xc0003cc460, 0xc0004fe640, 0xc0000815e0)
2021-06-07T11:49:29.137734359Z 	/workdir/mcu_janus.go:483 +0xcf
2021-06-07T11:49:29.137736816Z created by github.com/strukturag/nextcloud-spreed-signaling.(*mcuJanus).NewSubscriber
2021-06-07T11:49:29.137747759Z 	/workdir/mcu_janus.go:897 +0x3cd
2021-06-07T11:49:29.137754463Z 
2021-06-07T11:49:29.137759789Z goroutine 222 [select]:
2021-06-07T11:49:29.137763860Z github.com/strukturag/nextcloud-spreed-signaling.(*ClientSession).run(0xc0004b9680)
2021-06-07T11:49:29.137766831Z 	/workdir/clientsession.go:265 +0xa9
2021-06-07T11:49:29.137769320Z created by github.com/strukturag/nextcloud-spreed-signaling.NewClientSession
2021-06-07T11:49:29.137771841Z 	/workdir/clientsession.go:139 +0x325
2021-06-07T11:49:29.137774314Z 
2021-06-07T11:49:29.137776676Z goroutine 607 [select]:
2021-06-07T11:49:29.137779098Z github.com/strukturag/nextcloud-spreed-signaling.(*ClientSession).run(0xc0005c1500)
2021-06-07T11:49:29.137781620Z 	/workdir/clientsession.go:265 +0xa9
2021-06-07T11:49:29.137784093Z created by github.com/strukturag/nextcloud-spreed-signaling.NewClientSession
2021-06-07T11:49:29.137786603Z 	/workdir/clientsession.go:139 +0x325
2021-06-07T11:49:29.137789109Z 
2021-06-07T11:49:29.137791462Z goroutine 420 [select]:
2021-06-07T11:49:29.137793902Z github.com/strukturag/nextcloud-spreed-signaling.(*mcuJanusClient).run(0xc0003cc0a0, 0xc0004fe480, 0xc000081180)
2021-06-07T11:49:29.137796458Z 	/workdir/mcu_janus.go:483 +0xcf
2021-06-07T11:49:29.137798896Z created by github.com/strukturag/nextcloud-spreed-signaling.(*mcuJanus).NewSubscriber
2021-06-07T11:49:29.137801422Z 	/workdir/mcu_janus.go:897 +0x3cd
2021-06-07T11:49:29.137803914Z 
2021-06-07T11:49:29.137806273Z goroutine 450 [select]:
2021-06-07T11:49:29.137808707Z github.com/strukturag/nextcloud-spreed-signaling.(*mcuJanusClient).run(0xc0000a6e60, 0xc0003c0fc0, 0xc00040a620)
2021-06-07T11:49:29.137811288Z 	/workdir/mcu_janus.go:483 +0xcf
2021-06-07T11:49:29.137814151Z created by github.com/strukturag/nextcloud-spreed-signaling.(*mcuJanus).NewSubscriber
2021-06-07T11:49:29.137818409Z 	/workdir/mcu_janus.go:897 +0x3cd
2021-06-07T11:49:29.137821904Z 
2021-06-07T11:49:29.137824347Z goroutine 643 [chan receive]:
2021-06-07T11:49:29.137826785Z github.com/strukturag/nextcloud-spreed-signaling.(*Client).processMessages(0xc0000fe480)
2021-06-07T11:49:29.137829321Z 	/workdir/client.go:319 +0xce
2021-06-07T11:49:29.137831773Z created by github.com/strukturag/nextcloud-spreed-signaling.(*Client).ReadPump
2021-06-07T11:49:29.137834313Z 	/workdir/client.go:265 +0x173
2021-06-07T11:49:29.137836774Z 
2021-06-07T11:49:29.137839138Z goroutine 577 [select]:
2021-06-07T11:49:29.137841577Z github.com/strukturag/nextcloud-spreed-signaling.(*Client).WritePump(0xc0000fe480)
2021-06-07T11:49:29.137844144Z 	/workdir/client.go:460 +0xdb
2021-06-07T11:49:29.137850016Z github.com/strukturag/nextcloud-spreed-signaling.(*Hub).serveWs.func2(0xc0000fe480, 0xc00041a000)
2021-06-07T11:49:29.137852721Z 	/workdir/hub.go:1870 +0x73
2021-06-07T11:49:29.137855195Z created by github.com/strukturag/nextcloud-spreed-signaling.(*Hub).serveWs
2021-06-07T11:49:29.137857702Z 	/workdir/hub.go:1867 +0x2f9
2021-06-07T11:49:29.137860138Z 
2021-06-07T11:49:29.137862598Z goroutine 642 [IO wait]:
2021-06-07T11:49:29.137865039Z internal/poll.runtime_pollWait(0x7f0fb6678a40, 0x72, 0xffffffffffffffff)
2021-06-07T11:49:29.137867552Z 	/usr/local/go/src/runtime/netpoll.go:222 +0x55
2021-06-07T11:49:29.137870103Z internal/poll.(*pollDesc).wait(0xc00015a418, 0x72, 0x1000, 0x1000, 0xffffffffffffffff)
2021-06-07T11:49:29.137873952Z 	/usr/local/go/src/internal/poll/fd_poll_runtime.go:87 +0x45
2021-06-07T11:49:29.137878701Z internal/poll.(*pollDesc).waitRead(...)
2021-06-07T11:49:29.137881432Z 	/usr/local/go/src/internal/poll/fd_poll_runtime.go:92
2021-06-07T11:49:29.137883949Z internal/poll.(*FD).Read(0xc00015a400, 0xc00043b000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
2021-06-07T11:49:29.137886459Z 	/usr/local/go/src/internal/poll/fd_unix.go:166 +0x1d5
2021-06-07T11:49:29.137888973Z net.(*netFD).Read(0xc00015a400, 0xc00043b000, 0x1000, 0x1000, 0x14b, 0x0, 0x0)
2021-06-07T11:49:29.137891471Z 	/usr/local/go/src/net/fd_posix.go:55 +0x4f
2021-06-07T11:49:29.137893953Z net.(*conn).Read(0xc00035c168, 0xc00043b000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
2021-06-07T11:49:29.137896454Z 	/usr/local/go/src/net/net.go:183 +0x91
2021-06-07T11:49:29.137898929Z bufio.(*Reader).fill(0xc0003a2ae0)
2021-06-07T11:49:29.137901386Z 	/usr/local/go/src/bufio/bufio.go:101 +0x108
2021-06-07T11:49:29.137903892Z bufio.(*Reader).Peek(0xc0003a2ae0, 0x2, 0x4, 0x0, 0x0, 0x0, 0x0)
2021-06-07T11:49:29.137906471Z 	/usr/local/go/src/bufio/bufio.go:139 +0x4f
2021-06-07T11:49:29.137910557Z github.com/gorilla/websocket.(*Conn).read(0xc0001f78c0, 0x2, 0xdb7638, 0xc68e40, 0x7f0fb6678b20, 0x1a, 0xc9e801)
2021-06-07T11:49:29.137915209Z 	/workdir/vendor/pkg/mod/github.com/gorilla/[email protected]/conn.go:370 +0x46
2021-06-07T11:49:29.137918149Z github.com/gorilla/websocket.(*Conn).advanceFrame(0xc0001f78c0, 0x0, 0x0, 0x132d360)
2021-06-07T11:49:29.137920681Z 	/workdir/vendor/pkg/mod/github.com/gorilla/[email protected]/conn.go:798 +0x5c
2021-06-07T11:49:29.137923239Z github.com/gorilla/websocket.(*Conn).NextReader(0xc0001f78c0, 0xc0279fe0348a904d, 0x2db426a2e8, 0x132d360, 0x0, 0x0)
2021-06-07T11:49:29.137925799Z 	/workdir/vendor/pkg/mod/github.com/gorilla/[email protected]/conn.go:980 +0x8f
2021-06-07T11:49:29.137928350Z github.com/strukturag/nextcloud-spreed-signaling.(*Client).ReadPump(0xc0000fe480)
2021-06-07T11:49:29.137930892Z 	/workdir/client.go:269 +0x1d4
2021-06-07T11:49:29.137933362Z github.com/strukturag/nextcloud-spreed-signaling.(*Hub).serveWs.func3(0xc0000fe480, 0xc00041a000)
2021-06-07T11:49:29.137940819Z 	/workdir/hub.go:1875 +0x73
2021-06-07T11:49:29.137943426Z created by github.com/strukturag/nextcloud-spreed-signaling.(*Hub).serveWs
2021-06-07T11:49:29.137945953Z 	/workdir/hub.go:1872 +0x328
2021-06-07T11:49:29.137948424Z 
2021-06-07T11:49:29.137952105Z goroutine 671 [select]:
2021-06-07T11:49:29.137956455Z github.com/strukturag/nextcloud-spreed-signaling.(*Waiter).Wait(0xc0003c2cc0, 0xe83478, 0xc000396d80, 0x12e, 0x135df60)
2021-06-07T11:49:29.137959448Z 	/workdir/notifier.go:35 +0x98
2021-06-07T11:49:29.137961994Z github.com/strukturag/nextcloud-spreed-signaling.(*mcuJanus).getPublisher(0xc000420000, 0xe83478, 0xc000396d80, 0xc0002b7180, 0x128, 0xc000038cb0, 0x5, 0x0, 0x0, 0x0)
2021-06-07T11:49:29.137964674Z 	/workdir/mcu_janus.go:838 +0x2b1
2021-06-07T11:49:29.137967564Z github.com/strukturag/nextcloud-spreed-signaling.(*mcuJanus).getOrCreateSubscriberHandle(0xc000420000, 0xe83478, 0xc000396d80, 0xc0002b7180, 0x128, 0xc000038cb0, 0x5, 0xc0002b7669, 0xc000625c80, 0x45a6d9, ...)
2021-06-07T11:49:29.137970312Z 	/workdir/mcu_janus.go:847 +0x8e
2021-06-07T11:49:29.137972792Z github.com/strukturag/nextcloud-spreed-signaling.(*mcuJanus).NewSubscriber(0xc000420000, 0xe83478, 0xc000396d80, 0xe85038, 0xc000303080, 0xc0002b7180, 0x128, 0xc000038cb0, 0x5, 0xc000625cd0, ...)
2021-06-07T11:49:29.137975469Z 	/workdir/mcu_janus.go:870 +0xcf
2021-06-07T11:49:29.137977919Z github.com/strukturag/nextcloud-spreed-signaling.(*ClientSession).GetOrCreateSubscriber(0xc000303080, 0xe83478, 0xc000396d80, 0xe89268, 0xc000420000, 0xc0002b7180, 0x128, 0xc000038cb0, 0x5, 0x0, ...)
2021-06-07T11:49:29.137980597Z 	/workdir/clientsession.go:699 +0x22e
2021-06-07T11:49:29.137983102Z github.com/strukturag/nextcloud-spreed-signaling.(*Hub).processMcuMessage(0xc00041a000, 0xc000303080, 0xc000303080, 0xc000484550, 0xc0003d1040, 0xc0003d1080)
2021-06-07T11:49:29.137985755Z 	/workdir/hub.go:1629 +0xc33
2021-06-07T11:49:29.137988263Z created by github.com/strukturag/nextcloud-spreed-signaling.(*Hub).processMessageMsg
2021-06-07T11:49:29.137990811Z 	/workdir/hub.go:1206 +0x102c

I used the complete docker-compose setup - with an external turn service. The config is completely default, just filled in the http port to listen on and all required keys.

Safari Version: 14.1.1
MacOS Version: MacOS Big Sur 11.4

If I use a google chrome on the same device, the backend service doesnt crash.

Do you have any idea whats the issue here?

Thanks in advance!

Th3R3al

LXC Support

Hello,

I realize this is probably going to be a non-priority but I figured I'd throw it out there. Would it be possible to add support for unprivileged LXC containers? I have a "functioning" container built, however Talk is silently failing (just spins and never connects), even with everything set to debug. Janus and NATS are running without issue. I can provide any node or container logs that might be needed.

Thanks!

Requirements for building

I just tried to clone and build the signaling server in Ubuntu 18.04 and found out there are at least to requirements which need to be installed first:

  • golang
  • curl

Maybe this should be added to the readme.

Use of lt-cred-mech in coturn

Hi together,

im trying to get the signaling server working but im having problems with the connection to coturn.
I am already using it for other services with the options:

user=username:password
lt-cred-mech

But here i should use "static-auth-secret=password"

With coturn i cant mix these options.

Is it possible to configure the signaling server to use the lt-cred-mech auth?

"backend" parameter should be more flexible

while configuring the signaling server I had to find out that one has to name all hosts trying to use the server in the "backend=" config parameter. It would make life a lot easier if there were wildcards available or even better something like "[A.B.C.D]" - naming an IP to which the host should resolve.
The IP idea sounds not too complicated, what do you think?

Could not get capabilities

With latest master, syslog is flooded with these messages (NC 21.0.2, Talk 11.2.2).

backend_client.go:422: Could not get capabilities for https://example/ocs/v2.php/apps/spreed/api/v1/signaling/backend: unsupported_content_type
backend_client.go:512: Received unsupported content-type from https://example/ocs/v2.php/apps/spreed/api/v1/signaling/backend: text/xml; charset=UTF-8 (503 Service Unavailable)

Output of /standalone-signaling/api/v1/welcome

{"nextcloud-spreed-signaling":"Welcome","version":"b091db000e4ec9d9a65a9d2021ffb3780c08848a"}

Secret verified and it is OK (it matches from the server.conf and the NC Settings).

continentmap.go make not found Ubuntu 20.04

OS: Ubuntu 20.04
go: 1.13.8

Hello, i tried to build the server but unfortunately continentmap.go cant be found. i also havent found this file under /src/signaling

root@ubuntu-1:/home/hank/nextcloud-spreed-signaling-master# make build [ ! -d "/home/hank/nextcloud-spreed-signaling-master/.git/hooks" ] || ln -sf "/home/hank/nextcloud-spreed-signaling-master/scripts/pre-commit.hook" "/home/hank/nextcloud-spreed-signaling-master/.git/hooks/pre-commit" GOPATH="/home/hank/nextcloud-spreed-signaling-master/vendor:/home/hank/nextcloud-spreed-signaling-master" /usr/bin/go get github.com/rogpeppe/godeps /home/hank/nextcloud-spreed-signaling-master/scripts/get_continent_map.py src/signaling/continentmap.go make: /home/hank/nextcloud-spreed-signaling-master/scripts/get_continent_map.py: Command not found make: *** [Makefile:56: src/signaling/continentmap.go] Error 127

Incomplete OCS response for benchmark with client

If I run bin/client -addr localhost:8080 -maxClients 2 I get the following output.

2020-12-25 16:52:57.617850 I | Using a maximum of 16 CPUs
2020-12-25 16:52:57.618583 I | Backend server running on http://x.x.x.x:32781
2020-12-25 16:52:57.618629 I | Connecting to [ws://localhost:8080/spreed]
2020-12-25 16:52:57.618636 I | Starting 2 clients
2020-12-25 16:52:57.620353 I | Clients created
2020-12-25 16:52:57.620545 I | Unsupported message type: {Id: Type:error Error:Incomplete OCS response Hello:<nil> Bye:<nil> Room:<nil> Message:<nil> Control:<nil> Event:<nil>}
2020-12-25 16:52:57.620908 I | Unsupported message type: {Id: Type:error Error:Incomplete OCS response Hello:<nil> Bye:<nil> Room:<nil> Message:<nil> Control:<nil> Event:<nil>}
2020-12-25 16:52:59.881650 I | Received bye: &{Reason:hello_timeout}
2020-12-25 16:52:59.881829 I | Received bye: &{Reason:hello_timeout}

I followed the setup guidelines for docker-compose in this repository. The test with the webserver is successful and I can set the signaling backend with nextcloud. I can call other persons but the audio/video never loads after accepting the call.

Where does this error come from?

Problem with compiling. invalid pseudo-version, fatal: git fetch-pack: expected shallow list

Hello,

Following error is thrown when I do make build:
GOPATH="/root/nextcloud-spreed-signaling.src/vendor:/root/nextcloud-spreed-signaling.src" /usr/bin/go get -u github.com/mailru/easyjson/...
go: go.etcd.io/[email protected]: invalid pseudo-version: git fetch --unshallow -f https://github.com/etcd-io/etcd in /root/nextcloud-spreed-signaling.src/vendor/pkg/mod/cache/vcs/8d0c8c2e7723e01b30c002ed4e74d4605a82294f251ebd67ae6afb9f55368d27: exit status 128:
fatal: git fetch-pack: expected shallow list
make: *** [vendor/bin/easyjson] Error 1

Could I be missing something? I had compiled previous version without any problem.

Docker build fails due to GOPATH

After running docker-compose build spreedbackend I get

Step 8/15 : RUN make build
 ---> Running in 9b30464f0969
PATH=/usr/local/go/bin:/go/bin:/usr/local/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin GOPATH="/workdir/vendor:/workdir" ./vendor/bin/easyjson -all api_signaling.go
Error parsing api_signaling.go: file '/workdir/api_signaling.go' is not in GOPATH
make: *** [Makefile:82: api_signaling_easyjson.go] Error 1
ERROR: Service 'spreedbackend' failed to build: The command '/bin/sh -c make build' returned a non-zero code: 2

I do not understand this error, the files are in the GOPATH. Can someone reproduce this error? I only found mailru/easyjson#164 and mailru/easyjson#171 but even if I ensure the GOPATH is set (e.g. with ENV in the Dockerfile) the error persists.

mcu_janus.go: many lost Janus packages

I've problems to get Nextcloud Talk running smoothly with High Performance Backend.
First my setup:

  • Nextcloud 19.0.4, Talk 9.0.5 (also tested 20.0.1 Talk 10.0.1)
  • Ubuntu 20.04.1 LTS
  • janus gateway 0.10.9 (also tested 0.10.7, 0.10.4, 0.10.1, 0.9.5)
  • nextcloud-spreed-signaling version 9206a56/go1.13.8
  • nats docker latest
  • coturn 4.5.1.1-1
  • libSRTP2-1_2.3.0-4

I've setup the HPB with the tutorial from https://decatec.de/home-server/nextcloud-talk-mit-eigenem-signaling-server-high-performance-backend/

Here my problem:
The call is running fine until someone is starting to share a screen. From there all video streams are freezing until the screenshare is not stopped.
In signaling log i can see many entries like:

Nov 12 12:37:58 myhostname signaling[1789]: mcu_janus.go:1012: Subscriber _Tx-QfEhFjvhSFiOnUI2LZnFXscJY7RlRZiIkLepDgZ8aHVDRVotaG5SWkwwaVdYRkhDU0UyVVhXQ2ZhS0phcnFaVVFLdWcteU9maEN5S1VyRnJOeW9pd1l1Y0hPR0QwZlIzbEszd2Z6aUEweXh1d05YWXBGYVFoZlFkalN5b2x3ZHBkM2E5X1cwdkNBdDdaVHJ3ZHZMWTNMaWdlTXpkM01ZQnBJZkJNcTc4VVBWek1qWkdrV0ZQelJwcnpWeTZUYTRTQl95cDl4fDEwNDI4MTUwNjE= (5814447515383452) is reporting 39 lost packets on the uplink (Janus -> client)
Nov 12 12:37:58 myhostname signaling[1789]: mcu_janus.go:725: Publisher _Tx-QfEhFjvhSFiOnUI2LZnFXscJY7RlRZiIkLepDgZ8aHVDRVotaG5SWkwwaVdYRkhDU0UyVVhXQ2ZhS0phcnFaVVFLdWcteU9maEN5S1VyRnJOeW9pd1l1Y0hPR0QwZlIzbEszd2Z6aUEweXh1d05YWXBGYVFoZlFkalN5b2x3ZHBkM2E5X1cwdkNBdDdaVHJ3ZHZMWTNMaWdlTXpkM01ZQnBJZkJNcTc4VVBWek1qWkdrV0ZQelJwcnpWeTZUYTRTQl95cDl4fDEwNDI4MTUwNjE= (7157238091411248) is reporting 14 lost packets on the downlink (client -> Janus)

All other log files are fine.
I tried a lot of stuff:

  • disable ufw on signaling server
  • allow all traffic between signaling server an internet (DMZ), no firewalling between
  • test multiple browsers / clients
  • client's and server's CPU/Network/Ram is easy going
  • other versions of janus-gateway

Here my configs:
/etc/turnserver.conf

listening-port=3478
tls-listening-port=5349
min-port=49152
max-port=65535
fingerprint
lt-cred-mech
use-auth-secret
static-auth-secret=secret
realm=mydomain.de
total-quota=100
bps-capacity=0
stale-nonce=600
cert=/etc/ssl/certs/cer.cer
pkey=/etc/ssl/private/key.key
cipher-list="ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384โ€ณ
no-stdout-log
syslog
no-multicast-peers
no-tlsv1
no-tlsv1_1

/etc/janus/janus.jcfg (shortened)

media: {
        ipv6 = false
        rtp_port_range = "20000-40000"
}
nat: {
        stun_server = "signaling.mydomain.de"
        stun_port = 5349
        nice_debug = false
        full_trickle = true
        turn_server = "signaling.mydomain.de"
        turn_port = 5349
        turn_rest_api_key = "secret"
}

/etc/signaling/server.conf

[http]
listen = 127.0.0.1:8080
[https]
listen = 127.0.0.1:8443
certificate = /etc/ssl/certs/cer.cer
key = /etc/ssl/private/key.key
[app]
debug = false
[sessions]
hashkey = secret
blockkey = secret
[clients]
internalsecret = secret
[backend]
backends = cloud, testcloud
allowall = false
secret = secret
timeout = 10
connectionsperhost = 8
[cloud]
url = https://cloud.mydomain.de
secret = secret
[testcloud]
url = https://testcloud.mydomain.de
secret = secret
[nats]
url = nats://localhost:4222
[mcu]
type = janus
url = ws://127.0.0.1:8188
[turn]
apikey = secret
secret = secret
servers = turn:signaling.mydomain.de:5349?transport=udp,turn:signaling.mydomain.de:5349?transport=tcp
[geoip]
[geoip-overrides]
[stats]

Best regards
Michael

Manual build fails with `api_signaling.go' is not in GOPATH`

Latest master.

make client
PATH=/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin GOPATH=/opt/nextcloud-spreed-signaling/vendor:/opt/nextcloud-spreed-signaling ./vendor/bin/easyjson -all api_signaling.go
Error parsing api_signaling.go: file '/opt/nextcloud-spreed-signaling/api_signaling.go' is not in GOPATH
make: *** [Makefile:82: api_signaling_easyjson.go] Error 1

Separate signaling messages for "session was removed" and "conversation was removed"

With nextcloud/spreed#3591 we are improving the current world when people try to join twice in the same conversation. When your current session is removed a disinvite is sent and we show a message telling you:

You joined the conversation in another window or device. This is currently not supported by Nextcloud Talk so this session was closed.

However we can not distinguish the disinvite from:

  1. A moderator removed you from the conversation
  2. You joined again and nextcloud send the HPB a "disinvite this session"
  3. The conversation was removed completely.

Would it be possible to send different (or additional prior to the current one) messages so Talk can redirect you properly to a "The conversation does not exist" message?

panic: runtime error: invalid memory address or nil pointer dereference

Hi,

Whenever I run the spreed backend container, it crashes a few seconds later. I am running it on a Raspberry Pi 4 (arm32v6).

Here are its logs:

2021-01-05 04:00:50.282136 I | main.go:130: Starting up version 97a604915479b16d6faa996e5218fb38341db751/go1.13.15 as pid 1
2021-01-05 04:00:50.283188 I | main.go:139: Using a maximum of 4 CPUs
2021-01-05 04:00:50.311139 I | natsclient.go:116: Connection established to nats://nextcloud-nats:4222 (NBJ625S6UI2Y6DMZUN6K33H2GGJ2EN2L2ELELLP4UHFLXHBQMS5LCZF2)
2021-01-05 04:00:50.311628 I | backend_configuration.go:77: Backend nextcloud added for https://MYDOMAIN
2021-01-05 04:00:50.312374 I | hub.go:177: Using a maximum of 8 concurrent backend connections per host
2021-01-05 04:00:50.312499 I | hub.go:184: Using a timeout of 10s for backend connections
2021-01-05 04:00:50.312667 I | hub.go:270: Not using GeoIP database
2021-01-05 04:00:50.325247 I | mcu_janus.go:289: Connected to Janus WebRTC Server 0.9.2 by Meetecho s.r.l.
2021-01-05 04:00:50.325315 I | mcu_janus.go:293: Found JANUS VideoRoom plugin 0.0.9 by Meetecho s.r.l.
2021-01-05 04:00:50.325350 I | mcu_janus.go:299: Data channels are supported
2021-01-05 04:00:50.325382 I | mcu_janus.go:305: Full-Trickle is enabled
2021-01-05 04:00:50.325416 I | mcu_janus.go:308: Maximum bandwidth 1048576 bits/sec per publishing stream
2021-01-05 04:00:50.325449 I | mcu_janus.go:309: Maximum bandwidth 2097152 bits/sec per screensharing stream
2021-01-05 04:00:50.333802 I | mcu_janus.go:315: Created Janus session 8792596263727263
2021-01-05 04:00:50.341194 I | mcu_janus.go:322: Created Janus handle 6470059305944818
2021-01-05 04:00:50.341272 I | main.go:226: Using janus MCU
2021-01-05 04:00:50.341334 I | hub.go:357: Using a timeout of 10s for MCU requests
2021-01-05 04:00:50.342092 I | backend_server.go:94: Using configured TURN API key
2021-01-05 04:00:50.342372 I | backend_server.go:95: Using configured shared TURN secret
2021-01-05 04:00:50.342428 I | backend_server.go:97: Adding "turn:nextcloud-coturn:9991?transport=udp" as TURN server
2021-01-05 04:00:50.342463 I | backend_server.go:97: Adding "turn:nextcloud-coturn:9991?transport=tcp" as TURN server
2021-01-05 04:00:50.342509 I | backend_server.go:109: Only allowing access to the stats endpoing from 127.0.0.1,nextcloud-spreedbackend
2021-01-05 04:00:50.345141 I | main.go:302: Listening on 0.0.0.0:8080
2021-01-05 04:00:59.529493 I | client.go:251: Client from MYIP has RTT of 62 ms (62.685244ms)
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x12670]

goroutine 43 [running]:
runtime/internal/atomic.goXadd64(0x1614084, 0x1, 0x0, 0x159bb5c, 0x1485660)
        /usr/local/go/src/runtime/internal/atomic/atomic_arm.go:103 +0x1c
signaling.(*Hub).processRegister(0x1614000, 0x15d4640, 0x14943c0, 0x15c2160, 0x1485620)
        /workdir/src/signaling/hub.go:677 +0xe8
signaling.(*Hub).processHelloClient(0x1614000, 0x15d4640, 0x14943c0)
        /workdir/src/signaling/hub.go:906 +0x234
signaling.(*Hub).processHello(0x1614000, 0x15d4640, 0x14943c0)
        /workdir/src/signaling/hub.go:873 +0xa90
signaling.(*Hub).processMessage(0x1614000, 0x15d4640, 0x168a000, 0x129, 0x600)
        /workdir/src/signaling/hub.go:780 +0x9b0
signaling.(*Client).ReadPump(0x15d4640)
        /workdir/src/signaling/client.go:297 +0x430
created by signaling.(*Hub).serveWs
        /workdir/src/signaling/hub.go:1899 +0x24c

Does anyone have any idea what's happening and how to fix it ?

Many thanks to everyone who tries to help ๐Ÿ‘

janus_client.go:472: Unable to deliver message

I'm seeing the following messages in the logs:

2020-10-28 19:28:52.180728 I | mcu_janus.go:992: Subscriber 7034386731986703 received hangup (DTLS alert), closing
2020-10-28 19:28:52.238023 I | mcu_janus.go:701: Publisher 2940641805820439 received hangup (DTLS alert), closing
2020-10-28 19:28:52.238486 I | mcu_janus.go:688: Publisher 2940641805820439: associated room has been destroyed, closing
2020-10-28 19:28:52.238748 I | mcu_janus.go:760: Room 8404584723790815 destroyed
2020-10-28 19:28:52.239283 I | janus_client.go:472: Unable to deliver message {
   "janus": "detached",
   "session_id": 2596656192615391,
   "sender": 2940641805820439
}. Handle 2940641805820439 gone?

Not sure if this is a bug, because it's working correctly as far as I can tell...

Video room is not switching to the person that speaks.

Bug.
When we connect the spreed-signaling server it no longer switch automatically to the person that speaks during the video conference. It will pick a random main webcam feed that will always stay the main webcam feed. The main webcam feed is different for each person that is connected to that meeting. So it randomly pics a webcam feed for each person that is connected.

Expected behaviour:
The default talk app when you create a video conference with 3 or more people, it will select the person that speaks as the main webcam feed.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.