404

Установка и настройка EJabberd в Ubuntu 20 LTS

Jabber открытый и свободный для использования протокол для мгновенного обмена мгновенными сообщениями. Любой желающий может открыть свой сервер, регистрировать на нём пользователей и взаимодействовать с другими серверами XMPP. Чем мы сегодня и займемся.

Все действия выполняются в режиме суперпользователя(ROOT)

В начале рекомендую обновить систему:

apt-get update
apt-get upgrade

На офицальной странице смотрим последнюю версию и копируем ссылку на скачивание: https://www.process-one.net/en/ejabberd/downloads/

Теперь скачаем и установим сервер:

wget https://www.process-one.net/downloads/downloads-action.php?file=/20.12/ejabberd_20.12-0_amd64.deb -O ejabberd_20.12-0_amd64.deb
apt install ./ejabberd_20.12-0_amd64.deb

Откроем файл конфигурации:

nano /opt/ejabberd/conf/ejabberd.yml

Находим строчку hosts и добавляем узелы, на которых будет работать EJabberd, например имя домена или IP адрес сервера:

hosts:
    - "localhost"
    - "0.0.0.0"

Находим строчку admin и указываем имя админестратора для узлов.

admin:
    user:
        - "admin": "localhost"
    user:
        - "admin": "0.0.0.0"

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

service ejabberd restart
/etc/init.d/ejabberd restart

Теперь создадим пользователя для локального и внешнего узлов:

cd /opt/ejabberd-20.12/bin
./ejabberdctl register admin localhost PASSWORD
./ejabberdctl register admin 0.0.0.0 PASSWORD

На этом стандартная настройка закончена.

Как подключить свой SSL сертификат

Это опция стоит внимания, если у вас свой домен и есть подписанный сертификат SSL.

Копируем сертификат в директорию: ssl_certificate /etc/ssl/certs/ И ключ от сертификата в директорию ssl_certificate_key /etc/ssl/private/

Создаем сертификат для EJabberd:

cat /etc/ssl/certs/selfsigned.crt >> /etc/ssl/certs/xmpp.pem
cat /etc/ssl/private/selfsigned.key >> /etc/ssl/certs/xmpp.pem

Откроем файл конфигурации:

nano /etc/ejabberd/ejabberd.yml

Находим строчку certfiles и стандартный адресс, на адресс своего сертификата:

certfiles:
    - "/etc/ssl/certs/xmpp.pem"

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

service ejabberd restart
/etc/init.d/ejabberd restart

Включаем загрузку файлов ejabberd

создаем каталог для файлов:

mkdir /var/www/upload
chown ejabberd:ejabberd /var/www/upload

Откроем файл конфигурации:

nano /etc/ejabberd/ejabberd.yml

Находим строчку modules: и добавляем/редактируем модуль mod_http_upload.

mod_http_upload:
    put_url: https://@HOST@:5443/upload
    docroot: /var/www/upload
    custom_headers:
    "Access-Control-Allow-Origin": "https://@HOST@"
    "Access-Control-Allow-Methods": "GET,HEAD,PUT,OPTIONS"
    "Access-Control-Allow-Headers": "Content-Type"

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

service ejabberd restart
/etc/init.d/ejabberd restart

Как настроить видео и голосовые вызовы ejabber

Откроем файл конфигурации:

nano /etc/ejabberd/ejabberd.yml

Находим строчку modules: и добавляем/редактируем модуль mod_stun_disco.

mod_stun_disco:
credentials_lifetime: 12h
services:
    -
      host: 0.0.0.0
      port: 3478
      type: stun
      transport: udp
      restricted: false
    -
      host: 0.0.0.0
      port: 3478
      type: turn
      transport: udp
      restricted: true
    -
      host: example.com
      port: 5349
      type: stuns
      transport: tcp
      restricted: false
    -
      host: example.com
      port: 5349
      type: turns
      transport: tcp
      restricted: true

Замените 0.0.0.0 IP-адресом вашего сервера ejabberd, а example.com - вашим доменом ejabberd. Также убедитесь, что ваш сервер и брандмауэр разрешают соединения через порты 3478, 5349.

Нам нужно добавить новых слушателей в раздел listen в верхней части файла конфигурации:

-
 port: 3478
 transport: udp
 module: ejabberd_stun
 use_turn: true
 turn_min_port: 49152
 turn_max_port: 65535
 ## The server's public IPv4 address:
 turn_ip: 0.0.0.0
-
 port: 5349
 transport: tcp
 module: ejabberd_stun
 use_turn: true
 tls: true
 turn_min_port: 49152
 turn_max_port: 65535
 ip: 0.0.0.0
 turn_ip: 0.0.0.0

Не забудь заменить 0.0.0.0 IP-адресом вашего сервера ejabberd.

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

service ejabberd restart
/etc/init.d/ejabberd restart