Как заставить работать Google Drive, One Drive или другие облачных сервисов в Jibri (Jitsi meet)


Копирование видео в облако после завершения записи Jibri.

В этом документе я опишу шаги по настройке синхронизации Jibri-записей с Google Drive. Мы будем использовать /etc/jitsi/jibri/config.json для вызова сценария постобработки в «finalize_recording_script_path». Для достижения моих целей я буду устанавливать инструмент синхронизации с открытым исходным кодом «Rclone» и настраивать его так, чтобы он вызывался Jibri, и обрабатывать синхронизацию файлов.

Rclone

Rclone написан на Go. На страницах документации Rclone (https://rclone.org/docs/ 8) перечислены многие службы, которые можно настроить для загрузки и выгрузки. В списке перечислены популярные облачные сервисы, такие как Amazon (Drive, S3), Google (Drive, Cloud, Photos), Dropbox, OneDrive, Digitalocean, Nextcloud, WebDAV, FTP и многие другие.

Подготовка перед установкой

Мы будем устанавливать Rclone на удаленный сервер. Однако для создания профиля удаленного подключения (включая oauth2) нам требуется веб-браузер, подключенный к Интернету, вместе с Rclone. Так как я использую Windows 10 на своем ноутбуке, я установлю Rclone на свою Windows 10. Для этого мы можем скачать Windows пакет (zip-файл) и создать конфигурацию для Windows 10. После этого мы загрузим конфигурацию на наш сервер.

Создание удаленного подключения rclone к Google Диску

Подробная документация доступна на веб-сайте Rclone: https://rclone.org/drive/

Вот что я сделал:

На компьютер с Windows 10 загрузите rclone (https://downloads.rclone.org/v1.51.0/rclone-v1.51.0-windows-amd64.zip) распакуйте исполняемый файл (я распаковал его в c: \ rclone \ rclone.exe). Теперь откройте командную строку (нажмите windows-key и наберите cmd):

cd /d c:\rclone
rclone config

Теперь вам будет предложено несколько вопросов:

  • No remotes found message: type ‘n’
  • name: ‘googledrive’

Теперь вам будет представлен длинный список сервисов. Найдите нужный для настройки.

  • Введите 13 для выбора Google drive
  • client_id:
  • client secret:
  • scope: ‘1’ (Я выбираю максимальный доступ к папке)
  • root_folder_id:
  • service_account_file:
  • Edit advanced config?: ‘n’ (default)
  • Use auto config?: ‘y’ (default)

На этом этапе rclone откроет ваш браузер для аутентификации доступа к вашей учетной записи Google:

Некоторые оставшиеся вопросы для завершения настройки:

  • Configure this as a team drive?: ‘n’ (default)
  • Current remotes and config details are shown, type: ‘y’ (default)
  • Final menue, we can quit now: ‘q’

Наша конфигурация Rclone теперь доступна. Давайте найдем, где она находится:

rclone config file

Результат:

Configuration file is stored at:
C:\Users\[user]\.config\rclone\rclone.conf

-> Запомните это местоположение: нам понадобится этот файл для загрузки на следующем шаге!

Теперь мы можем переключить внимание на наш сервер Jibri.

Установка Rclone (Debian 10)

Все приведенные ниже команды выполняются как «root».

apt update
apt install curl -y
curl https://rclone.org/install.sh | bash

Rclone теперь установлен.

Нам нужно найти, где у rclone располагается его конфигурационный файл:

rclone config file

Результат:

Configuration file doesn't exist, but rclone will use this path:
/root/.config/rclone/rclone.conf

Поэтому нам нужно загрузить файл с нашего компьютера с Windows (C:\Users\[пользователь]\.config\rclone\rclone.conf) в папку на сервере Jibri (/root/.config/rclone/). (Я использовал подсисему Linux для Windows для этого, а именно Ubuntu)

После загрузки мы проверяем еще раз, чтобы убедиться, что rclone находит свою конфигурацию:

rclone config file

Результат:

Configuration file is stored at:
/root/.config/rclone/rclone.conf

Теперь мы можем протестировать rclone. Убедитесь, что на вашем диске Google есть папки и файлом в ней, чтоб вывод из rclone был не пустым.

мы выводим список каталогов с Google drive :

rclone ls googledrive:

root@meet:/# rclone ls googledrive:
12903467 localhost.rar
781867 документы/pers2.jpg
695087 документы/pers1.jpg
734213 документы/anketa3.jpg
818529 документы/anketa2.jpg
632286 документы/anketa1.jpg
1823937 документы/baby.jpg
1118661 документы/vb8.jpg
1140959 документы/vb9.jpg
2003229 документы/diplom.jpg
1149300 документы/vb4.jpg
1138734 документы/vb5.jpg
1171952 документы/vb3.jpg
1129813 документы/vb6.jpg
1146634 документы/vb7.jpg
1175230 документы/vb2.jpg
8659940 документы/trud5.png
8774293 документы/trud4.png
1120758 документы/vb1.jpg
8786252 документы/trud6.png
1215619 документы/trud2.jpg
1802110 документы/snils.png
8180175 документы/pass3.png
2241301 документы/inn.jpg
8976874 документы/trud3.png
1008281 документы/pass1.jpg
1023058 документы/pass2.jpg
7963199 документы/pass4.png
1005584 документы/pass5.jpg
969668 документы/trud1.jpg
183 meet.mos.lu/videos/qroyidazclzqcqew/metadata.json
3591739 meet.mos.lu/videos/qroyidazclzqcqew/test_2020-05-20-11-51-13.mp4

Успех, Rclone теперь настроен!

Чтобы синхронизировать записанные файлы на вашем диске Google, мы можем запустить команду:

rclone copy /tmp/recordings/ googledrive:myjitsiserver.com/videos/ -v --log-file=/var/log/jitsi/jibri/googledrive_upload.log

Пояснение синтаксиса:

rclone <— Вызов
Aргументы:
copy <— копирование (можно сделать перенос)
/srv/recordings/ <— источник файлов
googledrive: <— rclone-профиль,
myjitsiserver.com/videos/ <— папка, куда фалы будут приняты
-v <— verbose (получение информация для лога)
--log-file=/var/log/jitsi/jibri/googledrive_upload.log <— название и расположение лог-файла

Вывод лога:

2020/05/21 21:05:36 INFO : Google drive root 'myjitsiserver.com/videos': Waiting for checks to finish
2020/05/21 21:05:36 INFO : Google drive root 'myjitsiserver.com/videos': Waiting for transfers to finish
2020/05/21 21:05:39 INFO : nujjwguavowweaci/metadata.json: Copied (new)
2020/05/21 21:05:43 INFO : nujjwguavowweaci/test3_2020-05-21-21-03-33.mp4: Copied (new)
2020/05/21 21:05:43 INFO :
Transferred: 8.572M / 8.572 MBytes, 100%, 1.157 MBytes/s, ETA 0s
Transferred: 2 / 2, 100%
Elapsed time: 7.4s

Всё работает, файлы загружены!

Делаем скрипт синхронизации

Мы копируем файл конфигурации rclone в место, где пользователь jibri может его прочитать:

cp ~/.config/rclone/rclone.conf /home/jibri/.config/rclone/

Теперь пишем скрипт загрузки в Google drive:

touch /etc/jitsi/jibri/rclone.googledrive.upload.sh
chmod +x /etc/jitsi/jibri/rclone.googledrive.upload.sh
mcedit /etc/jitsi/jibri/rclone.googledrive.upload.sh

Скопируем текст ниже в скрипт:

#! /usr/bin/bash
/usr/bin/rclone copy $1 googledrive:[your.domain.com]/videos/ -v --log-file=/var/log/jitsi/jibri/jitsi_googledrive_upload.log

Jibri передаст путь до папки с файлами текущей записи в переменную: $1

Можете дописать скрипт и удалять после копирования папку.

Заставим jibri вызывать наш скрипт после записи

mcedit /etc/jitsi/jibri/config.json

// The path to the script which will be run on completed recordings
"finalize_recording_script_path":"/etc/jitsi/jibri/rclone.googledrive.upload.sh",

Тоже самое можно сделать с яндекс диском и так далее. Посмотрите список всех сервисов, которые поддерживает rclone.