Ejabberd смена имени хоста

После смены имени хоста сервера ejabberd часто отказывается запускаться. Если у вас ejabberd >= 2.1.10 и вы знаете как называлась нода ejabberd, то решение довольно простое. Идем в /etc/default/ejabberd и вписывем старое название ноды (не старое имя хоста, а именно ejabberd ноды) после чего рестартим ejabberd

ERLANG_NODE=ejabberd@server1

После этого нода должна запуститься и все заработать, но скажем если набрать

ejabberdctl status

то получим в ответ node down, что согласитесь не совсем хорошо, даже если по факту все работает. Для того чтобы исправить это нужно изменить название ноды в соответствии с именем хоста самого сервера

Для этого:

  • Устанавливаем старый hostname на машине
  • Делаем бэкап БД mnesia. ejabberdctl backup /tmp/ejabberd.backup
  • Бэкапим куда нибудь этот самый бэкап, так как из /tmp он с большой вероятностью пропадет после перезагрузки, конфиги ejabberd и /var/lib/ejabberd бэкапим тоже
  • Удаляем пакет ejabberd и очищаем полностью /var/lib/ejabberd .erlang_cookie тоже.
  • Меняем hostname на нужный и заново устанавливаем Ejabberd
  • Восстанавливаем бэкап по необходимости (У меня все поднялось без восстановления бэкапа) ejabberdctl restore /path/to/file/ejabberd.backup

Вот и вся премудрость.

Оцените статью