Установка и настройка Jitsi meet с поддержкой JWT токенов в Debian Linux

Подразумевается, что вы знаете, что такое Jitsi Meet и для чего он нужен. Ниже я приведу инструкции по установке и настройке, которые решают проблему несовместимости Lua 5.2 и Lua 5.1. На возможных проблемах с сертификатами я останавливаться не буду, если у вас вдруг что-то идёт не так — напишите в комментариях, попробуем разобраться вместе. Как правило, установка проходит без проблем, они начинаются дальше. 🙂

Итак, поехали:

wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | apt-key add -
sh -c "echo 'deb https://download.jitsi.org stable/' > /etc/apt/sources.list.d/jitsi-stable.list"
apt-get -y update && apt-get -y install jitsi-meet certbot
apt install git cmake luarocks libssl-dev liblua5.2
wget http://packages.prosody.im/debian/pool/main/p/prosody-trunk/prosody-trunk_1nightly1273-1~buster_amd64.deb
dpkg -i prosody-trunk_1nightly1273-1~buster_amd64.deb
apt-get install jitsi-meet-tokens prosody-modules lua5.2 liblua5.2 luarocks libssl-dev
luarocks install basexx

Добавим в конец файла /etc/prosody/prosody.cfg.lua строчку:

Include "conf.d/*.cfg.lua"

Также отключим обязательное шифрование между клиентом и сервером:

c2s_require_encryption = false

Поставим модуль lua-cjson:

luarocks download lua-cjson
luarocks unpack lua-cjson-2.1.0.6-1.src.rock

В файле lua-cjson-2.1.0.6-1/lua-cjson/lua_cjson.c поменяем строку 743:

len = lua_objlen(l, -1);

на

len = lua_rawlen(l, -1);

И выполним установку модуля:

cd lua-cjson-2.1.0.6-1/lua-cjson
luarocks make

Требуемый модуль luajwtjitsi не работает в Debian с Lua 5.1, используем доработанную версию:

cd
git clone https://github.com/ASolomatin/luajwt.git
cd luajwt

Внесём изменения в файл luajwtjitsi-1.3-7.rockspec:

source = {
        url = "git://github.com/ASolomatin/luajwt/",
        tag = "replace_luacrypto"
}

dependencies = {
       "lua >= 5.2",
       "luaossl >= 20190731-0",
       "lua-cjson >= 2.1.0",
       "lbase64 >= 20120807-3"
}

После этого выполним установку модуля:

luarocks install luajwtjitsi-1.3-7.rockspec

После всех этих манипуляций перезапустим prosody:

systemctl restart prosody

Убедимся, что в /var/log/prosody/prosody.err не ошибок. Теперь у вас должна заработать аутентификация с помощью JWT токенов.

Более подробная документация про токены — https://github.com/jitsi/lib-jitsi-meet/blob/master/doc/tokens.md.

Генерация пароля в Unix/Linux

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

Если она у вас не установлена — ставим её:

apt-get install makepasswd

Пользоваться makepasswd довольно просто:

alexey@ws:~$ makepasswd 
tTD7hs3J8

По умолчанию генерируется пароль из 8 символов. Если хочется пароль подлиннее, например из 20 символов:

alexey@ws:~$ makepasswd --chars=20
jeDewHoSI3PBzYKESMHD

Нужно сгенерировать сразу 10 паролей? Не вопрос!

alexey@ws:~$ makepasswd --chars=20 --count=10
2nPjfzwmaePqvy95oWfd
WTqHSrJcx3yhYzvo9p5M
NU6mJrjYi6SvG3VKppfo
wcW8N6SpnDxCoCVGGPRv
dv3P318GoSaNGY3TifzQ
J3Nm39HBfaFRSW88FQzr
sfImruyf5Ua30bUrCKiG
3IuabxbDtQvVio6EeFP7
pCnvUCLiUo6tUiBVMEPQ
t7YxtWtI1GCC5vpa1d1w

