ejabberd_deploy
Исходная система: ALT Server 11.1
01. Установить пакеты
Начиная с какой-то версии, ejabberd инсталляционный пакет содержит все необходимые зависимости. В бинарные пакеты RPM, DEB, RUN все включено. Поэтому качаем ejabberd по ссылке: https://www.process-one.net/download/ejabberd/
|
1 2 |
apt-get install mariadb systemctl enable --now mysqld.service |
Шаблон БД необходимо загрузить по ссылке
https://github.com/processone/ejabberd/blob/master/sql/mysql.sql
02. MySQL
|
1 2 3 4 5 |
mysql -u root CREATE DATABASE ejabberd; GRANT ALL ON ejabberd.* TO 'ejabberd'@'localhost' IDENTIFIED BY 'P@ssw0rd'; /home/specnix/opt_ejabberd/mysql_schema_v25.sql service mysqld restart |
03. Сертификаты
Сгенерировать сертификат для мультидоменной конфигурации ejabberd:
|
1 2 3 4 5 6 7 8 9 |
easyrsa --subject-alt-name='DNS:xmpp01.specnix.ru,\ DNS:conference.specnix.ru,\ DNS:proxy.specnix.ru,\ DNS:pubsub.specnix.ru,\ DNS:xmpp.specnix.ru,\ DNS:upload.specnix.ru,\ DNS:vjud.specnix.ru,\ DNS:specnix.ru' \ build-server-full xmpp01.specnix.ru nopass |
Если в организации используется цепочка CA, то необходимо сделать бандл всей цепочки центров сертификации:
|
1 2 3 4 |
mkdir /opt/ejabberd/conf/certs touch /opt/ejabberd/conf/certs/bundle.pem cat CA_root.crt >> /opt/ejabberd/conf/certs/bundle.pem cat CA_intermediate.crt >> /opt/ejabberd/conf/certs/bundle.pem |
На выходе получаем файл в формате base64, например:
|
1 2 3 4 5 6 7 8 9 10 |
-----BEGIN CERTIFICATE----- MIIKDDCCBfSgAwIBAgIUBZpccWPawqobPk0tR7K4EHThbScwDQYJKoZIhvcNAQEL ... DPIzjExgmnXoq4YnKo3nXZx70/1fgHq3lVr6YQJydLs= -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIII1TCCBL2gAwIBAgIRAI+SKNaJvcWvTOULt5tAhdcwDQYJKoZIhvcNAQELBQAw ... juKtw8MKaY2e -----END CERTIFICATE----- |
Сделать бандл ключа и сертификата для нашего сервера
|
1 2 3 |
touch /opt/ejabberd/conf/certs/xmpp01.specnix.ru.pem cat xmpp01.specnix.ru.key >> /opt/ejabberd/conf/certs/xmpp01.specnix.ru.pem cat xmpp01.specnix.ru.crt >> /opt/ejabberd/conf/certs/xmpp01.specnix.ru.pem |
|
1 2 |
chown ejabberd:ejabberd -R /opt/ejabberd/conf/cacert chmod 770 -R /opt/ejabberd/conf/cacert |
04 Конфигурация ejabberd
Каталог где будут файлы лежат для обмена между клиентами
|
1 2 3 |
mkdir /opt/ejabberd/upload chown ejabberd:ejabberd -R /opt/ejabberd/upload chmod 775 -R /opt/ejabberd/upload |
Дальше правим конфиг /opt/ejabberd/conf/ejabberd.yml
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
#Указать домены и сертификаты hosts: - localhost - specnix.ru loglevel: info ca_file: /opt/ejabberd/conf/certs/bundle.pem.pem certfiles: - /opt/ejabberd/conf/certs/xmpp01.specnix.ru.pem ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Для входа в web-админку использовать строго локальные УЗ acl: admin: - user: admin@localhost ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # отключить модули в глобальной секции "modules" modules: # mod_avatar: {} # mod_vcard: {} # mod_http_upload: # mod_mam: # mod_muc: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Добавить в конце файла конфигурацию наших доменов host_config: localhost: auth_method: [sql] specnix.ru: auth_method: [ldap] ldap_servers: - dc01.specnix.ru - dc02.specnix.ru ldap_base: "DC=specnix,DC=local" ldap_rootdn: "CN=srv-xmpp,OU=Users,DC=specnix,DC=local" ldap_password: "P@ssw0rd" ldap_uids: [sAMAccountName] ldap_filter: "(memberOf=CN=xmpp,DC=specnix,DC=local)" ldap_encrypt: tls default_db: sql sql_type: mysql sql_server: "localhost" sql_database: "ejabberd" sql_username: "ejabberd" sql_password: "P@ssw0rd" sql_port: 3306 append_host_config: localhost: modules: mod_http_upload: docroot: /opt/ejabberd/upload put_url: "https://@HOST@:5443/upload" specnix.ru: modules: mod_avatar: {} mod_vcard: db_type: ldap ldap_vcard_map: NICKNAME: {"%u": []} GIVEN: {"%s": [givenName]} MIDDLE: {"%s": [initials]} FAMILY: {"%s": [sn]} FN: {"%s": [displayName]} EMAIL: {"%s": [mail]} ORGNAME: {"%s": [company]} ORGUNIT: {"%s": [department]} CTRY: {"%s": [c]} LOCALITY: {"%s": [l]} STREET: {"%s": [streetAddress]} REGION: {"%s": [st]} PCODE: {"%s": [postalCode]} TITLE: {"%s": [title]} URL: {"%s": [wWWHomePage]} DESC: {"%s": [description]} TEL: {"%s": [telephoneNumber]} ldap_search_fields: User: "%u" Name: givenName "Family Name": sn Email: mail Company: company Department: department Role: title Description: description Phone: telephoneNumber ldap_search_reported: "Full Name": FN Nickname: NICKNAME Email: EMAIL mod_vcard_xupdate: {} mod_muc: hosts: - conference.@HOST@ name: "Multi Chat for specnix.ru domain" db_type: sql access: - allow access_admin: - allow: admin@localhost - allow: admin@specnix.ru access_create: all access_persistent: muc_create access_mam: - allow default_room_options: mam: true persistent: true allow_subscription: true mod_muc_admin: {} mod_muc_occupantid: {} mod_mam: db_type: sql default: always mod_http_upload: name: "HTTP @HOST@ File Upload" docroot: /opt/ejabberd/upload put_url: "https://upload.@HOST@:5443/upload" mod_http_upload_quota: max_days: 1 |
|
1 |
systemctl enable --now ejabberd |
Создать УЗ администратора
|
1 2 |
su - ejabberd /usr/sbin/ejabberdctl register admin localhost As123456 |
Удалить УЗ или поменять пароль
|
1 2 |
/usr/sbin/ejabberdctl unregister admin localhost /usr/sbin/ejabberdctl change_password admin localhost |
https://{IP-address|FQDN}:5443/admin/
Добавить комментарий