Experimenting the Spreed.me feature under Nextcloud

Continuing the discussion from Citadel Groupware:

Very interested in this experiment, how can we help your tests?
Could you share some notes?

It works great… Video/Audio and text.
Here is the way I tested it.

References :


my steps were:
I installed docker on the server
I installed the nextcloud addon :

yum -y install unzip docker
cd /var/www/html/nextcloud/apps
wget https://github.com/strukturag/nextcloud-spreedme/archive/master.zip
unzip master.zip
mv nextcloud-spreedme-master spreedme

goto nextcloud , admin , spreedme and generate a key
you will see the following errors :
config/config.php was not found.
extra/static/config/OwnCloudConfig.js was not found.

Copy the key you just generated as you need to paste it in the config.php below

access the folder /var/www/html/nextcloud/apps/spreedme/extra/static/config/
rename the file that is there to OwnCloudConfig.js

access the following folder : /var/www/html/nextcloud/apps/spreedme/config
cp config.php.in config.php

Change config.php to reflect the following:
-----------------------------config.php--------------------

<?php
/**
 * Nextcloud - spreedme
 *
 * This file is licensed under the Affero General Public License version 3 or
 * later. See the COPYING file.
 *
 * @author Leon <leon@struktur.de>
 * @copyright struktur AG 2016
 */

namespace OCA\SpreedME\Config;

class Config {

    // Domain of your Spreed WebRTC server (including protocol and optional port number), examples:
    //const SPREED_WEBRTC_ORIGIN = 'https://mynextcloudserver.com';
    //const SPREED_WEBRTC_ORIGIN = 'https://webrtc.mynextcloudserver.com:8080';
    // If this is empty or only includes a port (e.g. :8080), host will automatically be determined (current host)
    const SPREED_WEBRTC_ORIGIN = 'https://reallocalip:8443';

    // This has to be the same `basePath`
    // you already set in the [http] section of the `server.conf` file from Spreed WebRTC server
    const SPREED_WEBRTC_BASEPATH = '/webrtc/';

    // This has to be the same `sharedsecret_secret` (64-character HEX string)
    // you already set in the [users] section of the `server.conf` file from Spreed WebRTC server
    const SPREED_WEBRTC_SHAREDSECRET = '3e12c48e9939e4f14d12da748e47f2c5b593f30792e80a63db20b98696XXXXXX'; <<paste  the key you just generated from within nextcloud admin , spreedme

    // Set to true if at least one another Nextcloud instance uses the same Spreed WebRTC server
    const SPREED_WEBRTC_IS_SHARED_INSTANCE = false;

    // Set to true if you want to allow access to this app + spreed-webrtc for non-registered users who received a temporary password by an Nextcloud admin.
    // You can generate such a temporary password at: /index.php/apps/spreedme/admin/tp (Nextcloud admin user account required)
    const OWNCLOUD_TEMPORARY_PASSWORD_LOGIN_ENABLED = false;

    // If 'OWNCLOUD_TEMPORARY_PASSWORD_LOGIN_ENABLED' is set to true, you also have to provide a signing key here (64-character HEX string)
    // Generate it using `xxd -ps -l 32 -c 32 /dev/random` (better) or `openssl rand -hex 32`
    const OWNCLOUD_TEMPORARY_PASSWORD_SIGNING_KEY = 'f20e1b84781d80570fef6e2969f61ba91ccb56922398a45eXXXXXXXXXXXXXXXX';<<<< leave as is

    private function __construct() {

    }

}

------------------------------end of config.php--------------------------

then run the following command:
docker run --rm --name my-spreed-webrtc -p 8080:8080 -p 8443:8443 -vpwd:/srv/extra -i -t spreed/webrtc

To access the spreedme server : https://serverip:8443

Make sure that spreedme is enabled on Nextcloud.
After you ensure that Spreedme is enabled. The trick to access the spreedme from within the nexcloud is to disable the tomcat since the port is conflicting with that of spreedme.
I tried to change the ports on spreedme docker but did not work, it insists on using the 8080 and the 8443

Issues I have :

  1. Anyone can access the spreedme if he knows the path , hence security problem
  2. Could not find a way to couple/bind spreedme with the LDAP

Quality of voice, video is great. Texting is very nice and fast unlike Ejabberd (yet ejabberd is still essential for other tasks).
Interface looks nice

3 Likes