Легко, удобно, быстро.

У утилиты есть дополнительные возможности, увидеть которые можно, запустив её с ключом −−help. Надеюсь, статья была полезной и данная утилита поможет вам сэкономить время для более полезной мозговой деятельности. 🙂

Обновление после стабилизации релиза Debian

Обновлял сейчас один старый ноутбук, на который был установлен Debian Buster ещё будучи в testing. Команда apt-get update не отрабатывала и завершала работу ошибкой:

E: Repository 'http://security.debian.org/debian-security buster/updates InRelease' changed its 'Suite' value from 'testing' to 'stable'
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.
N: Repository 'http://http.us.debian.org/debian buster InRelease' changed its 'Version' value from '' to '10.0'
E: Repository 'http://http.us.debian.org/debian buster InRelease' changed its 'Suite' value from 'testing' to 'stable'
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.
E: Repository 'http://http.us.debian.org/debian buster-updates InRelease' changed its 'Suite' value from 'testing-updates' to 'stable-updates'
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.

Данная проблема решается очень просто:

apt-get update --allow-releaseinfo-change

Наушники Pioneer SE-MS7BT-S и aptX, AAC кодеки в Debian

Заставляем работать наушники Pioneer SE-MS7BT-S в Debian на все 100%.

Из коробки эти наушники работать с кодеком aptX не будут, хотя они его знают и с ним работают просто великолепно.

Итак, чтобы добавить в вашу систему поддержку aptX потребуется модуль pulseaudio-modules-bt, который расположен по адресу https://github.com/EHfive/pulseaudio-modules-bt. Инструкция там есть, по ней можно собрать этот модуль, но я всё же приведу последовательность действий, которые сделал я, чтобы модуль собрался и заработал.

Предполагается, что у вас в системе установлен и настроен bluetooth, pulseaudio, а также gcc, cmake и git. Если нет — нужно поставить:

apt install pulseaudio pulseaudio-module-bluetooth pavucontrol bluez-firmware gcc cmake git

Поставим необходимые зависимости:

apt-get install libfdk-aac-dev libavcodec-dev libpulse-dev libdbus-1-dev libsbc-dev libldacbt-abr-dev libldacbt-enc-dev libltdl-dev libbluetooth-dev

Дальше идём по инструкции модуля:

MODDIR=`pkg-config --variable=modlibexecdir libpulse`
sudo find $MODDIR -regex ".*\(bluez5\|bluetooth\).*\.so" -exec cp {} {}.bak \;
git clone https://github.com/EHfive/pulseaudio-modules-bt.git
cd pulseaudio-modules-bt
git submodule update --init
git -C pa/ checkout v`pkg-config libpulse --modversion|sed 's/[^0-9.]*\([0-9.]*\).*/\1/'`
mkdir build && cd build
cmake -DFORCE_LARGEST_PA_VERSION=ON ..
make

Результат работы команды make в итоге будет примерно такой:

[  5%] Building C object CMakeFiles/bluez5-util.dir/src/modules/bluetooth/backend-native.c.o
[ 11%] Building C object CMakeFiles/bluez5-util.dir/src/modules/bluetooth/a2dp/a2dp_aptx.c.o
[ 17%] Building C object CMakeFiles/bluez5-util.dir/src/modules/bluetooth/a2dp/ffmpeg_libs.c.o
[ 23%] Building C object CMakeFiles/bluez5-util.dir/src/modules/bluetooth/a2dp/a2dp_aac.c.o
[ 29%] Linking C shared library libbluez5-util.so
[ 52%] Built target bluez5-util
Scanning dependencies of target module-bluez5-discover
[ 58%] Building C object CMakeFiles/module-bluez5-discover.dir/src/modules/bluetooth/module-bluez5-discover.c.o
[ 64%] Linking C shared module module-bluez5-discover.so
[ 64%] Built target module-bluez5-discover
Scanning dependencies of target module-bluetooth-policy
[ 70%] Building C object CMakeFiles/module-bluetooth-policy.dir/src/modules/bluetooth/module-bluetooth-policy.c.o
[ 76%] Linking C shared module module-bluetooth-policy.so
[ 76%] Built target module-bluetooth-policy
Scanning dependencies of target module-bluez5-device
[ 82%] Building C object CMakeFiles/module-bluez5-device.dir/src/modules/bluetooth/module-bluez5-device.c.o
[ 88%] Linking C shared module module-bluez5-device.so
[ 88%] Built target module-bluez5-device
Scanning dependencies of target module-bluetooth-discover
[ 94%] Building C object CMakeFiles/module-bluetooth-discover.dir/src/modules/bluetooth/module-bluetooth-discover.c.o
[100%] Linking C shared module module-bluetooth-discover.so
[100%] Built target module-bluetooth-discover

