Spreed.ME Snap for any Nextcloud installation


#1

Packages have been built which allow you to connect to the Spreed.ME snap using your Nextcloud installation.

Installation

Nextcloud

On the Nextcloud side, add these entries to your Nextcloud vhost in your reverse proxy

Apache

    <Location /webrtc>
        ProxyPass http://127.0.0.1:8080/webrtc
        ProxyPassReverse /webrtc
    </Location>

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

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

NGINX

http context

The following section, needs to go inside the http context of your Nginx
configuration. This enables Websocket proxy - make sure you have it only once.

	map $http_upgrade $connection_upgrade {
		default	upgrade;
		''		close;
	}

server context

Put the following part into the server context of your Nginx configuration.

	# Spreed WebRTC
	location ^~ /webrtc {
		proxy_pass http://127.0.0.1:8080;
		proxy_http_version 1.1;
		proxy_set_header Upgrade $http_upgrade;
		proxy_set_header Connection $connection_upgrade;
		proxy_set_header X-Forwarded-Proto $scheme;
		proxy_set_header Host $http_host;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

		proxy_buffering				on;
		proxy_ignore_client_abort	off;
		proxy_redirect				off;
		proxy_connect_timeout		90;
		proxy_send_timeout			90;
		proxy_read_timeout			90;
		proxy_buffer_size			4k;
		proxy_buffers				4 32k;
		proxy_busy_buffers_size		64k;
		proxy_temp_file_write_size	64k;
		proxy_next_upstream			error timeout invalid_header http_502 http_503 http_504;
	}

Ubuntu Core

In order to be able to load snaps, you need to install snapd.
It’s only available on Linux and you will find it at https://snapcraft.io

Spreed.ME

The Spreed.ME snap is available from the Ubuntu snap store

$ sudo snap install spreedme

Configuration

Install the Spreed.ME app

From the app store

  1. Go to the app store inside Nextcloud
  2. Enable experimental apps support (wheel icon, bottom left)
  3. Click on “Tools” in the left sidebar
  4. Scroll down until you see the Spreed.ME app

From the command line (not recommended)

Install via Git

cd /var/snap/nextcloud/current/nextcloud/extra-apps/
git clone https://github.com/strukturag/nextcloud-spreedme-git spreedme

Or download from https://github.com/strukturag/nextcloud-spreedme/releases
and place it in the following path:
/var/snap/nextcloud/current/nextcloud/extra-apps/

Configure the Spreed.ME app

  1. Go to the admin panel, click on Spreed.ME on the left side-bar
  2. Click on “Generate Spreed WebRTC config”
  3. Copy-paste the random string next to “sharedsecret_secret” for later use
  4. Edit the Spreed me configuration file located at:
    /var/snap/spreedme/current/server.conf
  5. In the [users] section, add the shared secret copy-pasted from earlier, like this
    sharedsecret_secret = bb04fb058e2d7fd19c5bdaa129e7883195f73a9c49414a7eXXXXXXXXXXXXXXXX
  6. Restart Spreed.ME:
    $ systemctl restart snap.spreedme.spreed-webrtc.service

Note: You may need to use a different restart command if your OS is not using systemd

Start spreeding!

  1. Open the Spreed.ME app in the apps menu
  2. Authorise your browser to send your notifications and to use your microphone and camera
  3. Ask other users to come and have a chat

Additional features

  • You can create rooms and share the link to other Nextcloud users on the same instance
  • You can define the video quality in the settings panel, after clicking on the wheels icon, top right

Which TLS config is supported by the clients?
#2

The Spreed.ME snap has been released to the store.
Unfortunately, the Nextcloud snap for the Nextcloud Box won’t support this feature for a while. In the meantime, you will need to create your own version of the Snap (which is a good idea anyway if you want to tighten security, add features, etc.).


#3

Any chance of listing the Nginx equivalent of that Apache reverse proxy change? Would this likely work on Debian 8 as on Ubuntu?


#4

@Bugsbane here’s the nginx-equivalent: https://github.com/strukturag/nextcloud-spreedme/blob/master/doc/example-config-nginx.md

Would this likely work on Debian 8 as on Ubuntu?

Well, you can’t use snaps on Debian. Snaps only work on Ubuntu Snappy :wink:
We also provide a Docker image for Spreed WebRTC, and I’m sure there are Docker images for Nextcloud as well (need to modify the Dockerfile to also install the ‘spreedme’ Nextcloud app).


#5

Thanks for the link :slight_smile:

That’s actually not true any more.

# On Sid:
sudo apt install snapd

#6

Good to know, thanks! Will definitely play around with it on the weekend. :slight_smile:


#7

That’s good because I haven’t tried on all platforms :slight_smile:

http://snapcraft.io/docs/core/install


#8

I am running debian jessie and trying to install snapd is not working for me:

pi@raspberrypi:~ $ sudo apt install snapd
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package snapd
pi@raspberrypi:~ $

By the way. I don’t find the path to the Nextcloud vhost configuration file where I can add the mentioned code.

Kind regards
//neph


#9

I just checked and it hasn’t been released on jessie yet.

It really depends on how you’ve installed Nextcloud.


Frage zu spreedme-snap-Integration
#10

It is about NextcloudBox and nextcloud-snap on Ubuntu snappy core. Does this help to assist me with this?


#11

Unfortunately, at this time, you can’t install Spreed.ME when using the snap which comes with the Box. You need to create your own snap or wait for the changes which allow users to make modifications to their configs (2017)


Frage zu spreedme-snap-Integration
#12

Oh. Is there an estimation when it will be possible? And where can I find the relevant information about?


#13

You can track this issue:

but it will take a few months.


#14

Careful with the snap package system and X11 ! It can give you a false sens of security (sandbox) :no_good:

if you’re using X11 (ie, Ubuntu desktop) any Snap package you install is completely capable of copying all your private data to wherever it wants with very little difficulty.

The problem here is the X11 windowing system. X has no real concept of different levels of application trust. Any application can register to receive keystrokes from any other application. Any application can inject fake key events into the input stream. An application that is otherwise confined by strong security policies can simply type into another window. An application that has no access to any of your private data can wait until your session is idle, open an unconfined terminal and then use curl to send your data to a remote site. As long as Ubuntu desktop still uses X11, the Snap format provides you with very little meaningful security. Mir and Wayland both fix this, which is why Wayland is a prerequisite for the sandboxed xdg-app design.

See https://mjg59.dreamwidth.org/42320.html


#15

That would be a somewhat valid point if the snap was using x11… :wink:


#16

Hi, I compiled a nextcloud-snap package with support for Spreed.ME. It’s just the current stable version (10.0.2snap1) plus these changes. If you want to use Spreed.ME on the Nextcloud Box now, you can find the snap package here. Cheers


#17

Hi, is there any update on this issue? Can the spreed.me snap be used with the rp3 image ( https://download.nextcloud.com/server/images/ > ubuntu-core-16-armhf-rpi2-rpi3-installer-20170217.img ) on a rasperry/nextcloud box?


#18

It’s still the same deal, you can use the image, but you need to delete the snap an install a custom one which supports spreed.
Having said that, spreed is now integrated into Nextcloud, including screensharing, so you don’t really need to use the separate app.


#19

Why a “custom snap”. Aren’t they identical? Can’t i build up Spreed from open sources?


#20

No. The official snap doesn’t come with external Spreed support

Yes, but that won’t give you access to external Spreed from within the vanilla Nextcloud snap.
I would really recommend you use the Spreed app from the Nextcloud app store which works really well.