Is there a big difference between spreed.me and for instance Big Blue Button?

Yes quite big, the Spreed.me is not as versatile as the Big Blue Button.

Big blue button has the following extra features:

  • Record and Playback
  • Emoji
    -Polling
    -Whiteboard
  • I am not sure about the Webcam multiple users.

Having said that, I am talking from nextcloud perspective. Spreedme is a plugin into Nextcloud where Big Blue Button is not.
I would love to have something like Big Blue Button integrated into Nextcloud but for now I am happy with spreedme if security and LDAP can be solved.

Have you by any chance tried to run the docker container using the server.conf file as stated here?

https://hub.docker.com/r/spreed/webrtc/

It says:
To use custom configuration, use the server.conf.in file as template and remove the listeners from [http] and [https] sections. Then provide that file when running the docker container as with -c parameter like this:

docker run --rm --name my-spreed-webrtc -p 8080:8080 -p 8443:8443
-v pwd:/srv/extra -i -t spreed/webrtc
-c /srv/extra/server.conf

You can find a sample of server.conf here
https://raw.githubusercontent.com/strukturag/spreed-webrtc/master/server.conf.in

Also could you elaborate a bit on the “disable tomcat” part?

Thank you for sharing your notes btw, spreed is awesome!

As for the security part, it is stated on the github page that spreed webrtc is intended to be used behind a reverse proxy such as ngix or apache with websockets support, i suppose one could add a layer of auth on the proxy?

3 Likes

Also could you elaborate a bit on the “disable tomcat” part?
The Tomcat runs on port 8080 , as well as : docker run --rm --name my-spreed-webrtc -p 8080:8080 -p 8443:8443 -v pwd:/srv/extra -i -t spreed/webrtc

Should you wish to access spreedme from within the Nextcloud , disabling tomcat is the solution else you will get an error.

As far as other points, security and different ports I did not have the time to play with.

Thanks for your tests guys @ghost @edi looks like a great module for NethServer!

Agree, we should follow this path i like such integration

@alefattorini @edi
I have been testing spreedme for few days now, all was working fine in HTTP and today the HTTPS was solved.
Still have one last step which is accessing it from the public internet.
Once I have that solved I will post a how to. Unfortunately my current how to is for Ubuntu, I will work on a Centos 7 one.

One good assurance from the spreedme is that they will put more development towards the nextcloud integration
Please read the following:

Answer to one of my questions:
3. Any progress on having the users list of nextcloud displayed on spreed ?
No, but Spreed.ME will be integrated into Nextcloud more deeply with https://github.com/nextcloud/spreed

2 Likes

All tests passed including the natted / behind firewall scenario

I need someone to help me convert an apache.conf file into the whatever NS7 uses as web engine.
Otherwise the ubuntu version can be found here : https://help.nextcloud.com/t/complete-nc-installation-on-debian-with-spreed-me-and-turn-step-by-step/2436/28

1 Like

Maybe @stephdl @mark_nl or some webserver experts can help you here.
@johnjervig @ibico @bwdjames @Hunv @Greg @jackyes

NethServer uses apache 2.4, simply copy the file to /etc/httpd/conf.d/

@filippo_carletti

Thank you for your reply.

The modifications I made (on Ubuntu) were directly on the file called
apache2.conf (the file existed before on the root of the /etc/apache2/

and the modifications I need are :

    ProxyPass http://127.0.0.1:8870/webrtc
    ProxyPassReverse /webrtc

<Location /webrtc/ws>
ProxyPass ws://127.0.0.1:8870/webrtc/ws

ProxyVia On
ProxyPreserveHost On
RequestHeader set X-Forwarded-Proto ‘https’ env=HTTPS


The port is not important as much as the redirection instructions as you see.

Should I wish to apply the same in NS7 how that can be ? Taking into consideration that I did not create a new file, I just used the default config file.
Also in NS7 there are scripts that override the files every time the machine is rebooted so it is bit different.

1 Like

Create a file named /etc/httpd/conf.d/spreed containig the lines you wrote.
Then activate the new apache config:
systemctl reload httpd

1 Like

I will try and let you know… thank you

@ghost how’s going with spreed.me on NethServer?

@alefattorini I was traveling will resume mid coming week and will post an update.
I saw that you have tried sugarcrm, is it integrated now ?

1 Like

Nope, we’re just discussing it
Looking forward to your update!