Install collabora and spreed.me

I never used or installed collabora, so no idea about this ;). but here the step by step guide on how I installed spreed.me on my system. I guess you also want to do video calls through out your local network, so I add the steps to install coturn as TURN server, which provides successful video calls through all kind of NAS etc. It is moreless a merge of these two guides:
Complete NC installation on Debian with Spreed.me and TURN step by step
HowTo: Autorun "spreed-webrtc-server" step-by-step

  1. Go to nextcloud web interface, app store and enable Spreed.ME client app, which is however found in category tools.

  2. Go to admin panel, additional settings, Spreed.ME, show advanced settings and do Generate new shared secret. Copy the value to some opened editor or what, you will need it later. I will call the value Z. Save settings!

  3. Download and unzip spreed server from github to your /opt directory:

$ cd /opt
$ wget https://github.com/strukturag/spreed-webrtc/archive/master.zip
$ unzip master.zip
$ cd spreed-webrtc-master

  1. To compile spreed, you need to install some packages, containing to compiler golang-go. Check if the version of golang-go in your repository is at least 1.4, but as I can see here, the version in ubuntu 16.04 lts is at 1.6, so no problem with that.

$ sudo apt-get install git node.js make automake golang-go

  1. Compile spreed.me:

$ ./autogen.sh
$ ./configure
$ make

  1. Create configuration file as copy from example configuration and do some adjustments. For that you need the previously saved Z and two additional random hex values as secrets. I will call them: X and Y.

$ cp server.conf.in server.conf
$ openssl rand -hex 32 => X
$ openssl rand -hex 32 => Y
$ nano server.conf

[http]

listen = 127.0.0.1:8080
root = /opt/spreed-webrtc-master
basePath = /webrtc/

[app]

sessionSecret = X
encryptionSecret = Y
authorizeRoomJoin = true
extra = /path/to/nextcloud/apps/spreedme/extra
plugin = extra/static/owncloud.js

[users]

enabled = true
mode = sharedsecret
sharedsecret_secret = Z

  1. Add some necessary proxypass to your nextcloud vhost, enable apache modules for that:

$ a2enmod proxy_http proxy_wstunnel headers
$ nano /etc/apache2/sites-available/nextcloud.conf (or whatever your vhost is called)

...
# Spreed WebRTC config (must be in same vhost)
<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
...

$ sudo service apache2 restart

At that stage you should be able to start the spreed server within terminal:

$ cd /opt/spreed-webrtc-master
$ ./spreed-webrtc-server

If the startup is going well you can try to connect to it via Spreed.ME app in nextcloud web ui. Video calls within your local network should also work. Try it out! If there is no partner, just open a second browser instance and join spreedme. You can join it multiple times with the same user and call yourself :smiley:. Good for testing at least.

If you try to do a video call from or to outside your local network, it will most likely fail, because the actual client IPs are hidden behind some router/NAS whatever. You could try to use a STUN server which forwards the local network IPs to allow P2P again. This is quite easy, as spreed itself provides some STUN server. You just need to uncomment the related line in spreed server.conf:

$ nano /opt/spreed-webrtc-master/server.conf

stunURIs = stun:stun.spreed.me:443

Sadly in many cases the STUN server is not enough to get video calls working. For that cases I would recommend to directly install an own TURN server, so that all traffic is directed through the TURN server instead of trying to get some P2P connection work.

  1. Install and configure coturn as TURN server from repository, and set spreed server to use it instead of STUN. You will again need some random hex value for that, which I will call A now ;).

$ sudo apt-get install coturn
$ openssl rand -hex 32 => A
$ nano /etc/turnserver.conf


listening-port=8443
fingerprint
lt-cred-mech
use-auth-secret
static-auth-secret=A
realm=<your.domain.org>
total-quota=100
bps-capacity=0
stale-nonce
cert=/path/to/your/cert.pem
pkey=/path/to/your/privkey.pem
log-file=/var/log/coturn/turn.log
no-loopback-peers
no-multicast-peers

$ nano /opt/spreed-webrtc-master/server.conf


#stunURIs = stun:stun.spreed.me:443
turnURIs = turn:<your.domain.org>:8443?transport=udp, turn:<your.domain.org>:8443?transport=tcp
turnSecret = A

$ nano /etc/default/coturn

TURNSERVER_ENABLED=1

$ sudo service coturn restart

  1. Open and forward port 8443 (for udp and tcp) in your router to your nextcloud/spreed/turn server.

At this stage, after starting the spreed server in terminal $/opt/spreed-webrtc-master/spreed-webrtc-server again, you should be able to do video calls through any NAS/Router/Firewall setup.

The last step would be to create a systemd unit to autorun the spreed server. Just follow my guide about this: HowTo: Autorun "spreed-webrtc-server" step-by-step
You can actually leave out step 4 (environment file) and add the values there directly to the service file (step 6), which would then look like this:

[Unit]
Description=Spreed WebRTC server
After=network.target
[Service]
Type=simple
Environment=GOMAXPROCS=1
LimitNOFILE=1024
User=spreed
Group=www-data
PermissionsStartOnly=true
ExecStart=/opt/spreed-webrtc-master/bin/spreed-webrtc-server -c /opt/spreed-webrtc-master/server.conf -l /var/log/spreed.log
Restart=on-failure
[Install]
WantedBy=multi-user.target

Hope I did not forget something. Always do the described tests in between and report if you come across an error.