В данной статье рассмотрим установку и настройку бесплатного хелпдеска (helpdesk) Zammad. Разберем установку и настройку веб сервера Nginx и поисковой системы Elasticsearch.
Содержание
- Введение
- Описание тестового стенда
- План работ. Краткое описание действий
- Установка и настройка Elasticsearch
- Проверка локали
- Установка хелпдеска Zammad
- Подключаем Zammad к Elasticsearch
- Проверка подключения к Elasticsearch
- Настройка веб-сервера Nginx
- Полезные команды Zammad
У любой 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
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