Установка и настройка личного XMPP сервера
| Уровень сложности | Средний |
| Права root | Требуются |
| Требования | Терминал Linux |
| Категория | Установка ПО |
| Совместимость с ОС | Debian |
| Примерное время чтения | 2 часа |
Введение
В этой инструкции мы развернём полноценный XMPP-сервер для личного или корпоративного использования.
После завершения у вас будет:
- собственный Jabber-сервер
- поддержка федерации (другие сервера смогут писать вам)
- шифрование TLS
- поддержка OMEMO (сквозное шифрование в клиентах)
- веб-админка
- закрытая регистрация (без спама)
- возможность голосовых и видео-звонков
В этой инструкции используется официальный .deb пакет проекта ejabberd с GitHub, а не версия из стандартного репозитория Debian.
У него отличается расположение файлов: конфигурация находится в /opt/ejabberd/conf/, а не в /etc/ejabberd/, как в Debian-пакете.
Если вы установили ejabberd через apt install ejabberd, пути и структура каталогов будут другими, и команды из этой инструкции могут не совпадать.
Подготовка VPS
XMPP сервер обязан знать своё правильное доменное имя. Если hostname не совпадает, то TLS и федерация будут работать с ошибками.
В инструкции будет использоваться домен ms.tex-lab.ru и IP сервера 62.173.138.27 как пример. Обязательно замените их на свои реальные домен и IP при настройке.
1) Устанавливаем FQDN
Выполняем команду:
hostnamectl set-hostname ms.tex-lab.ru
Проверяем:
hostnamectl
Должно быть:
Static hostname: ms.tex-lab.ru
2) Правим /etc/hosts
Открываем
nano /etc/hosts
Добавляем:
127.0.0.1 localhost
IP_ВАШЕГО_VPS ms.tex-lab.ru
Это нужно, чтобы сервер корректно сопоставлял своё имя и IP.
Настройка DNS
В панели домена создаём следующие записи:
A-запись
- Тип: A
- Имя: ms
- Значение: 62.173.138.27
Это указывает домен на ваш сервер.
SRV-записи
- Тип: SRV
- Имя: _xmpp-client._tcp.ms.tex-lab.ru
- Приоритет: 0
- Вес: 5
- Порт: 5222
- Целевой хост: ms.tex-lab.ru
- Тип: SRV
- Имя: _xmpp-server._tcp.ms.tex-lab.ru
- Приоритет: 0
- Вес: 5
- Порт: 5269
- Целевой хост: ms.tex-lab.ru
SRV записи нужны для федерации и правильного подключения клиентов.
Проверяем:
dig SRV _xmpp-client._tcp.ms.tex-lab.ru
dig SRV _xmpp-server._tcp.ms.tex-lab.ru
Установка ejabberd
Скачиваем официальный релиз:
wget https://github.com/processone/ejabberd/releases/download/26.02/ejabberd_26.02-1_amd64.deb
Если сервер ARM, то нужен arm64 пакет.
В уроке мы устанавливаем версию 26.2.0, но уже может выйти новая версия, когда Вы читаете этот текст. Проверяйте актуальную версию на странице GitHub проекта!
Обновляем список пакетов:
apt update
Устанавливаем:
apt install ./ejabberd_26.02-1_amd64.deb
Проверяем запуск:
ejabberdctl status
Установка прошла успешно, если сервис запустился и работает.
Открытие портов
Основные XMPP-порты
| Порт | Протокол | Назначение |
|---|---|---|
| 5222 | TCP | Подключение клиентов (STARTTLS) |
| 5269 | TCP | Связь между XMPP-серверами (S2S) |
| 5443 | TCP | Веб-админка |
| 5280 | TCP | HTTP-bind / WebSocket (если используется) |
Порты для звонков (STUN / TURN)
| Порт | Протокол | Назначение |
|---|---|---|
| 3478 | UDP | STUN / TURN |
| 3478 | TCP | TURN |
| 5349 | TCP | TURN over TLS |
Эти порты обязательны, если используется coturn
Как открыть порты в Linux
Если используется UFW:
ufw allow 5222/tcp
ufw allow 5269/tcp
ufw allow 5443/tcp
ufw allow 5280/tcp
ufw allow 3478/tcp
ufw allow 3478/udp
ufw allow 5349/tcp
Проверить статус:
ufw status
Если UFW выключен:
ufw enable
Если используется iptables
Пример открытия портов:
iptables -A INPUT -p tcp --dport 5222 -j ACCEPT
iptables -A INPUT -p tcp --dport 5269 -j ACCEPT
iptables -A INPUT -p tcp --dport 5443 -j ACCEPT
iptables -A INPUT -p tcp --dport 5280 -j ACCEPT
iptables -A INPUT -p tcp --dport 3478 -j ACCEPT
iptables -A INPUT -p udp --dport 3478 -j ACCEPT
iptables -A INPUT -p tcp --dport 5349 -j ACCEPT
Не забудьте сохранить правила.
Получение SSL сертификата
Без TLS XMPP сервер считается небезопасным, а федерация может не работать.
1) Останавливаем ejabberd:
systemctl stop ejabberd
2) Устанавливаем certbot:
apt install certbot
3) Получаем сертификат:
certbot certonly --standalone -d ms.tex-lab.ru
4) Создаём группу (если её нет)
groupadd ssl-cert
Обычно она уже существует, но команда не повредит.
5) Добавляем пользователя ejabberd в эту группу
usermod -aG ssl-cert ejabberd




