Zammad на Ubuntu 24.04: пошаговая установка
Когда заявки от клиентов идут вперемешку через почту, мессенджер в чате на сайте и звонки, а менеджер держит всё в голове или в экселе — часть обращений неизбежно теряется, и никто не может сказать, сколько тикетов реально открыто и кто за них отвечает. Zammad решает это одной системой: почта, веб-чат и телефония сходятся в единую очередь тикетов с SLA, ролями и отчётностью. Ниже — рабочая установка Zammad на Ubuntu 24.04 из официального пакетного репозитория, с Nginx, SSL и подключением каналов, без докера и лишних абстракций.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Что такое Zammad и какой сервер под него нужен
Zammad — открытый service desk на Ruby on Rails с веб-интерфейсом для агентов и админов. Внутри у него несколько движущихся частей, и понимание архитектуры избавляет от сюрпризов при настройке:
- PostgreSQL — основное хранилище: тикеты, пользователи, история переписки, настройки.
- Elasticsearch — полнотекстовый поиск по тикетам и вложениям (без него поиск работает урезанно, по факту это обязательный компонент для комфортной работы).
- Redis — очереди и websocket-канал, через который интерфейс агента обновляется в реальном времени без перезагрузки страницы.
- Nginx — фронт, который отдаёт статику и проксирует запросы к приложению.
- Puma + планировщик (scheduler) — сам Rails-процесс приложения и фоновый сервис, который забирает почту по расписанию, гоняет триггеры и SLA-эскалации.
Именно из-за Elasticsearch и одновременно работающих Postgres/Redis Zammad прожорливее по памяти, чем условный форум или CMS на той же Ubuntu. Ориентировочные требования:
| Ресурс | Минимум (до 5 агентов) | Комфортно (10-30 агентов) |
|---|---|---|
| CPU | 2 vCPU | 4 vCPU |
| RAM | 4 ГБ | 8 ГБ |
| Диск | 40 ГБ SSD | 80-120 ГБ SSD |
| ОС | Ubuntu 24.04 LTS | Ubuntu 24.04 LTS |
На 4 ГБ Elasticsearch и Postgres будут делить память впритык — рабочий вариант для старта, но при росте базы тикетов и истории переписки первым упрётся именно ES: у него собственная JVM-куча, которая живёт своей жизнью параллельно с остальными сервисами. Если ожидаете десятки агентов и годы истории, закладывайтесь сразу на 8 ГБ — подробнее о том, сколько именно памяти нужно поисковому движку, разобрано в статье сколько RAM нужно для Elasticsearch.
Подготовка сервера и подключение репозитория Zammad
Подключаемся по SSH к чистой Ubuntu 24.04 и обновляем систему:
apt update && apt upgrade -y
apt install -y curl gnupg apt-transport-https ca-certificates
Zammad ставится из собственного пакетного репозитория (packager.io), который тянет за собой все зависимости — Postgres, Elasticsearch, Redis, Nginx — и сам их настраивает под приложение. Добавляем GPG-ключ и репозиторий современным способом, без устаревшего apt-key:
curl -fsSL https://dl.packager.io/srv/zammad/zammad/key \
| 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/deb/zammad/zammad/stable/ubuntu 24.04 main" \
| tee /etc/apt/sources.list.d/zammad.list
apt update
Если на момент вашей установки ветка репозитория для кодового имени 24.04 (noble) ещё не появилась — на официальной странице установки Zammad всегда указан актуальный список поддерживаемых релизов, и обычно можно временно взять строку для 22.04 (jammy), пакет собран без привязки к системным библиотекам конкретного релиза.
Пока не забыли про сеть: наружу должны смотреть только SSH и 80/443, всё остальное (Postgres, Redis, Elasticsearch) слушает локально и в интернет торчать не должно. Если файрвол ещё не настроен, у нас есть отдельный разбор настройки UFW на Ubuntu 24.04.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверУстановка пакета zammad и что разворачивается автоматически
Ставим сам пакет:
apt install -y zammad
Установщик — это не просто копирование файлов приложения. В процессе он поднимает и настраивает PostgreSQL, Elasticsearch и Redis как системные сервисы, создаёт под них служебных пользователей и базы, и предлагает автоматически прописать конфиг Nginx под Zammad. Соглашайтесь на автонастройку Nginx — вручную поднять тот же конфиг дольше, а домен и SSL всё равно донастраивать отдельным шагом.
После установки в системе должны появиться три собственных сервиса приложения:
systemctl status zammad-web zammad-websocket zammad-scheduler
zammad-web— сам Rails-процесс (Puma), обслуживает веб-интерфейс и API.zammad-websocket— держит живые соединения с браузерами агентов для realtime-обновлений.zammad-scheduler— фоновые задачи: забор почты по IMAP, триггеры, SLA-эскалации, переиндексация.
Конфиг Nginx, который сгенерировал установщик, лежит в /etc/zammad/nginx.conf и включён в общий Nginx через /etc/nginx/sites-enabled/. По умолчанию он слушает 80-й порт на любом имени хоста — сразу после установки Zammad уже доступен по http://ip-адрес-сервера/, просто без вашего домена и без HTTPS.
Nginx, домен и SSL-сертификат
Открываем сгенерированный конфиг и меняем server_name на реальный домен:
nano /etc/zammad/nginx.conf
server {
listen 80;
server_name support.example.com;
# остальные директивы (root, location /, proxy_pass и т.д.) оставляем как есть
}
Проверяем конфиг и перечитываем Nginx:
nginx -t && systemctl reload nginx
Дальше — сертификат через certbot:
apt install -y certbot python3-certbot-nginx
certbot --nginx -d support.example.com
Certbot сам допишет блок listen 443 ssl, подключит сертификат и настроит редирект с 80 на 443 внутри того же файла /etc/zammad/nginx.conf. Учтите нюанс: при обновлении пакета zammad установщик иногда предлагает перегенерировать конфиг Nginx — согласитесь, и SSL-блок от certbot может затереться. Проще перед крупными обновлениями делать копию файла и сверять диффом.
Если сервер уже обслуживает несколько сайтов через один Nginx и хочется разобраться в общей логике reverse-proxy, а не только в готовом конфиге Zammad, пригодится статья Nginx как обратный прокси на VPS.
Первый запуск: мастер настройки и создание агентов
Открываем https://support.example.com в браузере. Zammad встречает мастером первого запуска:
- Учётная запись администратора — email, имя, пароль. Это ваш первый агент с полными правами.
- Название организации и часовой пояс — используются в шаблонах писем и отчётах, поменять можно в любой момент.
- Статус Elasticsearch — мастер проверяет подключение к поисковому индексу и предложит запустить первичную переиндексацию, если она ещё не выполнена. Дайте ей закончиться, прежде чем полагаться на поиск по тикетам — на пустой базе это секунды, но привычка важна на будущее при импорте старых данных.
После мастера вы в интерфейсе агента. Дальше стоит сразу зайти в панель администратора (иконка шестерёнки):
Manage → Users— заводим остальных агентов, каждому назначаем роль (Agent,Adminили обе).Manage → Groups— создаём группы под направления, например «Поддержка» и «Продажи»: тикеты маршрутизируются по группам, и каждый агент видит только свои очереди.Manage → Roles— если ролей по умолчанию мало, можно тонко настроить права на конкретные группы.
Без явного разнесения по группам все агенты видят все тикеты — на команде из 2-3 человек это не проблема, но с ростом штата стоит развести очереди сразу, чем потом переносить историю.
Подключение каналов: почта, чат и телефония
Ради этого всё и затевалось — свести разные каналы в одну очередь. Настройка — в Manage → Channels.
Почта. Указываете IMAP для входящих и SMTP для исходящих. Zammad умеет работать как с внешними почтовыми провайдерами, так и с собственным почтовым сервером — если своего пока нет, у нас есть разбор развёртывания Mailcow на Ubuntu 24.04, это рабочий вариант для компании, которая хочет держать и почту, и service desk на своей инфраструктуре. После сохранения настроек канала отправьте тестовое письмо на адрес поддержки и проверьте, что тикет создался — если письмо не пришло, первым делом смотрите лог планировщика:
journalctl -u zammad-scheduler -f
Чат на сайте. В Manage → Chat создаётся виджет: указываете название чата, часы работы, приветственное сообщение — и получаете фрагмент JavaScript-кода. Вставляете его перед </body> на своём сайте, и на странице появляется всплывающий значок чата. Диалоги из виджета попадают в общую очередь тикетов точно так же, как письма.
Телефония. Здесь у Zammad не встроенная АТС, а интеграция по CTI (Computer Telephony Integration) — генерик-API или готовые коннекторы под конкретных провайдеров телефонии (в Manage → Telephony (CTI)). Провайдер шлёт в Zammad вебхук о входящем звонке, система показывает агенту всплывающую карточку с данными звонящего (screen-pop), если номер уже встречался в тикетах, и умеет автоматически создавать тикет по факту звонка. Конкретный набор полей и URL вебхука зависит от того, какого провайдера телефонии вы используете — сверяйтесь с разделом интеграций в документации Zammad для вашего провайдера, схема у всех похожая, но детали различаются.
Бэкапы и обновление
У Zammad есть штатный скрипт бэкапа, который устанавливается вместе с пакетом:
/opt/zammad/contrib/backup/backup.sh
Он снимает дамп PostgreSQL, архивирует загруженные файлы и конфигурацию в один архив (по умолчанию в /var/opt/zammad/backup). Разумно повесить его в cron на ночь и копировать архивы за пределы сервера:
# /etc/cron.d/zammad-backup
0 3 * * * root /opt/zammad/contrib/backup/backup.sh >> /var/log/zammad-backup.log 2>&1
Восстановление — парным скриптом restore.sh с указанием архива. Elasticsearch в бэкап штатно не входит: индекс пересобирается из данных Postgres через Admin → System → Elasticsearch → Reindex, но после восстановления не забудьте запустить переиндексацию — иначе поиск по тикетам будет пустым.
Обновление — обычное дело для apt-пакета:
apt update
apt install --only-upgrade zammad
Post-install хук пакета сам прогонит миграции базы и перезапустит сервисы. Перед мажорным обновлением всегда снимайте свежий бэкап и посмотрите changelog релиза в документации Zammad — иногда миграции требуют времени на больших базах, и лучше не начинать их в рабочие часы.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
Можно ли поставить Zammad без Elasticsearch?
Технически интерфейс запустится, но поиск по тикетам и вложениям будет работать очень ограниченно или не работать вовсе — для рабочего service desk это фактически обязательный компонент, закладывайте под него память заранее.
Пакет из репозитория или Docker — что лучше?
Пакетная установка проще в обслуживании на выделенном сервере под один сервис: обновления — это apt upgrade, все зависимости настраиваются автоматически. Docker имеет смысл, если у вас уже есть оркестрация нескольких сервисов и хочется единообразия — но тогда настройку Postgres/ES/Redis придётся собирать и версионировать самостоятельно.
Как перенести историю обращений из другой системы?
Прямого универсального импортёра под все хелпдески нет, но у Zammad есть API и готовые импорт-модули под некоторые популярные системы (в Manage → System → Import) — для нестандартных источников обычно пишут небольшой скрипт через REST API, создающий тикеты и комментарии программно.
Нужен ли отдельный сервер под телефонию?
Нет, сам Zammad принимает только вебхуки от провайдера телефонии — голосовой трафик и коммутация звонков остаются на стороне провайдера или вашей АТС, серверу Zammad это не добавляет нагрузки, кроме обработки коротких HTTP-запросов.
Сколько агентов выдержит конфигурация 8 ГБ RAM / 4 vCPU?
Ориентировочно 20-40 одновременно работающих агентов при обычной нагрузке — точная цифра зависит от объёма истории (индекс Elasticsearch растёт) и интенсивности вложений, поэтому после запуска стоит последить за потреблением памяти у процессов postgres и elasticsearch и расширяться по факту, а не заранее с запасом «на всякий случай».
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →