Установка ejabberd astra linux

Установка ejabberd под Linux

Рассмотрим установку сервера ejabberd на компьютеры под управлением одного из дистрибутивов GNU/Linux для использования в локальной сети с открытым доступом из Интернет и с использованием службы DynDNS.

Предполагается, что у Вас уже установлена операционная система, настроен доступ в Интернет, а доменное имя на DynDNS (допустим, это будет myjabber.ath.cx) указывает на внешний адрес Вашего компьютера (либо тот, который доступен из Вашей локальной сети, если Вы настраиваете сервер без возможности подключения к нему из Интернета).

Ejabberd может быть установлен на ваш сервер различными способами. Опишу три по убыванию предпочтительности:

  1. Установка из репозитория/портов. Идеальный по оптимизации и самый простой вариант.
  2. Сборка из исходного кода. Если этого пакета нет в репозиториях к вашему дистрибутиву, но очень хочется, чтобы сервер был оптимизированным и работал без ошибок — засучиваем рукава и переходим к соответствующему разделу. Тут вам понадобятся некоторые знания о Linux и/или помощь гуру.
  3. Предварительно собранные бинарные файлы с инсталлятором. Вариант весьма прост, но вряд ли оптимизирован именно под ваш дистрибутив.

Далее подробно рассмотрены эти варианты.

Содержание

Установка из репозитория

Дистрибутивов Linux великое множество, и нет никакой возможности рассмотреть детали установки в каждом из них. Упомянем наиболее популярные (предполагается наличие прав root):

openSuSE 11.4

Сначала подключим репозиторий, посвящённый программам обмена сообщениями:

Потом установим сервер:

Fedora

По умолчанию нужный репозиторий обычно подключен.

Debian-based дистрибутивы (Debian, *Ubuntu и другие)

Ejabberd входит в основную ветку репозитория, поэтому для установки просто скомандуйте:

Gentoo

Для установки ejabberd в Gentoo GNU/Linux выполните команды

Сборка из исходников

Рассмотрим сборку stable-версии ejabberd-2.0.5.

Для начала нужно, чтобы на сервере был установлен компилятор gcc и необходимые библиотеки (включая devel-части). Проверьте, есть ли у вас:

  • GNU Make
  • GNU C compiler (GCC)
  • libexpat 1.95 или выше
  • OpenSSL 0.9.6 или выше
  • Zlib 1.2.3
  • GNU Iconv 1.8 или выше
  • flex/yacc

В разных дистрибутивах проверка и установка делается разными способами. Дистрибутивов много, описывать каждый смысла не имеет. Если вы не знаете, как это сделать на вашем сервере, обратитесь к документации или гуру по данному дистрибутиву.

Для простоты операций будем работать пользователем root в его домашнем каталоге. Не забудьте потом прибраться.

Итак, нам нужен исходный код ejabberd. Идём на официальный сайт и выбираем, что нужно. Лучше выбирать stable версию, но если вы очень любите новые фишки и не боитесь нестабильной работы, то берите beta, testing или SVN версии.

Я выбрал stable-версию 2.0.5 и скачал её:

Конечно же, у вас есть эта удобнейшая утилита — wget. 😉

Ещё нам понадобится свеженький Erlang — это компилятор языка, на котором написан ejabberd. Если Erlang есть в вашем репозитории, то лучше воспользоваться им. Если нет — покажу, как собрать его из исходных кодов.

Как программист, не удержусь от пояснения, зачем было использовать этот с виду громоздкий и неудобный язык. Он громоздок и неудобен действительно лишь с виду, для написания программ вроде hello world, однако предоставляет прекрасный инструментарий многопоточного и распределённого программирования. Это позволит вам единожды написанную и собранную программу использовать на огромных кластерах, состоящих из машин любой архитектуры, в которые будет проще простого добавить новые вычислительные мощности. Даже Java не обладает подобными возможностями. Именно поэтому ejabberd считается одним из самых быстрых и масштабируемых серверов протокола XMPP.

Но довольно лирики.

Если у вас наличествуют все инструменты, библиотеки и исходные коды, приступим.

Создадим временный каталог для наших сборок:

