Иконка Nextcloud Talk в App Store

Talk — это расширение платформы Nextcloud, позволяет совершать защищенные аудио и видеозвонки, а также обмениваться текстовыми сообщениями через веб-интерфейс или мобильное приложение Nextcloud Talk. Для связи собеседников используется WebRTC, а для защиты передаваемой информации — end-to-end шифрование. Все компоненты Nextcloud Talk открыты.

Посты о Nextcloud на Хабре можно пересчитать по пальцам, и в них нет ни слова о Nextcloud Talk, поэтому я решил заполнить этот пробел. Под катом расскажу, как узнал о Nextcloud, Spreed.ME, Spreed и Talk, как тестировал Talk и с какими проблемами столкнулся при установке и настройке Talk.

Как я узнал о Nextcloud


В 2013 году, два друга, Женя и Максим, купили в складчину неттоп и запустили домашнее хранилище на ownCloud. В то время Dropbox предлагал 500 Гбайт дискового пространства за $500 в год, неттоп с точно таким-же объемом диска хоть стоил немного дороже, но приватное хранилище казалось экономически выгоднее и просто интереснее, чем Dropbox Pro. Женя и Максим создали аккаунты для друзей и знакомых. Поначалу я не пользовался этим аккаунтом, но позже проникся идеей приватного хранилища и начал шарить фотоальбомы, да и к тому же всё работало без сбоев. В 2016 году Фрэнк Карлитчек (Frank Karlitschek), основатель ownCloud, покинул проект и создал форк под названием Nextcloud. Женя предположил, что ownCloud ждет стагнация и перенес наше хранилище с ownCloud на Nextcloud. Все файлы при этом остались на месте, а я просто поставил мобильный клиент Nextcloud на смартфон и стал пользоваться Nextcloud.

Что предшествовало Nextcloud Talk


С самого начала в Nextcloud App Store было доступно расширение Spreed.ME, от одноименной команды разработчиков. С помощью этого расширения можно было создать видеоконференцию внутри Nextcloud прямо в браузере, но, к сожалению, не было мобильных приложений для Android и iOS, а ещё для Spreed.ME требовалась установка дополнительного ПО — Spreed WebRTC server. Немного позже разработчики Nextcloud опубликовали в Nextcloud App Store расширение для видеозвонков под названием Spreed. Spreed было лучше интегрировано в Nextcloud, не требовало установки Spreed WebRTC server, но уступало Spreed.ME по функционалу.

В начале 2018 года, разработчики Nextcloud объявили о полной переработке Spreed и опубликовали мобильное приложение Nextcloud Talk в Google Play Store и Apple App Store. Расширение Spreed переименовали в Talk, но при этом идентификатор приложения в Nextcloud App Store остался прежним — Spreed, чтобы облегчить нам миграцию с Nextcloud 12 на 13. В Talk есть групповой текстовый чат, голосовые и видеозвонки с шарингом экрана. Мобильные приложения Nextcloud Talk для Android и iOS пока уступают веб-версии, но реализовано самое нужное — звонки со смартфона на смартфон.

Как я тестировал Nextcloud Talk


Хотелось поскорее опробовать Nextcloud Talk, и не дожидаясь официального релиза Nextcloud 13, Женя обновил Nextcloud до 13.0.0 RC 1 на неттопе. После этого мы установили Nextcloud Talk на смартфоны и созвонились. Соединение прошло, но не было ни звука, ни видео; мы видели только чёрный экран. Я связался с разработчиком приложения для Android по имени Марио (Mario Danic), и он объяснил, что для общения через Интернет нам не хватает TURN-сервера.

Nextcloud Talk использует WebRTC (peer-to-peer) для организации канала связи между двумя устройствами, и так как у наших смартфонов нет белых IP-адресов, то установка соединения затруднена. В качестве TURN-сервера решили использовать coturn, быстро развернули на неттопе и указали белый IP-адрес неттопа в настройках Talk, в админке Nextcloud. После этого появилось видео и звук, но первое время мы не замечали отсутствие всплывающих уведомлений при звонке. Уведомления появились после установки и активации расширения Notifications в Nextcloud.

Nextcloud Talk: мобильное приложение и веб-интерфейс


