t('Spreed.ME');?>

t('Rediscover private video chat and messaging! Secure audio, video and text chat integration in Nextcloud, provided by Spreed.ME, brings you safe and easy to use web conferencing, one to one calls and chat, putting control over your communication back into your own hands.');?>

t('Try Spreed.ME ');?>

t('Spreed.ME and secure video and audio chat');?>

t('Spreed.ME uses a technology called "WebRTC" which allows browsers to make direct, peer to peer connections between each other. These are fully end to end encrypted, both for audio/video and text chat. This means it is entirely impossible for anyone to eaves-drop on the conversation, including even the server administrator!');?>

t('User handling is integrated in Nextcloud so you will show up with avatar and user names all set up. You can also invite people without a user account to a call by creating a temporary password for a user (with the key icon). You will get a link you can give to them to join you in a call. You do not have to enbable this ability, though and you can also restrict the usage of Spreed.ME to a specific user group if you need to!');?>

Try for yourself!

t('Spreedbox: The most private video chat and file exchange technology');?>

  • t('Easy audio and video calls');?>
  • t('Nextcloud based file sync and share');?>
  • t('End to end encrypted');?>
  • t('You decide where your data is');?>
  • t('Custom secure hardware key-generator');?>
  • t('Fully Open Source');?>

t('Spreed.ME Nextcloud integration tutorial video');?>

t('In this video, we walk you through the tutorial below from beginning to end.');?>

t('Getting started in 3 steps');?>

t('We will describe how to get Spreed.ME integrated in your server using the Spreed WebRTC source, binaries or a Docker image and the Nextcloud Spreed.ME app.');?>

t('Requirements');?>

t('To install, the following dependencies are required:');?>

  1. t('A host that can run a Docker container OR a development environment to built Spreed WebRTC (which is based on the Go programming language)');?>
  2. t('An Apache server with some enabled modules');?>
  3. t('A valid SSL certificate for your Nextcloud');?>

t('1. Install Spreed WebRTC');?>

t('You can either install the Spreed WebRTC Docker container, install packages for your distribution or built the binary yourself.');?>

t('Docker');?>

t('There is a Docker image. It requires that you first create the server.conf, taking the template as can be found on the Docker hub page and modify it following the directions in the third section below. You then have to put it in a place where the Docker image can reach it, in the example below we picked /srv/extra/server.conf for that.');?>