erlang

В моём случае скачанный архив называется otp_src_R13B01.tar.gz. Распаковываем его во временный каталог:

Переходим в каталог и собираем erlang:

Конечно же, следим за процессом, а не просто набираем команды. Программа сборки может сообщить об ошибке, но не каждый error или warning означает неисправимую ошибку. Например, процесс конфигурирования (команда configure) может сообщить, что не нашла компилятора java, библиотек odbc и wx, но это не является ошибкой. Просто соответствующие части erlang-а будут отключены. Перечисленные библиотеки нам не понадобятся для работы ejabberd.

После сборки вернёмся в домашний каталог командой cd.

ejabberd

В моём случае архив называется ejabberd-2.0.5.tar.gz. Распаковываем его во временный каталог:

Переходим в каталог с исходниками и собираем ejabberd:

После всех этих манипуляций все нужные файлы разложены согласно традициям UNIX/Linux. Конфиги, в частности,- в /etc/ejabberd. Скрипт запуска — /sbin/ejabberdctl — отрабатывает команду start, что позволяет сразу добавить в rc.d, хотя лучше всё же написать правильный скрипт управления службой согласно правилам вашего дистрибутива.

Установка готовых бинарников

Рассмотрим установку stable-версии 2.0.5 для 32-битного Linux. Для начала нужно скачать инсталлятор:

Далее следуйте указаниям программы установки.

Настройка

А дальше надо настроить сервер: что делать при загрузке, какие модули использовать, какие порты прослушивать, и т.п.

Настройка сервера сводится к редактированию файла конфигурации /etc/ejabberd/ejabberd.cfg (путь показан на примере Debian GNU/Linux, в других дистрибутивах или при самостоятельной сборке из исходных кодов путь может отличаться). Откройте этот файл от пользователя root в любом удобном для Вас текстовом редакторе, после чего найдите следующие строки:

В первом параметре задается Jabber ID администратора, а во втором — доменное имя сервера. Приведите эти строки примерно к такому виду:

В данном случае JID администратора задан admin@myjabber.ath.cx, а имя сервера, как уже условились выше — myjabber.ath.cx.

Теперь в том же файле найдите строки

и замените deny на allow — без этого пользователи сервера не смогут регистрироваться напрямую из своего Jabber-клиента.

Сохраните изменения и перезапустите ejabberd командой

Источник

Ejabberd

Проверено на
Версия OC Кто
2.0.2_2 (бинарник с сайта) Debian 4 24pm
2.1.3 (бинарник с сайта) Debian 5 24pm
2.1.5 (из репозитория ОС) Debian 6 24pm
Читайте также:  Task home windows что это

ejabberd — это свободный (GNU GPL), распределённый и устойчивый к отказам XMPP-сервер, написанный в основном на Erlang. Он работает под юникс-подобными ОС (GNU/Linux, FreeBSD и NetBSD) и Microsoft Windows.

Имеет весьма полезный сайт сообщества.

Содержание

Установка

Установить можно и из репозитория, и вручную скачав с сайта более свежую версию. Скачав, распакуем и сделав исполняемым, выполним. Мастер установки поддерживает русский язык и несложен. Установка длиться

Настройка

В инструкции «x.x.x» означает номер версии ejabberd.

— Настраиваем /opt/ejabberd-x.x.x/conf/ejabberd.cfg, предполагая, что для джабера мы создали в домене DNS узел jabber.domain.local:

-Собственно на этом настройка может быть закончена. Запускаем службу:

Или можно удалить процесс:

— Можно создать в системе пользователя ejabberd с домашним каталогом установленного ПО и запускать службу от его имени, скопировав стартовый скрипт в надлежащее место:

таким образом ejabberd будет запускаться стандартным для linux способом

— Теперь можно зайти на веб интерфейс http://jabber.domain.local:5280/admin/

— Добавляем пользователей в jabber клиенте (pidgin, qip, miranda, psi и т.д.) или командой ejabberdctl в формате

Перечисляем в ejabberd.cfg кто будет администратором:

Также это можно сделать через веб-интрефейс. Прямая ссылка http://jabber.domain.local:5280/admin/acls/

