Создание корпоративного чата
Добрый день! Достаточно давно я хотел огранизовать корпоративный чат, да всё никак не мог определиться на каком ПО всё это строить. Задача: бесплатный, сервер должен быть локальным и желательно под линукс, возможность передачи файлов желательно и для пользователей кто оффлайн, красивый интерфейс и смайлики :). Путём проб и ошибок всё-таки пришел к конечному результату, который сейчас используем. Чтобы избавить Вас от столь мучительных поисков — опишу весь процесс тут.
Итак, что я пробовал:
- 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.Выбираем язык (как говорилось на некоторых сайтах — лучше выбирать английский, т.к. русский перевод очень хромает)
2. Имя сервера и порты оставляем без изменения, жмём дальше
3. Далее выбираем тип базы данных. Внешняя или встроенная. Я выбрал встроенную (Embedded) базу данных
4. Выбираем способ авторизации пользователей. Я выбрал первый вариант и данные о всех пользователях будут храниться локально
5. Устанавливаем пароль для администратора. E-mail я убрал
Создание корпоративного чата: 2 комментария
Борьба с кракозябрами в кирилических именах групп в Жаба-клиентах (Это точно работает со 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)
День добрый. Интересный опыт.
С MyChat не сложилось только из-за того, что это коммерческий продукт, а покупать не хотелось и у вас больше 20 человек онлайн?
OpenFire, конечно, убожество. Но бесплатное. Есть желание написать статью по свежей версии MyChat сейчас?