Остаётся установить собранные модули:

make install

Следуя инструкции, нужно отредактировать файл /etc/pulse/default.pa. Найти строку:

load-module module-bluetooth-discover 
И дополнить её вот так:
load-module module-bluetooth-discover a2dp_config="ldac_eqmid=hq ldac_fmt=f32"

Перезапустим pulseaudio:

killall pulseaudio

Конфигурируем bluetooth, находим наушники и коннектимся к ним:

Pioneer SE-MS7BT-S

Когда наушники успешно найдены и подключены, в аудионастройках выбираем профиль aptX:

Pioneer SE-MS7BT-S

И наслаждаемся качественным звучанием. 🙂

Быстрое добавление deploy ключа в Gitlab в несколько проектов

Иногда при работе с репозиториями в Gitlab бывает необходимость добавить один deploy ключ в более, чем один репозиторий. Можно заходить в каждый проект и руками активировать нужный ключ. Для 2-3 проектов это ещё приемлимо, но когда количество проектов больше указанного количества, это действие можно и нужно автоматизировать. 😉

Для этого будем использовать API Gitlab’а.

Сначала нужно зайти в профиль в получение персонального токена по урлу:

https://gitlab.yourdomain.com/profile/personal_access_tokens

и сгенерировать ваш токен. Сгенерированный токен нужно сохранить куда-то в безопасное место, так как больше в Gitlab вы его не увидите.

Далее добавляем deploy ключ в первый проект в разделе Settings -> Repository, блок Deploy keys. После добавления ключа нужно узнать его идентификатор (ID).

Если у вас есть админские права, можно сделать запрос к APi

curl --request POST --header "PRIVATE-TOKEN: <your token>" https://gitlab.yourdomain.com/api/v4/deploy_keys

Результатом запроса будет список ключей с идентификаторами, нужно только найти в выдаче нужный вам ключ.

Если админских прав нет, посмотреть идентификатор ключа можно на всё той же странице Settings -> Repository, в блоке Deploy keys. При наведении на иконку редактирования ключа, в урле будет его идентификатор. В моём случае вот так:

https://gitlab.yourdomain.com/group/project/-/deploy_keys/19/edit

Таким образом мы знаем ID ключа — 19.

Далее отправляем запрос:

curl --request POST --header "PRIVATE-TOKEN: <your token>" https://gitlab.yourdomain.com/api/v4/projects/3/deploy_keys/19/enable

который разрешает использование ключа 19 для деплоя проекта с ID=3.

Вместо идентификатора проекта можно использовать его URL:

curl --request POST --header "PRIVATE-TOKEN: <your token>" https://gitlab.yourdomain.com/api/v4/projects/group_name%2Fproject_name/deploy_keys/19/enable

А дальше вариантов как минимум два. Я для своих целей написал bash скрипт, в котором лежит массив урлов проектов и для каждого элемента массива вызывается curl. Если для вас проще сделать copy-paste команды curl с разными урлами репозиториев — можно и так. Главное, что этот способ намного быстрее, чем включать ключ вручную через веб-интерфейс. 🙂