Быстрая установка OTRS
- Понятия helpdesk и servicedesk неразрывно связаны с двумя программными продуктами — Request Tracker и OTRS, потому что они не только стали первыми представителями Open Source в этой сфере, но и успешно существуют по сей день.
- Хотя к ним существует много справедливых претензий, трудно предложить альтернативу, совмещающую такой же набор характеристик: открытые исходные тексты, бесплатность, возможность размещения на собственном сервере, относительная нетребовательность к ресурсам, гибкость настроек, широкая клиентская база, обилие документации и наличие коммерческих вариантов, гарантирующих продолжение разработки.
- По этой причине количество инсталляций OTRS продолжает расти, и мы решили свести в одном документе все рецепты, позволяющие запустить новую систему за минимальное время.
Выбор пакета:
- Готовые пакеты имеются во многих распространённых дистрибутивах, но использовать их не рекомендуется из-за отставания версий:
- https://pkgs.org/search/?q=otrs — дистрибутивные,
- https://ftp.otrs.org/pub/otrs — от разработчиков.
- Разработчики собирают пакеты только для трёх дистрибутивов: CentOS 7, Fedora 26 и OpenSuSE 13.
- С учётом сроков поддержки это означает, что единственным приемлемым вариантом становится CentOS 7, в противном случае придётся иметь дело либо со старым пакетом, либо с полностью ручной установкой.
Предварительные требования:
- Для работы системе потребуется не менее 4 гигабайт ОЗУ. На 2 гигабайтах мы столкнулись с нехваткой памяти.
- Официальная документация
покушается на святоетребует отключать SELinux:
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config &&
reboot
Мы пока не стали проверять их на собственном опыте, но готовы рекомендовать это сделать всем борцам за безопасность:
SQL-сервер:
- Годится любой форк MySQL. Например:
yum install -y mariadb-server
[mysqld]
bind-address = 127.0.0.1
max_allowed_packet = 64M
character-set-server = utf8
collation-server = utf8_general_ci
innodb_log_file_size = 512M
systemctl enable mariadb
systemctl start mariadb
SQLPASS="$(openssl rand -hex 30)"
echo "New root password for MySQL: $SQLPASS"
mysql -u root -e "set password for root@localhost = password('$SQLPASS')"
Теперь установим OTRS:
- Разработчики выкладывают собранные пакеты на Веб-сервер, но не стали утруждать себя созданием Yum-репозитария,
поэтому нам необходимо автоматизировать поиск актуальной версии.
На помощь снова приходит замечательная утилита lftp, которая уже выручала нас в одной из предыдущих статей:
which lftp || yum install -y lftp
FPATH="$(lftp -e 'cls -q -1 -D --sort=date /pub/otrs/RPMS/rhel/7/otrs*.noarch.rpm; exit' http://ftp.otrs.org/ | tail -1)"
echo $FPATH
yum install -y http://ftp.otrs.org/$FPATH
Check OTRS user ... useradd: не удалось создать каталог /opt/otrs/
Продолжение установки:
- По зависимостям установится HTTP-сервер Apache, но т.к. в дистрибутивах от RedHat не принято автоматически запускать устанавливаемые сервисы, мы должны запустить его сами:
systemctl enable httpd
systemctl start httpd
/opt/otrs/bin/otrs.SetPermissions.pl --web-group=apache
/opt/otrs/bin/otrs.CheckModules.pl | egrep -o 'perl\([^ ]+::[^ ]+\)' | xargs -r yum install -y
[Unit]
Description=OTRS Help Desk Daemon.
After=network.target mariadb.service
[Service]
Type=forking
User=otrs
Group=apache
ExecStart=/opt/otrs/bin/otrs.Daemon.pl start
ExecStop=/opt/otrs/bin/otrs.Daemon.pl stop
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable otrs
systemctl start otrs
systemctl status otrs
Настройка через веб-интерфейс:
- Теперь мы можем открыть в веб-браузере http://настроенное-имя-сайта/otrs/installer.pl и выполнить начальную настройку.
- Почти все шаги очевидны, за исключением “Mail setup”.
- Для “Mail setup” следует выбрать “skip”, чтобы избежать ошибки, описанной в https://github.com/complemento/docker.otrs/issues/2 и до сих пор не исправленной.
- Установщик требует задать пароль для пользователя root@localhost — важно понимать, что это пользователь OTRS, а не пользователь MySQL. У них одинаковые имена, но они хранятся в разных базах, имеют разные пароли и используются разными приложениями.
Устранение неполадок:
- Довольно часто OTRS отказывается запускаться, показывая следующую ошибку:
There was an error executing Execute() in Kernel::System::Console::Command::Maint::Ticket::FulltextIndexRebuildWorker: Error: Active indexing process already running! Skipping...
Более подробное объяснение приведено на официальном форуме: http://forums.otterhub.org/viewtopic.php?f=62&t=38469
sudo -u otrs /opt/otrs/bin/otrs.Console.pl Maint::Ticket::FulltextIndexRebuildWorker --force-pid
Логи:
- По умолчанию OTRS пишет сообщения в Syslog. Мы направим их в файл и сделаем более подробными.
- Для этого открываем раздел Admin => System Configuration
- Параметр LogModule::LogFile:
- было: /tmp/otrs.log
- стало: /opt/otrs/var/log/otrs.log
- Параметр LogModule:
- было: Kernel::System::Log::Syslog
- стало: Kernel::System::Log::File
- Параметр MinimumLogLevel:
- было: Error
- стало: Debug
- Применяем изменения:
systemctl restart otrs
Проверка и установка обновлений:
- Создадим файл /usr/local/bin/otrs-new-package (и сделаем исполняемым с помощью “chmod +x”):
#!/bin/sh
FPATH="$(lftp -e 'cls -q -1 -D --sort=date /pub/otrs/RPMS/rhel/7/otrs*.noarch.rpm; exit' http://ftp.otrs.org/ 2>&1 | tail -1)"
LATEST="${FPATH##*/}" #"
LATEST="${LATEST%.rpm}"
CURRENT="$(rpm -q otrs)"
case "$1" in
install|reinstall ) yum "$1" "http://ftp.otrs.org/$FPATH" ;;
geturl ) echo "http://ftp.otrs.org/$FPATH" ;;
update ) test "$LATEST" = "$CURRENT" && true || yum install "http://ftp.otrs.org/$FPATH" ;;
zbxcheck ) test "$LATEST" = "$CURRENT" && echo 0 || echo 1 ;;
* ) test "$LATEST" = "$CURRENT" && echo "$CURRENT is actual." || echo "$CURRENT can be updated to $LATEST" ;;
esac
otrs-new-package geturl
otrs-new-package
otrs-new-package install
Проверка для Zabbix:
- Создаём /etc/zabbix/zabbix_agentd.d/OTRS.conf
UserParameter=otrs.update_available,/usr/local/bin/otrs-new-package zbxcheck
sudo -u zabbix zabbix_agentd -t otrs.update_available
service restart zabbix-agent
Настройка электронной почты:
- Подразумевается, что почта для домена example.org находится на GoogleApps.
- Для OTRS заводится отдельный ящик otrs@example.org — на него приходят письма клиентов, которые OTRS преобразует в новые заявки или комментарии к уже созданным, и с него OTRS отправляет клиентам ответы.
- Для подключения к ящику рекомендуется использовать отдельный набор паролей, которые предоставляют ограниченный доступ и работают в обход двухфакторной аутентификации — т.н. Application Passwords.
- Вследствие нестандартных расширений GoogleApps мы столкнулись с проблемой зацикливания почты, которой посвятили отдельную заметку.
Входящая почта:
- Зависимости:
yum install -y fetchmail
- Type = IMAPTLS
- Username = otrs@example.org
- Password = ...
- Host = imap.gmail.com
- Dispatching = by To: header
- New label = "Persistent"
- Filter matches: from:(!me)
- Filter actions: Apply label "Persistent", Never send it to Spam
- Admin => SystemConfiguration =>MailAccountFetch: 10 => 5
sudo -u otrs -H /opt/otrs/bin/otrs.Console.pl Maint::PostMaster::MailAccountFetch
Исходящая почта:
- Admin => Email Addresses:
- Email = otrs@example.org
- Name = ISIX Support Team
- Admin => System Configuration:
- SendmailModule = SMTPTLS
- SendmailModule::AuthUser = otrs@example.org
- SendmailModule::AuthPassword = ...
- SendmailModule::Host = smtp.gmail.com
- SendmailModule::Port = 587
LDAP-авторизация:
- Использованная нами документация: http://wiki.rsu.edu.ru/wiki/OTRS
- Ключевой недостаток: при включении внешней авторизации отключается локальная.
- Важная особенность: пользователи не создаются автоматически при первом входе, их надо регистрировать в OTRS явно. Из внешнего источника берётся только пароль.
- Перед включением LDAP-авторизации надо завести в OTRS как минимум одного пользователя с LDAP-логином и присвоить ему права администратора, чтобы после её включения иметь возможность администрировать из-под него OTRS.
- После этого редактируем /opt/otrs/Kernel/Config.pm
$Self->{'AuthModule'} = 'Kernel::System::Auth::LDAP';
$Self->{'AuthModule::LDAP::Host'} = 'ldap.example.org';
$Self->{'AuthModule::LDAP::BaseDN'} = 'ou=People,dc=example,dc=org';
$Self->{'AuthModule::LDAP::UID'} = 'uid';
$Self->{'AuthModule::LDAP::UserAttr'} = 'uid';
$Self->{'AuthModule::LDAP::Params'} = {
port => 389,
timeout => 120,
async => 0,
version => 3,
};
systemctl restart otrs
Оповещения в Telegram:
- OTRS умеет отправлять оповещения только по SMTP, поэтому для отправки в Телеграм придётся использовать шлюз — либо самодельный, доработанный для преобразования email-адресов в ChatID's, либо публичный, наподобие ETlgr.