Включаем голосовую связь в Revolt (аналог Discord)
Что такое Revolt?
Если ты читаешь эту статью, то, скорее всего, ты уже знаешь, что такое Revolt, но вкратце: это аналог Discord без видеосвязи и демонстрации экрана.
Почему не Matrix/Synapse?
Мне он не понравился, вот и все...
Revolt больше похож на Discord, только без возможности видеосвязи и некоторых других функций, которые я не считаю важными.
Реализация каналов (комнат) непонятная, он больше подходит для организаций как по мне.
Какие проблемы мне пришлось преодолеть?
Чтобы запустить все сервисы Revolt, включая голосовой, мне пришлось столкнуться с некоторыми трудностями из-за отсутствия достаточной документации.
Особенно сложным оказался голосовой сервер Vortex. В файле docker-compose, который можно найти в репозитории Revolt self-hosted, отсутствует упоминание о голосовом сервере (Vortex).
Если вы просто запустите Revolt self-hosted, то не сможете совершать звонки, так как не настроили голосовой сервер Vortex.
В репозитории самого Vortex также нет чёткой инструкции по настройке. Кроме того, сборка проекта завершается с ошибкой. Автор проекта сообщил, что работает над переписыванием голосового сервера, но пока у него нет свободного времени.
Однако я решил, что можно откатиться на один из старых коммитов, и в итоге мне удалось собрать проект.
Кроме того, в конфигурации Caddy (reverse proxy сервера) была обнаружена ошибка, связанная с портом контейнера autumn (файлового сервера). Из-за этой ошибки не работала отправка изображений, аватарок и других файлов. По итогу я отказался от него в пользу Nginx.
В итоге я принял решение исправить все эти недочёты, добавить голосовой сервер и выложить свои изменения в собственном репозитории.
Что нам понадобится?
Виртуальная машина (VPS) с минимальными системными требованиями:
1 ГБ ОЗУ
1 CPU
15 ГБ жесткий диск
ОС Debian 11
Docker - инструкция по установке
Начинаем установку
Прежде всего, необходимо клонировать мой репозиторий:
cd /opt && git clone https://github.com/kanewi11/revolt-self-hosted
В данной инструкции сервисы будут разбиты на поддомены:
api.
january.
vortex.
ws.
_acme-challenge.
- для ssl сертификата
Необходимо добавить A
записи в вашей административной панели, где вы покупали домен.
Выписываем сертификаты на домен и поддомены (замените example.com на ваш домен):
certbot certonly --manual --preferred-challenges=dns -d example.com -d *.example.com
По инструкции будет необходимо в административной панели, где вы покупали домен, добавить TXT
записи для поддомена _acme-challenge.
После каждого шага проверяйте что TXT
запись обновилась, это можно сделать при помощи сервиса Google Dig
После того как сертификаты выписаны, скопируйте всё из директории с сертификатами (она будет указана при успешном создании сертификата) в директорию:
cp /etc/letsencrypt/live/ваш домен/* /opt/revolt-self-hosted/data/nginx/certs/
Настройка Revolt
Сначала необходимо создать .env
файл.
Переходим в директорию revolt-self-hosted командой:
cd /opt/revolt-self-hosted
Теперь создадим .env
файл командой:
cp .env.example .env
В файле меняем домен example.com на свой.Это необходимо сделать с переменными:
HOSTNAME
REVOLT_APP_URL
REVOLT_PUBLIC_URL
VITE_API_URL
REVOLT_EXTERNAL_WS_URL
AUTUMN_PUBLIC_URL
JANUARY_PUBLIC_URL
WS_URL
В переменной RTC_IPS необходимо заменить <ip_address> на ip адрес вашего сервера
Дальше переходим к файлу Revolt.tom
, тут тоже необходимо заменить example.com на ваш домен.
Это необходимо сделать с переменными:
app
api
events
autumn
january
voso_legacy
voso_legacy_ws
Настройка Nginx
Вам необходимо заменить example.com на свой домен во всех файлах в директории: /opt/revolt-self-hosted/nginx/conf.d/
А так же в /opt/revolt-self-hosted/nginx/nginx.conf
Запуск
Находясь в директории /opt/revolt-self-hosted/ прописываем команду:
docker compose up -d
Итог
На самом деле, в системе гораздо больше настроек, и вам также потребуется изменить все токены, ключи и другие параметры. Однако для первоначального запуска этого вполне достаточно.
Я пользуюсь собственным сервером Revolt уже около месяца, и голосовая связь работает безупречно.
С уверенностью могу рекомендовать эту платформу, если вам нужно подобное решение.