— Проверяем работоспособность сервера: Регистрируемся пользователями, отправляем друг другу сообщения.

— Чтобы дать пользователям возможность искать друг друга в vCard, изменим параметры модуля mod_vcard:

Можно настроить обще доступные ростеры (roster) — группы контактов. Для этого

1) проверим, что включен модуль общих групп контактов, если закомментировано, то убираем символы комментария %%

или mod_shared_roster_odbc в случае, если мы храним эту таблицу в MySQL.

2) в веб-интерфесе идём по пути:

Виртуальные хосты — jabber.domain.local — Группы общих контактов

Дополнительные настройки

— В Debian каталог пользователей находится в /var/lib/jabber/

— Создадим два ростера All и JabberAdmins. В первый будут входить все пользователи и этот список будет доступен только пользователям из второй группы, во второй группе перечислим администраторов сервиса и покажем этот список всем пользователям. Для этого:

a) в группе All в качестве членов пропишем одну строку «@all@», в Видимые группы добавим «JabberAdmins»

б) в группе JabberAdmins в качестве членов указываем администраторов, в Видимые группы добавим «All»

— Чтобы уведомлять администраторов о новых пользователях, добавим в настройку модуля mod_register:

Резервное копирование

Резервное копирование осуществляется выгрузкой базы данных и зависит от того где мы храним БД.

Mnesia БД

Mnesia — БД по умолчанию для ejabberd. Возможна выгрузка в бинарном (более сжатом) и в текстовом (читаемом) виде. Команды выгрузки и восстановления зависят от выбранного метода.

— Выгрузка и восстановление бинарного файла:

— Выгрузка и восстановление текстового файла:

MySQL БД

Команды выгрузки и восстановления БД в MySQL:

Более подробно можно узнать в отдельной статье по MySQL.

Перенос на другой сервер

  1. Выгружаем БД на старом сервере (см. «Резервное копирование») и загружаем на новом.
  2. Если БД храниться в Mnesia (по умолчанию), то можно перенести файлы базы, их местоположение зависит от способа установки Например, /opt/ejabberd-2.0.5/database/ejabberd@localhost или /var/lib/ejabberd

! Если переходить с одной версии на другую, то могут быть проблемы!

ejabberd и MySQL

Хранить базу можно в MySQL. Кратко, настроить можно так:

1) Скачиваем схему БД

2) Создаём пользователя ejabberd:

3) Создаём базу данных ejabberd:

4) Загружаем схему в БД:

5) настраиваем ejabberd на MySQL, прописываем в ejabberd.cfg:

6) Указываем какие таблицы будут храниться в MySQL. Если пропустить этот шаг, то будет храниться только таблица пользователей (users), все остальные данные будут храниться по прежнему в Mnesia (см описание в конце статьи).

Список всех таблиц, данные из которых можно перенести в MySQL можно узнать посмотрев какие модули odbc присутствуют:

7) скачиваем модули подключения erlang к MySQL (прямая ссылка). Кладём файлы к остальным модулям (файлы с расширением *.beam). В Debian это /usr/lib/ejabberd/ebin/, в чём можно убедиться выполнив

Источник

Installing ejabberd

There are several ways to install ejabberd Community Server:

  • Linux RUN Installer – for any Linux
  • Linux DEB and RPM Installers – for DEB and RPM based Linux
  • Operating System packages – for System Operators
  • Docker image – for Windows, macOS, Linux, .
  • Homebrew – for macOS
  • Source Code – for developers and advanced administrators

Once installed, you can head to the next steps:

Linux RUN Installer

The *.run binary installer will deploy and configure a full featured ejabberd server and does not require any extra dependencies. It includes a stripped down version of Erlang. As such, when using ejabberd installer, you do not need to install Erlang separately.

Those instructions assume installation on localhost for development purposes. In this document, when mentioning ejabberd-YY.MM , we assume YY.MM is the release number, for example 18.01. Also note that the installer scripts support many options useful for production or unattended, scripted installation. You can read more on installer options on unattended installation.

Installation using the *.run binary installer:

  1. Go to ejabberd official download page on ProcessOne website.
  2. Download the «Linux x86 64-bits Installer».
  3. Right-click on the downloaded file and select «Properties». Click on the «Permissions» tab and tick the box that says «Allow executing file as program».

Now you are able to double-click the file to execute it and start the installer. You can also set the installer as executable and start it using the command line:

Select the installer language you prefer, then click «Forward» to go through necessary installation steps:

  • accepting the license agreement,
  • selecting the installation directory,
  • defining the XMPP domain: by default, it’s set to the name of your computer on the local network. if unsure, type localhost here,
  • setting the administrator username,
  • setting the administrator password,
  • selecting if this ejabberd instance will be part of a cluster: for simple local install, just select «No»,
  • start the installation,

After successful installation, let’s launch ejabberd using the Terminal. In the command line, go to the installation folder and execute ./bin/ejabberdctl live . This will start ejabberd in an interactive live mode with some useful messages printed in the Terminal.

Now you can go to the web dashboard at http://localhost:5280/admin/ and fill the username field with the full account JID, for example admin@domain (or admin@localhost as above). Then fill the password field with that account’s password . The next step is to get to know how to configure ejabberd.

If something goes wrong during the installation, and you would like to start from scratch, you will find the ejabberd uninstall in the directory where it was installed.

To start and stop ejabberd manually, use the desktop shortcuts created by the installer. If the machine doesn’t have a graphical system, use the scripts ’start’ and ’stop’ in the ’bin’ directory where ejabberd is installed.

Linux DEB and RPM Installers

ProcessOne provides DEB and RPM all-in-one binary installers with the same content that the *.run Binary Installer mentioned in the previous section.

Those are self-sufficient packages that contain a minimal Erlang distribution, this ensures that it does not interfere with your existing Erlang version and is also a good way to make sure ejabberd will run with the latest Erlang version.

Those packages install ejabberd in /opt/ejabberd-XX.YY/ . Your configuration and Mnesia database are available in /opt/ejabberd/ .

You can download the DEB and RPM packages from the ejabberd official download page.

Operating System Packages

Many operating systems provide specific ejabberd packages adapted to the system architecture and libraries. They usually also check dependencies and perform basic configuration tasks like creating the initial administrator account.

List of known ejabberd packages:

Consult the resources provided by your Operating System for more information.

There’s also an ejabberd snap to install ejabberd on serveral operating systems using Snap package manager.

Docker Image

If you already have Docker installed, the ejabberd/ecs Docker image allows to install ejabberd in one single command:

If you use Microsoft Windows 7, 10, or similar operating systems, check those tutorials:

For bug reports and improvement suggestions, please go to the docker-ejabberd Git Repository.

Homebrew

Homebrew is a package manager for macOS that aims to port the many Unix & Linux software that is not easily available or compatible. Homebrew installation is simple and the instruction is available on its website.

The ejabberd configuration included in Homebrew’s ejabberd has as default domain localhost , and has already granted administrative privileges to the account admin@localhost .

Once you have Homebrew installed, open Terminal. Run

This should install the latest or at most the one-before-latest version of ejabberd. The installation directory should be reported at the end of this process, but usually the main executable is stored at /usr/local/sbin/ejabberdctl .

Start ejabberd in interactive mode, which prints useful messages in the Terminal.

Create the account admin@localhost with password set as password :

Now you can go to the web dashboard at http://localhost:5280/admin/ and fill the username field with the full account JID, for example admin@localhost , then fill the password field with that account’s password .

Without configuration there’s not much to see here, therefore the next step is to get to know how to configure ejabberd.

Source Code

The canonical form for distribution of ejabberd stable releases is the source code package. Compiling ejabberd from source code is quite easy in *nix systems, as long as your system have all the dependencies.

Requirements

To compile ejabberd on a ‘Unix-like’ operating system, you need:

  • GNU Make
  • GCC
  • Libexpat 1.95 or higher
  • Libyaml 0.1.4 or higher
  • Erlang/OTP 19.3 or higher. We recommend using Erlang OTP 21.2.
  • OpenSSL 1.0.0 or higher, for STARTTLS, SASL and SSL encryption.
  • Zlib 1.2.3 or higher. Optional. For Zlib Stream Compression
  • PAM library. Optional. For PAM Authentication
  • ImageMagick’s Convert program and Ghostscript fonts. Optional. For CAPTCHA challenges.
  • Elixir 1.10.3 or higher. Optional. For Elixir Development

