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_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
создаем каталог для файлов:
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
Откроем файл конфигурации:
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