MAATRIX / Блог / Как установить и настроить Zammad на VPS

Как установить и настроить Zammad на VPS

MAATRIX

Когда заявки от клиентов расползаются по почте, мессенджерам и звонкам, служба поддержки быстро тонет — кто-то теряет письмо, кто-то дважды отвечает на один вопрос. Zammad закрывает это одним инструментом: тикеты из почты, чата на сайте и звонков собираются в одну очередь с историей по каждому клиенту. Ниже — рабочая установка Zammad на собственном VPS с нуля: от системных требований до подключения email, веб-чата и телефонии.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Что понадобится перед установкой

Zammad написан на Ruby on Rails и под капотом использует PostgreSQL, Redis и (опционально, но крайне желательно для полнотекстового поиска) Elasticsearch или OpenSearch. Официальный пакет сам подтянет все зависимости, но ресурсы под них должен выделить сервер.

Ориентировочные требования для боевой установки на небольшую-среднюю команду поддержки (5–20 агентов):

ПараметрМинимумКомфортно
CPU2 vCPU4 vCPU
RAM4 ГБ8 ГБ
Диск20 ГБ SSD40+ ГБ SSD
ОСUbuntu 22.04/24.04, Debian 12

Это ориентир, а не гарантия — если у вас большая база тикетов и активно используется полнотекстовый поиск по вложениям, память съедает в первую очередь Elasticsearch. На 2 ГБ RAM Zammad формально стартует, но под нагрузкой Puma и поисковый движок начнут упираться в своп.

Также заранее подготовьте:

  • домен или поддомен (например, helpdesk.example.com) с A-записью на IP сервера;
  • открытые порты 80 и 443;
  • почтовый ящик (IMAP/SMTP), из которого Zammad будет забирать и отправлять письма.

Для установки Docker и базовой настройки сети под сервер можно свериться со статьёй настройка домена и DNS с нуля — Zammad в этом гайде ставится не в Docker, а через официальный apt-репозиторий, это более предсказуемый вариант для продакшена и упрощает обновления.

Устанавливаем Zammad на Ubuntu 24.04

Разработчики Zammad поддерживают репозиторий пакетов для Debian/Ubuntu — это даёт готовые systemd-юниты, скрипты миграции при обновлении и меньше ручной возни, чем сборка из исходников.

Обновляем систему и ставим зависимости для подключения репозитория:

sudo apt update && sudo apt upgrade -y
sudo apt install -y curl gnupg2 ca-certificates lsb-release apt-transport-https

Добавляем ключ и сам репозиторий (кодовое имя дистрибутива подставляется автоматически, чтобы не промахнуться версией):

curl -s https://dl.packager.io/srv/zammad/zammad/key | \
  sudo gpg --dearmor -o /usr/share/keyrings/zammad-archive-keyring.gpg

echo "deb [signed-by=/usr/share/keyrings/zammad-archive-keyring.gpg] \
https://dl.packager.io/srv/zammad/zammad/stable/ubuntu/$(lsb_release -cs) ./" | \
  sudo tee /etc/apt/sources.list.d/zammad.list

Если для вашей версии Ubuntu репозитория ещё нет (актуально для самых свежих релизов сразу после выхода), проверьте список поддерживаемых дистрибутивов на странице пакетов Zammad и при необходимости используйте кодовое имя предыдущего LTS — пакет обычно совместим.

Устанавливаем сам Zammad — пакет сам поставит PostgreSQL, Redis, Nginx (если его ещё нет) и Elasticsearch:

sudo apt update
sudo apt install -y zammad

Установка занимает несколько минут: postinstall-скрипт создаёт базу данных, пользователя zammad, каталоги в /opt/zammad и включает systemd-юниты (zammad-web, zammad-websocket, zammad-worker). Проверить, что всё поднялось, можно так:

sudo systemctl status zammad-web zammad-websocket zammad-worker

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Настраиваем Nginx и SSL

Пакет Zammad кладёт готовый конфиг для Nginx в /opt/zammad/contrib/nginx/zammad.conf. Копируем его и правим под свой домен:

sudo cp /opt/zammad/contrib/nginx/zammad.conf /etc/nginx/sites-available/zammad.conf
sudo ln -s /etc/nginx/sites-available/zammad.conf /etc/nginx/sites-enabled/

В файле находим строку server_name и заменяем на свой домен:

server_name helpdesk.example.com;

Проверяем конфигурацию и перезапускаем Nginx:

sudo nginx -t && sudo systemctl reload nginx

Дальше выпускаем сертификат Let's Encrypt через certbot — подробный разбор нюансов (чейн-файлы, автопродление, частые ошибки) есть в статье установка Let's Encrypt SSL на VPS:

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d helpdesk.example.com

Certbot сам пропишет редирект с 80 на 443 и настроит автопродление через systemd-таймер. Если Zammad стоит за отдельным reverse-proxy (например, общий Nginx на нескольких доменах), логика проксирования на upstream 127.0.0.1:3000 и /ws для websocket подробно разобрана в статье Nginx как reverse proxy на VPS — конфиг из пакета Zammad построен по тому же принципу.

Не забудьте открыть порты в файрволе:

sudo ufw allow 'Nginx Full'
sudo ufw allow OpenSSH
sudo ufw enable

Первый вход и базовая настройка

Открываем https://helpdesk.example.com/ в браузере — Zammad встретит мастером первичной настройки. Он попросит:

  1. Создать учётную запись администратора (email + пароль).
  2. Указать название организации — оно попадёт в шаблоны писем.
  3. Выбрать часовой пояс и локаль по умолчанию.

