在Ubuntu 20.04上安装EJABBERD XMPP服务器

时间:2020-02-23 14:39:14  来源:igfitidea点击:

EJABBERD是一种用于速度和效率的开源XMPP服务器。
该工具已由具有容错,简单配置和可扩展性的基础构建。
缩放是向群集中添加额外虚拟机的问题。
EJABBERD支持验证MINESIA,SQL,LDAP等模块或者通过使用外部脚本。
本文将介绍我们需要在Ubuntu 20.04上安装ejabberd xmpp服务器所需的步骤。

EJABBERD利用MNESIA(分布式内部ERLANG数据库)持续存在数据,但支持其他数据库系统。
这包括; SQL数据库,如MySQL或者Postgresqlnosql数据库,如Riak(也写在Erlang)

EJABBERD XMPP服务器的主要功能

EJABBERD旨在模块化,以确保高级别的自定义,并轻松访问所需的功能。

存储和转发(脱机消息)联系人列表(名单)和存在于One MessicingUser Presence Extense:Personal Event协议(PEP)和执行带有vCardsGroup聊天的指示器配置文件:MUC(多用户聊天)消息传递归档使用邮件存档管理(MAM)消息传递收据(AKA XEP-184)隐私设置,通过隐私列表和简单的阻塞扩展程序级活动媒体和完整的命令行管理程序功能Web支持,带有BOSH和Web SocketsStream管理,用于移动到Mobile的消息可靠性(AKA XEP-0198 )还有更多。

第1步:下载ejabberd二进制文件

EJABBERD社区服务器二进制文件可用于Linux和Windows。
我们可以使用通用安装程序脚本或者特定于操作系统的二进制包,例如Debian系列的,用于Debian系列的Deab Package,用于Linux发行版的Red Hat系列。

我们将将ejabberd debian包安装到我们当地的系统 - Ubuntu 20.04机器。

我们可能需要查看最新版本的EJABBERD下载页面。
截至本文更新,这是20.04:

EJ_VERSION=20.04
wget https://static.process-one.net/ejabberd/downloads/${EJ_VERSION}/ejabberd_${EJ_VERSION}-0_amd64.deb

确认包已下载。

$ls -lh ejabberd_${EJ_VERSION}-0_amd64.deb
-rw-r--r-- 1 root root 18M Apr 30 10:06 ejabberd_20.04-0_amd64.deb

第2步:在Ubuntu 20.04上安装EJABBERD XMPP服务器

已下载包后,我们可以使用APT包管理器安装它。

sudo apt install ./ejabberd_${EJ_VERSION}-0_amd64.deb

确认在Ubuntu 20.04上成功安装EJABBERD XMPP服务器:

.....
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Note, selecting 'ejabberd' instead of './ejabberd_20.04-0_amd64.deb'
The following NEW packages will be installed:
  ejabberd
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/18.5 MB of archives.
After this operation, 28.1 MB of additional disk space will be used.
Get:1 /root/ejabberd_20.04-0_amd64.deb ejabberd amd64 20.04-0 [18.5 MB]
Selecting previously unselected package ejabberd.
(Reading database ... 28241 files and directories currently installed.)
Preparing to unpack .../ejabberd_20.04-0_amd64.deb ...
Unpacking ejabberd (20.04-0) ...
Setting up ejabberd (20.04-0) ...

安装程序将执行许多动作:为此系统的应用程序管理创建主目录添加EJABBERD系统用户 - /OPT/EJABBERDSTART Core EJABBERD服务

$ls /opt/ejabberd
conf  database  logs
$getent passwd ejabberd
ejabberd:x:998:998::/opt/ejabberd:/bin/sh

第3步:在Ubuntu 20.04上启动EJABBERD服务

安装完成后,我们可以在Ubuntu 20.04上启动EJABBERD服务:

sudo cp $(sudo find/-name ejabberd.service) /etc/systemd/system

重新加载系统:

sudo systemctl daemon-reload

启动服务并启用它以启动启动:

sudo systemctl enable --now ejabberd

确保服务已启动而没有任何错误:

$systemctl status ejabberd
● ejabberd.service - XMPP Server
     Loaded: loaded (/etc/systemd/system/ejabberd.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2017-05-23 11:31:59 CEST; 4s ago
    Process: 1478 ExecStart=/bin/sh -c /opt/ejabberd-20.04/bin/ejabberdctl start && /opt/ejabberd-20.04/bin/ejabberdctl started (code=exited, status=0
      Tasks: 23 (limit: 4567)
     Memory: 53.1M
     CGroup: /system.slice/ejabberd.service
             ├─1526 /opt/ejabberd-20.04/bin/epmd -daemon
             ├─1528 /opt/ejabberd-20.04/bin/beam.smp -K true -P 250000 -- -root /opt/ejabberd-20.04 -progname /opt/ejabberd-20.04/bin/erl -- -home /opt>
             ├─1539 erl_child_setup 65536
             └─1567 /opt/ejabberd-20.04/lib/os_mon-2.4.7/priv/bin/memsup
Jan 23 11:31:56 ubuntu systemd[1]: Starting XMPP Server...
Jan 23 11:31:59 ubuntu systemd[1]: Started XMPP Server.

将ejabberdctl命令位置添加到路径

找到ejabberdctl。

$sudo find/-name ejabberdctl
/opt/ejabberd-20.04/bin/ejabberdctl

添加到路径 .bashrc文件。

$vim ~/.bashrc

设置如下 - 但替换/opt/ejabberd-20.04/bin/使用从查找命令中找到的版本路径:

PATH=$PATH:/opt/ejabberd-20.04/bin/

来源要反映的新路径的文件:

source ~/.bashrc

第4步:将管理员用户添加到ejabberd

我们可以为ejabberd添加用户以获取管理目的。

语法:

ejabberdctl register <username> <server_hostname>  <user-password>

在我的情况下,我将运行以下命令:

# ejabberdctl register theitroad $(hostname) StrongPassword
User Hyman@theitroad successfully registered

其中:onitad是要创建的用户的名称.StrongPass是与创建用户关联的密码。

编辑EJABBERD配置文件,为我们创建的XMPP帐户提供管理权限。

用户格式:

"Hyman@theitroad"

编辑ACL部分并添加用户。

$sudo vim /opt/ejabberd/conf/ejabberd.yml
......
acl:
  local:
    user_regexp: ""
  loopback:
    ip:
      - 127.0.0.0/8
      - ::1/128
      - ::FFFF:127.0.0.1/128
  admin:
    user:
      - "Hyman@theitroad"
      - "Hyman@theitroad"

在Ubuntu上重新启动EJABBERD服务:

sudo systemctl restart ejabberd

我们可以根据需要将管理权限授予尽可能多的XMPP帐户,以及其他XMPP服务器的帐户。

第5步:访问ejabberd web admin

应该在http://server_ip_address_or_hostname:5280/admin /中访问Web管理员。

检查端口是否绑定:

# ss -tunelp | grep 5280
tcp    LISTEN  0 5  *:5280   *:* users:(("beam.smp",pid=3124,fd=47)) uid:998 ino:66294 sk:8 v6only:0 <->

如果我们有UFW防火墙,请允许端口5280:

sudo ufw allow 5280

在浏览器中打开EJABBERD Web URL。
输入前面配置的用户名和密码。