Downloading

Released versions of ejabberd are available on ProcessOne ejabberd official download page.

Alternatively, the latest development source code can be retrieved from the Git repository using the commands:

Compilation

To compile ejabberd execute the commands:

This tells the configuration to prepare the installed program to run with a user called ejabberd, so please create that user or tell to use another local user. It isn’t recommended to run ejabberd with root user.

Note: To build ejabberd, you will need Internet access, as dependencies will be downloaded depending on the selected options.

The build configuration script allows several options. To get the full list run the command:

Options

There are many options to modify the default compilation behaviour:

-–bindir=/ : Specify the path to the user executables (where epmd and iex are available).

-–prefix=/ : Specify the path prefix where the files will be copied when running the make install command.

—with-rebar=/ : Specify the path to rebar, rebar3 or mix

-–enable-user[=USER] : Allow this normal system user to execute the ejabberdctl script (see section ejabberdctl), read the configuration files, read and write in the spool directory, read and write in the log directory. The account user and group must exist in the machine before running make install . This account needs a HOME directory, because the Erlang cookie file will be created and read there.

-–enable-group[=GROUP] : Similar to the previous option, but for system groups.

–-enable-all : Enable many of the database and dependencies options described here, this is useful for Dialyzer checks: —enable-debug —enable-elixir —enable-mysql —enable-odbc —enable-pam —enable-pgsql —enable-redis —enable-sip —enable-sqlite —enable-stun —enable-tools —enable-zlib

–-disable-debug : Compile without +debug_info .

–-enable-elixir : Build ejabberd with Elixir extension support. Works only with rebar2. If interested in Elixir development, you may prefer to install Elixir yourself and use —with-rebar=mix

–-disable-erlang-version-check : Don’t check Erlang/OTP version.

-–enable-full-xml : Use XML features in XMPP stream (ex: CDATA). This requires XML compliant clients).

–-enable-hipe : Compile natively with HiPE. This is an experimental feature, and not recommended.

-–enable-lager : Use lager Erlang logging tool instead of standard error logger.

—enable-latest-deps : Makes rebar use latest versions of dependencies developed alongside ejabberd instead of version specified in rebar.config. Should be only used when developing ejabberd.

-–enable-lua : Enable Lua support, to import from Prosody.

-–enable-mssql : Enable Microsoft SQL Server support, this option requires —enable-odbc (see [Supported storages][18]).

-–enable-mysql : Enable MySQL support (see [Supported storages][18]).

-–enable-new-sql-schema : Use new SQL schema.

-–enable-odbc : Enable pure ODBC support.

-–enable-pam : Enable the PAM authentication method (see PAM Authentication section).

-–enable-pgsql : Enable PostgreSQL support (see [Supported storages][18]).

-–enable-redis : Enable Redis support to use for external session storage.

-–enable-roster-gateway-workaround : Turn on workaround for processing gateway subscriptions.

-–enable-sip : Enable SIP support.

-–enable-sqlite : Enable SQLite support (see [Supported storages][18]).

-–disable-stun : Disable STUN/TURN support.

—enable-system-deps : Makes rebar use locally installed dependencies instead of downloading them.

-–enable-tools : Enable the use of development tools.

-–disable-zlib : Disable Stream Compression (XEP-0138) using zlib.

Installation

There are several ways to install and run the ejabberd compiled from source code: installing in the system, building a production release, or building a development release.

System Install

To install ejabberd in the destination directories, run the command make install .

Note that you probably need administrative privileges in the system to install ejabberd.

The files and directories created are, by default:

/etc/ejabberd/ : Configuration directory:

  • ejabberd.yml : ejabberd configuration file
  • ejabberdctl.cfg : Configuration file of the administration script
  • inetrc : Network DNS configuration file for Erlang
  • ebin/ : Erlang binary files (*.beam)
  • include/ : Erlang header files (*.hrl)
  • priv/ : Additional files required at runtime
  • bin/ : Executable programs
  • lib/ : Binary system libraries (*.so)
  • msgs/ : Translation files (*.msgs)