После мастера вы попадёте в основной интерфейс. Первым делом стоит зайти в Settings → Security → Password и включить обязательную двухфакторную аутентификацию для агентов, а в Settings → System → Services — проверить, что фоновый воркер (zammad-worker) действительно обрабатывает очередь (там же видно, если он "залип").

Если планируется поиск по вложениям и полнотекстовый поиск по тикетам, проверьте статус Elasticsearch:

curl -s http://localhost:9200/_cluster/health?pretty

Статус green или yellow — это норма для одноузловой инсталляции. После первой установки индекс нужно построить вручную:

sudo -u zammad zammad run rake searchindex:rebuild

На базе в несколько тысяч тикетов это может занять от пары минут до получаса — процесс идёт в фоне, интерфейс им не блокируется.

Подключаем почту, чат на сайте и телефонию

Это то, ради чего обычно и берут Zammad — единая точка входа для всех каналов.

Почта. В Settings → Channels → Email добавляем аккаунт: указываем IMAP-сервер для входящих (порт 993, SSL) и SMTP для исходящих (порт 587, STARTTLS, либо 465 с SSL). Zammad сам предложит несколько готовых пресетов (Gmail, Office 365) или позволит ввести параметры вручную для своего почтового сервера. Если почта поднята на этом же VPS через Postfix, конфигурация IMAP/SMTP и типичные грабли с доставляемостью разобраны в статье почтовый сервер Postfix на VPS — Zammad просто подключается к нему как обычный почтовый клиент.

Каждое входящее письмо на подключённый адрес превращается в новый тикет или добавляется к существующему по теме/thread-id. Исходящие ответы агентов уходят с того же адреса через SMTP.

Чат на сайте. В Settings → Channels → Chat создаём новый чат-виджет — Zammad генерирует JS-сниппет вида:

<script id="zammad_chat" data-key="ВАШ_КЛЮЧ" src="https://helpdesk.example.com/assets/chat/chat.min.js"></script>

Сниппет вставляется перед </body> на вашем сайте. Сообщения из виджета попадают в ту же очередь тикетов, что и письма, — агент видит всё в одном месте и может переключаться между обращениями одного клиента независимо от канала.

Телефония (CTI). Zammad поддерживает готовые интеграции с несколькими облачными АТС (например, sipgate.io, Placetel) и универсальный "Generic CTI" — вебхук, на который ваша телефонная система шлёт события о входящих/исходящих звонках. В Settings → Channels → CTI выбираем Generic и получаем URL вида https://helpdesk.example.com/api/v1/cti/<token>/. Дальше на этот URL настраивается отправка событий со стороны АТС (формат зависит от конкретной телефонной платформы — сверяйтесь с документацией вашего провайдера). После настройки при входящем звонке в Zammad всплывает карточка клиента, если номер уже встречался в тикетах.

Бэкапы и обновления

Пакетная установка Zammad включает готовый скрипт бэкапа в /opt/zammad/contrib/backup/backup.sh — он снимает дамп PostgreSQL и архивирует файловое хранилище (вложения тикетов). Запуск вручную:

sudo /opt/zammad/contrib/backup/backup.sh

По умолчанию бэкапы складываются в /var/tmp/zammad_backup — этот путь и глубину хранения (HOLD_DAYS) можно поменять прямо в скрипте. Для регулярного запуска добавьте задачу в cron:

sudo crontab -e
# каждую ночь в 3:00
0 3 * * * /opt/zammad/contrib/backup/backup.sh

Локальный бэкап на том же диске — это не бэкап в полном смысле: если сервер целиком выйдет из строя, архивы пропадут вместе с ним. Полученные файлы стоит выгружать на отдельное хранилище — как именно это автоматизировать с ротацией и шифрованием, подробно описано в статье установка и настройка BorgBackup на VPS.

Обновление Zammad до новой версии — обычный apt-апгрейд, миграции базы данных пакет прогоняет сам при перезапуске сервисов:

sudo apt update
sudo apt install --only-upgrade zammad

Перед мажорным обновлением (смена версии вида 6.x → 7.x) обязательно снимите свежий бэкап и почитайте release notes — иногда меняется формат хранения вложений или требуется ручной шаг перед миграцией.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.

Частые вопросы

Можно ли поставить Zammad через Docker вместо apt-пакета?

Да, у проекта есть официальный docker-compose. Он удобен для быстрого теста, но пакетная установка на Ubuntu/Debian даёт более простые обновления и меньше сюрпризов с правами на файловое хранилище вложений — для продакшена мы рекомендуем именно её.

Обязателен ли Elasticsearch?

Формально нет, Zammad запустится и без него, но пропадёт полнотекстовый поиск по вложениям и часть фильтров в интерфейсе агента будет работать хуже. На небольшой команде можно отключить и сэкономить память, добавив позже при росте базы тикетов.

Сколько агентов потянет минимальный тариф VPS?

Жёсткой формулы нет — зависит от объёма писем, вложений и активности воркера. Ориентировочно 2 vCPU / 4 ГБ RAM хватает на 5–10 одновременно работающих агентов при умеренном потоке тикетов; для больших команд закладывайте запас по CPU под Elasticsearch и фоновые задачи.

Как перенести Zammad на новый сервер?

Через тот же backup.sh: дамп PostgreSQL и архив файлового хранилища переносятся на новую машину, разворачивается тот же пакет той же версии, база восстанавливается через psql, файлы — распаковкой в /opt/zammad/var/storage (или туда, куда указывает конфиг), после чего сервисы Zammad перезапускаются.

Чат-виджет работает только на одном домене?

Нет, один и тот же ключ виджета можно вставить на несколько сайтов — тикеты из всех источников попадут в общую очередь, а канал (chat) будет виден в карточке тикета.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →