Создание корпоративного чата

Создание Jabber сервера

Добрый день! Достаточно давно я хотел огранизовать корпоративный чат, да всё никак не мог определиться на каком ПО всё это строить. Задача: бесплатный, сервер должен быть локальным и желательно под линукс, возможность передачи файлов желательно и для пользователей кто оффлайн, красивый интерфейс и смайлики :). Путём проб и ошибок всё-таки пришел к конечному результату, который сейчас используем. Чтобы избавить Вас от столь мучительных поисков — опишу весь процесс тут.

Итак, что я пробовал:

  • Bimoid
    • Плюсы:
      • Бесплатный;
      • Сервер ставится в локальную сеть;
      • Красивый интерфейс;
      • Красивые смайлики;
      • Передача файлов.
    • Минусы:
      • Сервер только для Windows;
      • Передача файлов только для онлайн пользователей, т.е. если я отправляю файл тому, кто сейчас не в сети, то когда он придёт, файл этот уже не получит.
      • Всё бы ничего, но передача файлов работает далеко не всегда. Даже при отключенных антивирусе с фаерволом на обеих сторонах — возникают ошибки передачи. Из-за этого пришлось отказаться от него.
  • MyChat
    • Плюсы:
      • Сервер ставится в локальную сеть;
      • Красивый интерфейс;
      • Красивые смайлики;
      • Передача файлов даже для тех кто оффлайн!
      • Многофункциональный WEB-интерфейс.
    • Минус
      • Бесплатен только до 20 пользователей.
  • XMPP-сервер Openfire
    • Плюсы:
      • Бесплатный
      • Для линукса
      • Работает из коробки
      • Более-менее руссифицирован
      • Часто рекомендуют на форумах
    • Минусы:
      • Не особо удобен, ну и да ладно

Я решил остановиться на сервере Openfire и подыскать клиента для него:

  • Spark
    • Плюсы:
      • От того же производителя, что и Openfire (по идее совместимость должна быть идеальная)
      • Возможность тонкой настройки
      • Всплывающее окошко при получении сообщения
    • Минусы:
      • Передача файлов такая же нестабильная как у Bimoid
      • Написан на Java (надо ставить JDK)
      • Стрёмные смайлики
      • Некрасивый интерфейс
      • Передача файлов только для онлайн пользователей
  • Pidgin
    • Плюсы:
      • Богатые настройки
      • Возможность устанавливать свои смайлики
      • Стабильная передача файлов
    • Минусы:
      • Нет всплывающих сообщений
      • Использования линуксового интерфейса при передаче файлов
      • Передача файлов только для онлайн пользователей

И ещё некоторые клиенты, которые мне так и не удалось подружить с Openfire:

  • QIP 2012
  • QIP 2005
  • Cisco Jabber
  • PSI
  • Miranda

Я остановился на связке Openfire (Linux) + Pidgin (Windows).

Берём старенький Debian 6.0, на который нам надо установить Jabber сервер, а именно Openfire.

Обновление JDK

Запускаем терминал от имени суперпользователя и далее все команды выполняем в нём. Делаем обновление:

apt-get update
apt-get upgrade

Согласно документации перед установкой нам нужен JDK или JRE 1.7.0 и выше. Проверяем есть ли у нас Java и какой она версии:

java -version

В качестве ответа я получил следующее:

java version "1.6.0_38"
OpenJDK Runtime Environment (IcedTea6 1.13.10) (6b38-1.13.10-1~deb7u1)
OpenJDK Client VM (build 23.25-b01, mixed mode, sharing)

Поэтому нужно обновить JDK хотябы до 1.7.0.

Автоматический режим

su -
echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | tee /etc/apt/sources.list.d/webupd8team-java.list
echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | tee -a /etc/apt/sources.list.d/webupd8team-java.list
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886
apt-get update
apt-get install oracle-java8-installer
apt-get install oracle-java8-set-default

Ручной режим (если не удался автоматический)

Заходим на сайт и качаем jdk-8u111-linux-i586.tar.gz. Далее устанавливаем согласно инструкции:

В открытом ранее терминале выполняем команды:

cd /opt
mkdir jdk

Теперь нужно скопировать скаченный файл jdk-8u111-linux-i586.tar.gz в папку /opt/jdk. Если Вы изначально скачали этот файл в папку /home/user/Загрузки, ты выполняем эту команду:

cp /home/user/Загрузки/jdk-8u111-linux-i586.tar.gz /opt/jdk/

Переходим в папку /opt/jdk и распаковываем архив и смотрим список файлов:

cd /opt/jdk
tar -zxf jdk-8u66-linux-x64.tar.gz
ls

Получилось у меня так:

jdk1.8.0_111  jdk-8u111-linux-i586.tar.gz

Из этого видно, что архив распаковался в папку jdk1.8.0_111. Теперь устанавливаем JDK в папки /usr/bin/java и/usr/bin/javac, выполнив команды (что за сотня в конце — я не знаю, не спрашивайте):

update-alternatives --install /usr/bin/java java /opt/jdk/jdk1.8.0_111/bin/java 100
update-alternatives --install /usr/bin/javac javac /opt/jdk/jdk1.8.0_111/bin/javac 100

Теперь нужно сконфигурировать Java. Выполняем следующие действия:

update-alternatives --config java

В ответ получаем что-то типа того:

Есть 3 варианта для альтернативы java (предоставляет /usr/bin/java).

  Выбор   Путь                                       Приор Состояние
------------------------------------------------------------
* 0            /usr/lib/jvm/java-6-openjdk-i386/jre/bin/java   1061      автоматический режим
  1            /opt/jdk/jdk1.8.0_111/bin/java                  100       ручной режим
  2            /usr/lib/jvm/java-6-openjdk-i386/jre/bin/java   1061      ручной режим
  3            /usr/lib/jvm/java-7-openjdk-i386/jre/bin/java   1051      ручной режим

Нажмите enter, чтобы сохранить текущий выбор[*], или введите выбранное число: 

Судя по данной таблице нам нужно выбрать свежеустановленный JDK, то есть ввести цифру 1 и нажать Enter. В ответ получаем:

update-alternatives: используется /opt/jdk/jdk1.8.0_111/bin/java для предоставления /usr/bin/java (java) в ручном режиме

Далее такую же операцию проделываем для команды

update-alternatives --config javac

 

После этого проверяем версию Java снова:

java -version

В ответе:

java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) Client VM (build 25.111-b14, mixed mode)

Это то что нам нужно, можем приступать к установке Openfire.

Установка Openfire

С сайта скачиваем файл openfire_4_0_3.tar.gz и устанавливаем согласно инструкции:

В терминале заходим в папку в которую скачали openfire_4_0_3.tar.gz и выполняем команду:

tar -xzvf openfire_4_0_3.tar.gz

Перемещаем всё то что распаковалось в папку /opt:

mv openfire /opt

Запускаем сервис:

cd /opt/openfire/bin
./openfire start

Теперь открываем браузер и переходим по адресу http://127.0.0.1:9090/. Также можно обратиться и с других компьютеров сети используя IP сервера.

Нам ещё нужно поместить этот сервис в автозагрузку, для этого редактируем файл rc.local:

nano /etc/rc.local

Перед текстом exit 0 пишем /opt/openfire/bin/openfire start и сохраняем нажатием Ctrl+X, затем Y. Можете перезагружаться и проверять работоспособность WEB-интерфейса.

Первоначальная настройка Openfire

Открываем WEB-интерфейс Openfire в браузере по адресу http://127.0.0.1:9090/, либо с любого другого компьютера сети.

1.Выбираем язык (как говорилось на некоторых сайтах — лучше выбирать английский, т.к. русский перевод очень хромает)

openfire

2. Имя сервера и порты оставляем без изменения, жмём дальше

openfire2

3. Далее выбираем тип базы данных. Внешняя или встроенная. Я выбрал встроенную (Embedded) базу данных

openfire3

4. Выбираем способ авторизации пользователей. Я выбрал первый вариант и данные о всех пользователях будут храниться локально

openfire4

5. Устанавливаем пароль для администратора. E-mail я убрал

openfire5

(Просмотрено 1 763 раз, 1 раз за сегодня)
Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Комментариев к записи: 1

  1. Dark Mind:

    Борьба с кракозябрами в кирилических именах групп в Жаба-клиентах (Это точно работает со Spark):

    Убил двое суток пока разгреб косяк.

    Все упиралось в несколько дополнительных строк конфига MySQL.

    UTF-8 в MySQL:
    /etc/mysql/my.cnf

    В конце дописываем
    [mysqld]
    character-set-server = utf8
    collation-server = utf8_unicode_ci
    init_connect=’SET collation_connection = utf8_unicode_ci’

    [client]
    default_character_set = utf8

    После этого — полет нормальный.

    (Ubuntu Server 16.04 в дефолтовой установке LAMP+SSH, локаль русская UTF8. Виртуальная машина с OpenFire поселилась на хосте VMware ESXi 6.5, OpenFire берет юзверей из Win AD)

Оставить комментарий