在 Ubuntu 22.04 | 20.04 | 上安装 Ejabberd XMPP 服务器
Ejabberd 是一款开源 XMPP 服务器,旨在提高速度和效率。该工具是从头开始构建的,具有容错性、简单的配置和可扩展性。扩展就是向集群添加额外的虚拟机。 Ejabberd 支持验证模块,例如 Mnesia、SQL、LDAP 或通过使用外部脚本进行验证。本文将引导您完成在 Ubuntu 22.04|20.04 上安装 Ejabberd XMPP 服务器所需的步骤。
Ejabberd 使用Mnesia(分布式内部 Erlang 数据库)来保存数据,但也支持其他数据库系统。这包括;
- SQL 数据库,例如 MySQL 或 PostgreSQL
- NoSQL 数据库,例如 Riak(也是用 Erlang 编写的)
Ejabberd XMPP 服务器的主要功能
Ejabberd 被设计为模块化,以确保高水平的定制和轻松访问所需的功能。
- 存储转发(离线消息)
- 联系人列表(花名册)和出席情况
- 一对一消息传递
- 用户状态扩展:个人事件协议 (PEP) 和打字指示器
- 带有 vCard 的用户配置文件
- 群聊:MUC(多用户聊天)
- 使用消息归档管理 (MAM) 进行消息归档
- 消息传递收据(又名 XEP-184)
- 隐私设置,通过隐私列表和简单的阻止扩展
- 上次活动
- 指标和完整的命令行管理
- 全功能网络支持,带有 BOSH 和网络套接字
- 移动设备上消息可靠性的流管理(又名 XEP-0198)
等等。
在执行安装之前,请设置正确的服务器主机名
sudo hostnamectl set-hostname ejabberd.example.com
sudo hostnamectl set-hostname ejabberd.example.com --static
logout
步骤1:下载ejabberd二进制文件
ejabberd 社区服务器二进制文件适用于 Linux 和 Windows。您可以使用通用安装程序脚本,或特定于操作系统的二进制包,例如 Debian 系列的 .deb 包和 Red Hat 系列 Linux 发行版的 .rpm 。
我们将把 ejabberd Debian 软件包安装到我们的本地系统 – Ubuntu 机器上。
您可能需要检查 ejabberd 下载页面以获取可用的最新版本。截至本文更新,时间为21.07
EJ_VERSION=23.01
wget https://static.process-one.net/ejabberd/downloads/${EJ_VERSION}/ejabberd_${EJ_VERSION}-1_amd64.deb
确认包已下载。
$ ls -lh ejabberd_${EJ_VERSION}-1_amd64.deb
-rw-rw-r--. 1 jkmutai jkmutai 15M Jan 17 18:13 ejabberd_23.01-1_amd64.deb
第2步:安装Ejabberd XMPP服务器
下载软件包后,您可以使用apt软件包管理器来安装它。
sudo apt install ./ejabberd_${EJ_VERSION}-1_amd64.deb
确认在 Ubuntu 22.04/20.04 上成功安装 Ejabberd XMPP 服务器:
.....
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Note, selecting 'ejabberd' instead of './ejabberd_21.07-0_amd64.deb'
The following packages were automatically installed and are no longer required:
libcamel-1.2-62 libextutils-pkgconfig-perl libgupnp-1.2-0 pkg-config
Use 'sudo apt autoremove' to remove them.
The following NEW packages will be installed:
ejabberd
0 upgraded, 1 newly installed, 0 to remove and 108 not upgraded.
Need to get 0 B/18.8 MB of archives.
After this operation, 28.7 MB of additional disk space will be used.
Get:1 /home/jkmutai/ejabberd_21.07-0_amd64.deb ejabberd amd64 21.07-0 [18.8 MB]
Selecting previously unselected package ejabberd.
(Reading database ... 141300 files and directories currently installed.)
Preparing to unpack .../ejabberd_21.07-0_amd64.deb ...
Unpacking ejabberd (21.07-0) ...
Setting up ejabberd (21.07-0) ...
安装程序将执行许多操作:
- 添加ejabberd系统用户进行应用管理
- 为此系统用户创建主目录 – /opt/ejabberd
- 启动核心ejabberd服务
$ ls /opt/ejabberd
conf database logs
$ getent passwd ejabberd
ejabberd:x:998:998::/opt/ejabberd:/bin/sh
第三步:启动ejabberd服务
安装完成后,您可以在 Ubuntu 22.04|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 2020-05-23 11:31:59 CEST; 4s ago
Process: 1478 ExecStart=/bin/sh -c /opt/ejabberd-21.07/bin/ejabberdctl start && /opt/ejabberd-21.07/bin/ejabberdctl started (code=exited, status=0/>
Tasks: 23 (limit: 4567)
Memory: 53.1M
CGroup: /system.slice/ejabberd.service
├─1526 /opt/ejabberd-21.07/bin/epmd -daemon
├─1528 /opt/ejabberd-21.07/bin/beam.smp -K true -P 250000 -- -root /opt/ejabberd-21.07 -progname /opt/ejabberd-21.07/bin/erl -- -home /opt>
├─1539 erl_child_setup 65536
└─1567 /opt/ejabberd-21.07/lib/os_mon-2.4.7/priv/bin/memsup
May 23 11:31:56 ubuntu systemd[1]: Starting XMPP Server...
May 23 11:31:59 ubuntu systemd[1]: Started XMPP Server.
将 ejabberdctl 命令位置添加到您的 PATH
找到 ejabberdctl.
$ sudo find / -name ejabberdctl
/opt/ejabberd-21.07/bin/ejabberdctl
将 的路径添加到您的 .bashrc
文件中。
sudo su -
vim ~/.bashrc
设置如下 - 但将 /opt/ejabberd-21.07/bin/ 替换为从 find 命令找到的版本路径:
PATH=$PATH:/opt/ejabberd-21.07/bin/
获取要反映的新路径的文件:
source ~/.bashrc
第 4 步:向 Ejabberd 添加管理员用户
您可以出于管理目的向 ejabberd 添加用户。
句法 :
ejabberdctl register <username> <server_hostname> <user-password>
就我而言,我将运行以下命令:
# ejabberdctl register computingforgeeks $(hostname) StrongPassword
User [email successfully registered
在哪里 :
- computingforgeeks 是要创建的用户的名称。
- StrongPassword 是与创建的用户关联的密码。
编辑 ejabberd 配置文件,为您创建的 XMPP 帐户授予管理权限。
用户格式:
"username@servername"
编辑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:
- "admin@ejabberd.example.com"
- "computingforgeeks@ejabberd.example.com"
在 Ubuntu 上重新启动 Ejabberd 服务:
sudo systemctl restart ejabberd
您可以向任意数量的 XMPP 帐户以及其他 XMPP 服务器中的帐户授予管理权限。
第 5 步:访问 ejabberd 网络管理
应可通过 http://server_ip_address_or_hostname:5280/admin/ 访问网络管理员。
检查端口是否绑定:
# 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。输入之前配置的用户名和密码。
应显示对 Ejabberd Web 控制台的访问。
您已在 Ubuntu 22.04|20.04 上成功安装 Ejabberd XMPP 服务器。