t('

docker run --rm --name my-spreed-webrtc -p 127.0.0.1:8080:8080 -p 127.0.0.1:8443:8443 -v /srv/extra:/srv/extra -v path-to-your-nextcloud/apps/spreedme/extra:path-to-your-nextcloud/apps/spreedme/extra -i -t spreed/webrtc -c /srv/extra/server.conf
');?>

t('Once it is running, the server will listen on "localhost:8080". You have to change the following in the server.conf of the spreed.me server: section: [http] entry: listen = 0.0.0.0:8080. ');?>

t('If you are running it in a virtual machine, you may not have enough entropy in /dev/random and the server stick at the keygeneration. To get around this, execute rngd -f -r /dev/urandom in another terminal session.');?>

t('To run the container in the background, start the container with: run -t -d --name my-spreed-webrtc -p 127.0.0.1:8080:8080 -p 127.0.0.1:8443:8443 -v /srv/extra:/srv/extra -v path-to-your-nextcloud/apps/spreedme/extra:path-to-your-nextcloud/apps/spreedme/extra -i -t spreed/webrtc -c /srv/extra/server.conf');?>

t('Now we just need to configure Apache to serve Spreed WebRTC from there.');?>

t('Packages');?>

t('There are packages for Ubuntu, see instructions here');?>

t('Building');?>

t('Building Spreed WebRTC is relatively simple as it is written in Go. Follow these steps, adjusting for your system:');?>

  1. t('zypper install go
    Install Go so you can built a Go app like Spreed WebRTC');?>
  2. t('cd /srv/www/htdocs
    Go to the root of where your webserver is installed');?>
  3. t('wget https://github.com/strukturag/spreed-webrtc/archive/master.zip
    Grab the Spreed WebRTC code');?>
  4. t('unzip master.zip
    Extract the code');?>
  5. t('cd spreed-webrtc-master
    Enter the folder you just extracted the files into');?>
  6. t('./autogen.sh
    Generate configure and Makefile');?>
  7. t('./configure
    Detect all dependencies and get ready to built');?>
  8. t('make
    Build Spreed WebRTC');?>

t('You should now have Spreed WebRTC installed.');?>

t('2. Install the Spreed.ME Nextcloud app');?>

t('We will now install the Spreed.ME app. This can be done either from the Nextcloud App Store (if it is available there for your version of Nextcloud) or, as we will show here, directly from GitHub.');?>

  1. t('cd /srv/www/htdocs/nextcloud/apps
    Go to the Nextcloud app folder on your server');?>
  2. t('wget https://github.com/strukturag/nextcloud-spreedme/archive/master.zip
    Download the zip file with the app');?>
  3. t('unzip master.zip
    Extract the app');?>
  4. t('mv nextcloud-spreedme-master spreedme
    Rename the folder to spreedme');?>

t('The app is now installed.');?>

t('3. Configure the server and apps');?>

t('In this last step we have to do, we configure Apache to make Spreed WebRTC accessible and configure both Spreed WebRTC and the Spreed.ME Nextcloud app to talk to each other. Let us start with Apache.');?>

t('Apache config');?>

t('While you could run Spreed WebRTC on a dedicated domain (see the Spreed.ME README), it complicates things so we will put it in its own subpath named webrtc.');?>

t('Note: The instructions below are for openSUSE, you have to modify them for other Linux variants. Debian, for example, puts web server files in /var/www.');?>

  1. t('cd /etc/apache/vhosts.d
    Go to where Apache loads your virtual hosts from');?>
  2. t('vi nextcloud.conf
    Edit your Nextcloud vhost configuration. We will put the subpath there. Use your editor of choice, like nano instead of vi. In vi you can edit files only after you hit i and to save and quit the editor, hit the ESC button and type :wq followed by enter.');?>
  3. t('Locate the closing tags for your virtual host:
    And insert this above it:
    # 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
    ');?>
  4. t('rcapache2 restart
    Now restart the Apache webserver');?>

t('Nginx users should check out the Nginx config file here.');?>

t('App configuration');?>

t('We now have to configure the Spreed.ME app.
At first, go to the Nextcloud App Store, locate the app in the \'not enabled\' section and click on Enable.
Open the Nextcloud admin settings page (/index.php/settings/admin#goto-spreed.me) in your browser and configure this app:');?>

  • t('Click on Generate new shared secret. It will output a random string which you will need in one of the next steps. Copy it to your clipboard or a temporary text file.');?>
  • t('Click on Save settings.');?>
  • t('Spreed WebRTC config');?>

    t('Now we will adjust the Spreed WebRTC config, this is server.conf or webrtc.conf if you have installed packages. This is a large number of steps, each relatively simple but it is important not to miss anything!');?>

    1. t('cd /srv/www/htdocs/spreed-webrtc-master
      Go to the folder where you installed the Spreed WebRTC server software');?>
    2. t('cp server.conf.in server.conf
      Create the config file from the default file');?>
    3. t('vi server.conf
      Edit the config file and make these modifications:');?>
        • t('In the [http] section:');?>
          • t('Enable basePath by removing the ; character in front of the line and set it to the basePath we install Spreed WebRTC in: /webrtc/. It now should look like:
            basePath = /webrtc/');?>
        • t('In the [app] section:');?>
          • t('Enable authorizeRoomJoin and set it to true:
            authorizeRoomJoin = true');?>
          • t('Enable extra and set it to the full absolute path of the spreedme/extra directory in your apps folder of your Nextcloud installation:
            extra = /srv/www/htdocs/nextcloud/apps/spreedme/extra');?>
          • t('Enable plugin and set it to extra/static/owncloud.js:
            plugin = extra/static/owncloud.js');?>
          • t('Change sessionSecret to a random 64-character HEX string. Do NOT use the string given below. You can generate your own 64-character HEX string by running xxd -ps -l 32 -c 32 /dev/random or openssl rand -hex 32 in a console. It should look like:
            sessionSecret = bb04fb058e2d7fd19c5bdaa129e7883195f73a9c49414a7eXXXXXXXXXXXXXXXX');?>
          • t('Change encryptionSecret to a random 64-character HEX string. Do NOT use the string given below. See above on how to generate such a random secret. It should look like:
            encryptionSecret = bb04fb058e2d7fd19c5bdaa129e7883195f73a9c49414a7eXXXXXXXXXXXXXXXX');?>
        • t('In the [users] section:');?>
          • t('Enable enabled and set it to true:
            enabled = true');?>
          • t('Enable mode and set it to sharedsecret:
            mode = sharedsecret');?>
          • t('Enable sharedsecret_secret and set it to the random string you have in your clipboard / temporary text file. It should look like:
            sharedsecret_secret = bb04fb058e2d7fd19c5bdaa129e7883195f73a9c49414a7eXXXXXXXXXXXXXXXX');?>
        • t('Now save and close the file.');?>

    t('Now, start the server by running ./spreed-webrtc-server in the folder where Spreed WebRTC is located. You can configure a script to run the server automatically when you boot up your system.');?>

    t('And DONE!');?>

    t('At this point, you should be able to go to the Spreed.ME app in your Nextcloud and have a working video- and audio conferencing system. Congratulations!');?>

    t('Troubleshooting and other documentation');?>

    t('Community members are already discussing the Spreed.ME integration. You can find a how-to for installing Spreed.ME under Ubuntu 16.04 an armhf-device (odroid xu4) here!');?>

    t('Discuss Spreed.ME integration on our forums');?>