/sbin/ejabberdctl : Administration script (see section ejabberdctl).

/share/doc/ejabberd/ : Documentation of ejabberd

/var/lib/ejabberd/ : Spool directory:

  • .erlang.cookie : The Erlang cookie file
  • acl.DCD, . : Mnesia database spool files (*.DCD, *.DCL, *.DAT)

/var/log/ejabberd/ : Log directory (see section [logfiles]):

  • ejabberd.log : ejabberd service log
  • erlang.log : Erlang/OTP system log

Production Release

You can build a release that includes ejabberd, Erlang/OTP and all the required erlang dependencies in a single tar.gz file. Then you can copy that file to another machine that has the same machine architecture, and run ejabberd without installing anything else.

To build that release, run:

If you configured —with-rebar to use rebar3 or mix, this will directly produce a tar.gz that you can copy. For example:

Development Release

If you configured —with-rebar to use rebar3 or mix, you can build a development release.

This is designed to run ejabberd in the local machine for development, manual testing. without installing in the system.

This development release has some customizations: uses a dummy certificate file, if you register the account admin@localhost it has admin rights.

To build a development release and start ejabberd in live mode:

Specific notes

The command to compile ejabberd in BSD systems is gmake .

macOS

If compiling from sources on macOS, you must configure ejabberd to use custom OpenSSL, Yaml, iconv. The best approach is to use Homebrew to install your dependencies, then exports your custom path to let configure and make be aware of them.

Next steps

Starting ejabberd

Depending on how you installed ejabberd, it may be started automatically by the operating system at system boot time.

You can use the ejabberdctl command line administration script to start and stop ejabberd, check its status and many other administrative tasks.

If you provided the configure option –enable-user=USER (see compilation options), you can execute ejabberdctl with either that system account or root.

If ejabberd doesn’t start correctly and a crash dump file is generated, there was a severe problem. You can try to start ejabberd in interactive mode with the command bin/ejabberdctl live to see the error messages provided by Erlang and identify the exact the problem.

The ejabberdctl administration script is included in the bin directory in the Linux Installers and Docker image.

Please refer to the section ejabberdctl for details about ejabberdctl , and configurable options to fine tune the Erlang runtime system.

Autostart on Linux

On a *nix system, create a system user called ‘ejabberd’, give it write access to the directories database/ and logs/ , and set that as home.

If you want ejabberd to be started as daemon at boot time with that user, copy ejabberd.init from the bin directory to something like /etc/init.d/ejabberd . Then you can call /etc/inid.d/ejabberd start to start the server.

Or if you have a systemd distribution:

  1. copy ejabberd.service to /etc/systemd/system/
  2. run systemctl daemon-reload
  3. run systemctl enable ejabberd.service
  4. To start the server, you can run systemctl start ejabberd

When ejabberd is started, the processes that are started in the system are beam or beam.smp , and also epmd . For more information regarding epmd consult the section relating to epmd.

Administration Account

ejabberd binary installer prompts you for an admin account, so in that case, you can probably skip this step.

However, if you use another way of installing ejabberd you may need to create an admin XMPP account.

You need an XMPP account with administrative privileges to enter the ejabberd Web Admin. Here are the steps to create it:

Register an XMPP account on your ejabberd server, for example admin1@example.org . There are two ways to register an XMPP account:

Using an XMPP client and In-Band Registration.

Edit the ejabberd configuration file to give administration rights to the XMPP account you created:

You can grant administrative privileges to many XMPP accounts, and also to accounts in other XMPP servers.

Restart ejabberd to load the new configuration.

Open the Web Admin page (usually http://localhost:5280/admin/ ) in your favourite browser. Make sure to enter the *full JID (in this example: admin1@example.org ). See Web Admin for details.

Configuring ejabberd

Now that you got ejabberd installed and running, it’s time to configure it to your needs. You can follow on the Configuration section and take also a look at the Tutorials.

Источник

Читайте также:  Как использовать pip python windows
Оцените статью