Интерфейс мобильного приложения Nextcloud Talk для Android

В мобильном приложении Nextcloud Talk, на момент написания статьи, реализованы только видеозвонки и список контактов. Мой список контактов в приложении подгружается с сервера Nextcloud на неттопе.

Веб-интерфейс  Nextcloud Talk

В веб-версии возможностей больше, например, я могу пригласить в конференцию собеседника, у которого нет аккаунта в нашем облачном хранилище. В веб-версии есть чат, но, к сожалению, без смайликов и стикеров.

В будущем, разработчики Nextcloud Talk планируют добавить к чату XMPP совместимое API, чтобы сторонние приложения, поддерживающие протокол XMPP, могли общаться через Nextcloud Talk сервер. Скорее всего, чат появится в мобильном приложении Nexcloud Talk 2.0, но пока неизвестно, когда выйдет 2.0.

Установка Nextcloud 13 и Talk


Сейчас на неттопе запущен Docker-контейнер с Nextcloud 13, а все исходники, необходимые для сборки контейнера, мы опубликовали на GitHub. Это была идея Жени, он собрал Docker-файлы от различных веб-сервисов, которыми мы пользуемся, добавил скрипт, который собирает контейнеры и назвал это всё «Mr. Meeseeks Box» (сокращённо mbb). Если хотите по-быстрому развернуть у себя Nextcloud Talk и пощупать всё это своими руками, но не очень хорошо разбираетесь в Docker, то вам понравится mmb.

Итак, Для начала поставьте Git, Docker и Docker Compose:

sudo apt-get update
sudo apt-get install git, docker, docker-compose

Затем клонируйте репозиторий mmb:

git clone https://github.com/tolstoyevsky/mmb.git
cd mmb

Соберите два контейнера MariaDB и Nextcloud выполнив следующие команды:

sudo ./mmb.sh mariadb amd64
sudo ./mmb.sh nextcloud amd64

Если вы проделываете это на Raspberry Pi, или любом другом устройстве с ARM-процессором, то замените amd64 на armhf.

Теперь запустите оба контейнера, но перед этим убедитесь, что порт 3306 не занят:

cd mariadb
docker-compose up -d
cd ../nextcloud
docker-compose up -d

Откройте в браузере http://[ваш ip-адрес]:8001/nc, и если увидите страницу создания учетной записи администратора, то вы всё сделали правильно. Задайте логин и пароль администратора, затем перейдите в панель управления, и в правом верхнем углу нажмите Настройки > Приложения. В длинном списке приложений найдите Talk и активируйте. Теперь создайте ещё один аккаунт в Nextcloud и попробуйте созвониться через браузер либо через мобильное приложение внутри локальной сети.

Если есть белый IP-адрес, то можете пробросить 8001 порт наружу, чтобы созвониться через интернет, но тогда понадобится поднять TURN-сервер. Это можно сделать с помощью mmb, собрав и запустив контейнер с coturn:

cd ..
sudo ./mmb.sh coturn amd64
cd ../coturn
docker-compose up -d

Если вы проделываете это на Raspberry Pi, или любом другом устройстве с ARM-процессором, то замените amd64 на armhf.

После того, как поднимите TURN-сервер, откройте админку Nextcloud, в меню слева выберите «Разговор» (Talk), впишите свой белый IP-адрес в поле «сервер TURN», а в поле для секрейтной фразы впишите «secret». Если хотите использовать другую секретную фразу, то загляните в файл mmb/coturn/docker-compose.yml, измените значение переменной AUTH_SECRET и перезапустите контейнер с coturn:

cd ../coturn
docker-compose stop
docker-compose rm
docker-compose up -d

После этого можете создать в своём Nextcloud аккаунты для друзей, поставить приложение Nextcloud Talk на смартфон и звонить друг другу.

Комментарии (1)


  1. SchmeL
    21.02.2018 16:09
    +1

    Если есть список пользователей ldap, то отобразятся ли в контактах talk все пользователи и возможно ли настроить группы контактов для этого?
    Есть в nextcloud авторизация по SSO, то тогда можно будет попытаться собрать msi с каким-нибудь электроном с nextcloud и будет такой корпоративный чатик современный.