Как-то заказал сервер с CentOs 7 для работы с этим форумом, обычно работаю под Ubuntu и Debian.
Решил поизучать эту систему, хотя опыт имею работы с линуксом, но не суть...
Вообще ситуация с ejabber достаточно странная, в Debian в репозитории какое-то старье, по мойму вообще 12-го года, а в CentOs так вообще его удалили из репозитория.
В сети какие-то старые маннуалы, короче пришлось больше самому разбираться, вот решил запостить, что получилось:
Итак:
1)Качаем версию ejabber по новей (Возможно есть и новее), но это хоть 2018 года, не самое старьё:
2)Устанавливаем:
3)И следуем простым инструкциям. Когда сервер будет установлен, следуем в каталог /opt/ejabberd-18.06/.
Нас интересуют два каталога: bin и conf. В первом лежат исполняемые файлы, во втором, соответственно, конфиги.
4)Теперь нам нужно настроить файервол (Открыть порты 5222, 5269, 5280):
5)Запуск сервера:/opt/ejabberd-18.06/bin/start
Стоп сервера:/opt/ejabberd-18.06/bin/stop
6)Админка:
http://:5280/admin.
Рекомендую закрыть доступ по айпи в файерволе.
7)Сейчас пара настроек, /opt/ejabberd/conf/ejabberd.yml
Если нужно, что-бы была возможность регистрации на вашем сервере всем, а не только из корпоративной сети, то найдите "ip_access" и замените на:ip_access:all
Если хотите, что-бы регистрация была только a-z0-9._- (Латиница), иногда полезно, то найдите в конфиге:
Ниже добавьте (Это добовляем регулярку):
Теперь применим эту регулярку, найдите в конфиге примерно что-то такое:
И замените:
Ну всё понятно, разрешаем то-что в ascii (Это наша регулярка), все остальные в блок.
8)С конфигом всё, вообще можете поразбираться, там можно много чего делать...
Настраиваем Let's Encrypt:
Установка:
Получение сертификата:
Вместо ru-sfera.org введите свой домен, или *.ru-sfera.org для поддоменов, ну и следуйте инструкциям.
В папке /etc/letsencrypt/live/ будут ваши сертификаты.
Далее нужно сделать следующее:
В /opt/ejabberd/conf/ejabberd.yml в "certfiles:" указать такой путь:
И перезапустить сервер.
9)Есчо пара штук:
Добавляем в автозапуск (Самое простое в крон, во время автозапуска) (Команда crontab -e ):
Как обновлять сертификат (автоматически), накидал простой скрипт:
! Вместо my_site свой путь !
10)Последний штрих, нужно добавить SRV в DNS записи:
Вместо example.com ваш домен.
Вроде всё.
Решил поизучать эту систему, хотя опыт имею работы с линуксом, но не суть...
Вообще ситуация с ejabber достаточно странная, в Debian в репозитории какое-то старье, по мойму вообще 12-го года, а в CentOs так вообще его удалили из репозитория.
В сети какие-то старые маннуалы, короче пришлось больше самому разбираться, вот решил запостить, что получилось:
Итак:
1)Качаем версию ejabber по новей (Возможно есть и новее), но это хоть 2018 года, не самое старьё:
Код:
wget https://www.process-one.net/downloads/downloads-action.php?file=/ejabberd/18.06/ejabberd-18.06-0.x86_64.rpm -O ejabberd.rpm
2)Устанавливаем:
Код:
rpm -ihv ejabberd.rpm
3)И следуем простым инструкциям. Когда сервер будет установлен, следуем в каталог /opt/ejabberd-18.06/.
Нас интересуют два каталога: bin и conf. В первом лежат исполняемые файлы, во втором, соответственно, конфиги.
4)Теперь нам нужно настроить файервол (Открыть порты 5222, 5269, 5280):
Код:
iptables -A INPUT -p tcp -m tcp --dport 5222 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 5269 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 5280 -j ACCEPT
Код:
service iptables save
5)Запуск сервера:/opt/ejabberd-18.06/bin/start
Стоп сервера:/opt/ejabberd-18.06/bin/stop
6)Админка:
http://:5280/admin.
Рекомендую закрыть доступ по айпи в файерволе.
7)Сейчас пара настроек, /opt/ejabberd/conf/ejabberd.yml
Если нужно, что-бы была возможность регистрации на вашем сервере всем, а не только из корпоративной сети, то найдите "ip_access" и замените на:ip_access:all
Если хотите, что-бы регистрация была только a-z0-9._- (Латиница), иногда полезно, то найдите в конфиге:
Код:
###' DEFAULT LANGUAGE
Ниже добавьте (Это добовляем регулярку):
Код:
acl:
ascii:
user_regexp: "^[a-z0-9._-]+$"
Код:
## In-band registration allows registration of any possible username.
## To disable in-band registration, replace 'allow' with 'deny'.
Код:
register:
- allow: ascii
- deny
8)С конфигом всё, вообще можете поразбираться, там можно много чего делать...
Настраиваем Let's Encrypt:
Установка:
Код:
sudo yum install epel-release -y
sudo yum install certbot -y
Получение сертификата:
Код:
certbot certonly --server https://acme-v02.api.letsencrypt.org/directory --manual --preferred-challenges dns -d ru-sfera.org
Вместо ru-sfera.org введите свой домен, или *.ru-sfera.org для поддоменов, ну и следуйте инструкциям.
В папке /etc/letsencrypt/live/ будут ваши сертификаты.
Далее нужно сделать следующее:
Код:
#Объеденить файлы в один сертификат:
cat /etc/letsencrypt/live/ru-sfera.org-0001/privkey.pem /etc/letsencrypt/live/ru-sfera.org-0001/fullchain.pem > /opt/ejabberd/conf/ssl.pem
В /opt/ejabberd/conf/ejabberd.yml в "certfiles:" указать такой путь:
Код:
- "/opt/ejabberd-18.06/conf/ssl.pem"
И перезапустить сервер.
9)Есчо пара штук:
Добавляем в автозапуск (Самое простое в крон, во время автозапуска) (Команда crontab -e ):
Код:
@reboot /opt/ejabberd-18.06/bin/start
Как обновлять сертификат (автоматически), накидал простой скрипт:
Код:
#!/bin/bash
#Обновить все сертификаты:
/usr/bin/certbot renew >> /var/log/le-renew.log
#Объеденить файлы в один сертификат:
cat /etc/letsencrypt/live/my_site/privkey.pem /etc/letsencrypt/live/my_site/fullchain.pem > /opt/ejabberd/conf/ssl.pem
#Перезапуск jabber:
/opt/ejabberd-18.06/bin/stop
/opt/ejabberd-18.06/bin/start
! Вместо my_site свой путь !
10)Последний штрих, нужно добавить SRV в DNS записи:
Код:
_jabber._tcp.example.com. IN SRV 0 0 5269 example.com.
_xmpp-server._tcp.example.com. IN SRV 0 0 5269 example.com.
_xmpp-client._tcp.example.com. IN SRV 0 0 5222 example.com.
Вместо example.com ваш домен.
Вроде всё.