Установка HelpDesk Zammad Ubuntu 20.04

Установка HelpDesk Zammad Ubuntu 20.04

В данной статье рассмотрим установку и настройку бесплатного хелпдеска (helpdesk) Zammad. Разберем установку и настройку веб сервера Nginx и поисковой системы Elasticsearch.   

 

Содержание

Введение

У любой IT - компании рано или поздно возникает необходимость в системе HelpDesk.
Хелпдеск, в самом простом варианте, - это система управления и контроля за задачами и проблемами, которые возникают у организации.
Задачи могут исходить как от клиентов организации, так и от сотрудников организации.
В данной статье мы расскажем о установке бесплатного хелпдеска Zammad.

Настройка будет сделана для сервиса, который имеет действующий домен третьего уровня для примера zammad.youdomain.ru
Задача будет сделать общедоступный хелпдеск, чтобы клиенты могли заходить на zammad.youdomain.ru и оставлять заявки.

Описание тестового стенда

  • Ubuntu server 20.04 с установленным ssh-сервером
  • Zammad 4.1
  • Действующий домен третьего уровня. Для примера будем использовать zammad.youdomain.ru
  • Наш веб сервер находится за NAT. Для доступа к нему проброшены порты 80(http) и 443 (https) 

План работ. Краткое описание действий

  • Устанавливаем elasticsearch
  • Настраиваем локацию
  • Устанавливаем Zammad
  • Настраиваем и подключаем Elasticsearch к Zammad
  • Настраиваем Веб-сервер Nginx для работы по http

Приступаем к установке

Перед установкой самого Helpdesk Zammad нужно сделать подготовительные действия: Установить elasticsearch и настроить локацию

Установка и настройка Elasticsearch

  • Первым делом добавляем Elasticsearch Signing Key (import PGP Key)
  • После этого устанавливаем apt-transport-https и gnupg
  • Добавляем "deb https://artifacts.elastic.co/packages/7.x/apt stable main" в определения репозитория /etc/apt/sources.list.d/elastic-7.x.list
  • Обновляем и устанавливаем elasticsearch

Именно этот способ установки рекомендуют разработчики elasticsearch

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo apt-get install apt-transport-https gnupg
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list
sudo apt-get update && sudo apt-get install elasticsearch

  • Устанавливаем плагин ingest-attachment
  • Перезапускаем elasticsearch
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install ingest-attachment
sudo systemctl restart elasticsearch
sudo systemctl enable elasticsearch
  • Настраиваем elasticsearch. По рекомендациям разработчиков Zammad изменяем настройки по умолчанию.
    Увеличиваем размер:
    • http.max_content_length c 100mb до 400mb
    • indices.query.bool.max_clause_count c 1024 до 2000
    для этого дополняем конфигурационный файл /etc/elasticsearch/elasticsearch.yml  
# /etc/elasticsearch/elasticsearch.yml

http.max_content_length: 400mb
indices.query.bool.max_clause_count: 2000

На этом основная настройка elasticsearch завершена. После установки Zammad будет ещё несколько настроек

Проверка локали

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

locale |grep "LANG="

в ответ должны получить строку вида <lang_code>.utf8

Если ответ не похож, то вводим команды

sudo apt install locales
sudo locale-gen en_US.UTF-8
sudo echo "LANG=en_US.UTF-8" > /etc/default/locale

Установка хелпдеска Zammad

Переходим непосредственно к установке самого helpdesk Zammad

  • устанавливаем ключ репозитория и репозиторий для нужной версии Ubuntu. (В нашем случае Ubuntu 20.04)
  • Обновляем список доступных пакетов
  • Устанавливаем Zammad
wget -qO- https://dl.packager.io/srv/zammad/zammad/key | sudo apt-key add -
sudo wget -O /etc/apt/sources.list.d/zammad.list https://dl.packager.io/srv/zammad/zammad/stable/installer/ubuntu/20.04.repo
sudo apt-get update
sudo apt-get install zammad

 Подключаем Zammad к Elasticsearch

 Настраиваем соединение на http://localhost:9200 и создаем индексы поиска

sudo zammad run rails r "Setting.set('es_url', 'http://localhost:9200')"
sudo zammad run rake searchindex:rebuild
  • Настраиваем аутентификацию http basic
  • Настраиваем возможность подключения нескольких служб или нескольких экземпляров Zammad к одному серверу Elasticsearch (для предотвращения конфликтов имен во время индексирования)
  • Ограничиваем индексирование определенных видов файлов и размер вложений
  • пересоздаем индексы

sudo zammad run rails r "Setting.set('es_user', '<username>')"
sudo zammad run rails r "Setting.set('es_password', '<password>')"
sudo zammad run rails r "Setting.set('es_index', Socket.gethostname.downcase + '_zammad')"
sudo zammad run rails r "Setting.set('es_attachment_ignore', [ '.png', '.jpg', '.jpeg', '.mpeg', '.mpg', '.mov', '.bin', '.exe', '.box', '.mbox' ] )"
sudo zammad run rails r "Setting.set('es_attachment_max_size_in_mb', 50)"
sudo zammad run rake searchindex:rebuild

Проверка подключения к Elasticsearch

Для проверки используем утилиту Curl

curl -XGET 'localhost:9200'

Если не получаем ответ, то перезапускаем Elasticsearch

systemctl restart elasticsearch
systemctl enable elasticsearch

Настройка веб-сервера Nginx для работы по имени zammad.youdomain.ru

Теперь нужно настроить веб сервер, чтобы наш helpdesk zammad работал на доменном имени zammad.youdomain.ru
Настройка для работы по http не вызывает никаких сложностей. Настройка HTTPS описана в нашей статье Настройка работы Zammad по https
Открываем и редактируем файл /etc/nginx/sites-enabled/zammad.conf

sudo nano /etc/nginx/sites-enabled/zammad.conf

нужно отредактировать следующие параметры

server 
{
listen 80;
server_name test5.ru;
}

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

sudo nginx -t
sudo systemctl reload nginx

 

Полезные команды Zammad

Управление сервисом Zammad 

 sudo systemctl status zammad
 sudo systemctl stop zammad
 sudo systemctl start zammad
 sudo systemctl restart zammad

Управление Zammad-web

 sudo systemctl status zammad-web
 sudo systemctl stop zammad-web
 sudo systemctl start zammad-web
 sudo systemctl restart zammad-web

Управление Zammad-worker

 sudo systemctl status zammad-worker
 sudo systemctl stop zammad-worker
 sudo systemctl start zammad-worker
 sudo systemctl restart zammad-worker

Управление Zammad-websocket

 sudo systemctl status zammad-websocket
 sudo systemctl stop zammad-websocket
 sudo systemctl start zammad-websocket
 sudo systemctl restart zammad-websocket

Управление Elasticsearch

sudo systemctl start elasticsearch
sudo systemctl stop elasticsearch