После смены имени хоста сервера 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
Вот и вся премудрость.