Установка и настройка Zammad на CentOS 7 с Nginx и PostgreSQL
Что такое Zammad
Zammad — это open source система поддержки/Helpdesk, написанная на Ruby. Это веб‑система тикетов с поддержкой множества каналов: Facebook, Telegram, онлайн‑чат и электронная почта. Zammad распространяется под лицензией GNU AFFERO (AGPL) и доступен на GitHub. Вы можете установить его бесплатно на собственный сервер.
Что мы сделаем
- Установим Zammad на CentOS 7
- Подготовим и настроим SSL через Let’s Encrypt
- Настроим Nginx как обратный прокси для Zammad
- Выполним первоначальную настройку Zammad через веб‑интерфейс
- Приведём дополнительные рекомендации и чек‑листы для эксплуатации
Требования
- CentOS 7
- По крайней мере 2 ГБ ОЗУ
- Права root или sudo
Важно: убедитесь, что у вас есть действующий домен и что DNS указывает на сервер, где вы будете устанавливать сертификат Let’s Encrypt.
Шаг 1 — Установка Zammad Ticketing System
Перед установкой Zammad на CentOS 7 установим репозиторий EPEL, необходимый для некоторых зависимостей, включая Nginx.
Установите EPEL:
sudo yum -y install epel-releaseИмпортируйте ключ RPM для репозитория Zammad:
sudo rpm --import https://rpm.packager.io/keyСоздайте файл репозитория Zammad:
vim /etc/yum.repos.d/zammad.repoВставьте следующее содержимое:
[zammad]
name=Repository for zammad/zammad application.
baseurl=https://rpm.packager.io/gh/zammad/zammad/centos7/stable
enabled=1Сохраните и закройте файл. Установите Zammad:
sudo yum -y install zammadПримечание: при установке пакета автоматически установятся требуемые зависимости, в том числе Nginx и PostgreSQL.
Важно: если у вас включён SELinux, проверьте политику после установки и при необходимости добавляйте разрешения для сервисов. В некоторых окружениях может потребоваться настроить booleans для HTTPD/Nginx.
Когда установка завершится, вы увидите подтверждение в выводе yum.
Альтернативный подход: вместо RPM‑пакета вы можете запустить Zammad в Docker-контейнере. Docker‑вариант удобен для тестовых стендов и изоляции, но для продакшна часто выбирают системный пакет для упрощённого менеджмента сервисов и логов.
Шаг 2 — Установка и настройка SSL с Let’s Encrypt
Мы настроим HTTPS через бесплатные сертификаты Let’s Encrypt с помощью certbot.
Установите certbot:
yum -y install certbotПеред генерацией сертификата внесите в конфигурацию Nginx правило для /.well-known, чтобы certbot мог подтвердить владение доменом. Откройте основной конфиг Nginx:
cd /etc/nginx/
vim nginx.confДобавьте внутри блока server {} следующую секцию:
location ~ /.well-known {
allow all;
}Сохраните, протестируйте конфиг и перезапустите Nginx:
nginx -t
systemctl restart nginxОткройте порты в фаерволе (если используется firewalld):
firewall-cmd --permanent --add-service=https
firewall-cmd --reloadТеперь сгенерируйте сертификат certbot. В примере автор использует домен zammad.hakase-labs.co (обратите внимание: в тексте встречаются разные варианты домена). Запустите:
certbot certonly --standalone -d zammad.hakase-labs.coПри запросе укажите ваш email для уведомлений о продлении. Для TOS введите A, для отказа от рассылки EFF введите N.

Когда certbot завершит работу, вы увидите подтверждение и файлы сертификатов будут находиться в каталоге /etc/letsencrypt/live/.

Совет по обслуживанию: настройте автоматическое продление сертификатов. Простая команда для проверки продления:
certbot renew --dry-runДобавьте плановое задание в cron или systemd timer для регулярного запуска certbot renew.
Шаг 3 — Настройка Nginx как обратного прокси для Zammad
Во время установки для Zammad автоматически создаётся виртуальный хост в /etc/nginx/conf.d/. Откройте файл zammad.conf:
cd /etc/nginx/conf.d/
vim zammad.confЗамените содержимое файла на конфигурацию приведённую ниже (включает редирект с HTTP на HTTPS и проксирование к локальным серверам приложений Zammad):
#
# this is the Nginx config for zammad
#
upstream zammad {
server localhost:3000;
}
upstream zammad-websocket {
server localhost:6042;
}
server {
listen 80;
server_name zammad.hakase-labs.co;
return 301 https://$host$request_uri;
}
server {
listen 443 http2 ssl;
ssl_certificate /etc/letsencrypt/live/zammad.hakase-labs.co/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/zammad.hakase-labs.co/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
# replace 'localhost' with your fqdn if you want to use zammad from remote
server_name zammad.irsyadf.me;
root /opt/zammad/public;
access_log /var/log/nginx/zammad.access.log;
error_log /var/log/nginx/zammad.error.log;
client_max_body_size 50M;
location ~ ^/(assets/|robots.txt|humans.txt|favicon.ico) {
expires max;
}
location /ws {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header CLIENT_IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_read_timeout 86400;
proxy_pass http://zammad-websocket;
}
location / {
proxy_set_header Host $http_host;
proxy_set_header CLIENT_IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_read_timeout 180;
proxy_pass http://zammad;
gzip on;
gzip_types text/plain text/xml text/css image/svg+xml application/javascript application/x-javascript application/json application/xml;
gzip_proxied any;
}
}Сохраните и проверьте конфигурацию Nginx и перезапустите сервис:
nginx -t
systemctl restart nginxПроверьте, что порт 443 слушается:
netstat -plntu
Примечание: в примере конфигурации встречаются два разных server_name. Исправьте на ваш актуальный домен во всех местах. Если планируете использовать несколько FQDN — настройте отдельные server блоки.
Шаг 4 — Первичная настройка Zammad через веб‑интерфейс
Откройте браузер и перейдите по адресу вашего Zammad, например:
https://zammad.hakase-labs.coВы будете перенаправлены на HTTPS. Нажмите кнопку Setup new system для начала настройки.

Заполните данные администратора: имя пользователя, email и пароль. Затем нажмите Create.

Задайте имя организации и нажмите Next.

При настройке уведомлений электронной почты нажмите Continue, затем при необходимости настройте почтовые каналы в разделе Settings.

Пропустите подключение каналов на этапе установки или настройте их позже — на экране Channel configuration нажмите Skip при желании.

После завершения установки вы попадёте в админ панель Zammad.

Шаг 5 — Управление сервисами Zammad
Zammad состоит из нескольких компонентов: веб‑приложение, воркеры и websocket. Можно управлять всем набором через единый systemd сервис zammad или по отдельности.
Стартер команд:
systemctl start zammad
systemctl status zammad
systemctl restart zammadПроверка статусов отдельных компонентов:
systemctl status zammad-web
systemctl status zammad-worker
systemctl status zammad-websocketВажно: добавьте автозапуск сервисов при старте системы:
systemctl enable zammadРекомендации по безопасности и обслуживанию
- Настройте регулярное резервное копирование базы данных PostgreSQL и папки /opt/zammad, где хранятся прикреплённые файлы.
- Настройте мониторинг состояния сервисов и логов (например, через Prometheus/Alertmanager, Zabbix или другой инструмент).
- Ограничьте доступ к серверу по SSH, используйте ключи и отключите вход по паролю.
- Используйте регулярное обновление пакетов и плановую проверку уязвимостей.
- Настройте автоматическое продление сертификатов Let’s Encrypt (systemd timer или cron).
Чек‑лист для запуска в продакшн
- DNS для домена указывает на публичный IP сервера
- Порты 80 и 443 открыты и проброшены
- Выполнена установка Zammad и Nginx
- SSL выдан и корректно установлен
- Создан администратор Zammad через веб‑мастер
- Настроено резервное копирование PostgreSQL
- Настроены правила брандмауэра и SELinux (если применимо)
- Включён автозапуск сервисов systemd
Критерии приёмки
- Веб‑интерфейс доступен по HTTPS и сертификат валиден
- Веб‑страница Zammad открывается без ошибок статических ресурсов
- Создание тикета и отправка уведомления по email работают
- Websocket соединение устанавливается и отображает обновления в реальном времени
- Все системные сервисы Zammad находятся в состоянии active (running)
Когда этот подход не подходит
- У вас ограниченные ресурсы и вы хотите минимизировать эксплуатационную нагрузку — рассмотрите SaaS‑версию или хостинг от стороннего провайдера.
- Если вы ожидаете очень большую нагрузку, рассмотрите кластеризацию и выделение отдельных серверов для БД и приложений.
- Docker‑окружение может быть предпочтительнее для динамических тестовых сред.
Альтернативные подходы
- Установка на Ubuntu/Debian с использованием apt‑репозитория Zammad.
- Развёртывание в Docker Compose или Kubernetes для упрощённой масштабируемости.
- Использование облачного хостинга и managed PostgreSQL для уменьшения операционной нагрузки.
Мини‑методология: как поддерживать рабочую инсталляцию
- Еженедельные обновления пакетов и проверка changelog.
- Автоматические бэкапы базы каждый день и тест восстановления раз в месяц.
- Мониторинг производительности и алёрты при падении доступности.
- Автоматическая регенерация сертификатов и контроль сроков действия.
Тесты и приёмка (примерные тест‑кейсы)
- Откройте главную страницу Zammad по HTTPS — страница загружается и в логе нет ошибок 5xx.
- Создайте тикет через UI и убедитесь, что он появился в БД и получено уведомление по почте.
- Подключитесь к чату/вебсокету и проверьте получение сообщений в реальном времени.
- Перезапустите Zammad сервисы и подтвердите, что система восстановилась без ручных действий.
Краткий глоссарий
- Zammad — система управления тикетами (Helpdesk) на Ruby
- Nginx — веб‑сервер и обратный прокси
- certbot — клиент для получения сертификатов Let’s Encrypt
- FQDN — полное доменное имя (Fully Qualified Domain Name)
Часто задаваемые вопросы
Как продлить сертификат Let’s Encrypt?
Запустите certbot renew вручную или настройте cron/systemd timer. Проверка: certbot renew –dry-run.
Какие минимальные требования для Zammad?
Официально рекомендуется минимум 2 ГБ ОЗУ для небольших установок. При высокой нагрузке увеличьте ресурсы.
Можно ли развернуть Zammad в Docker?
Да. Docker и Kubernetes — распространённая альтернатива. Для продакшна выбор зависит от опыта и требований к масштабированию.
Краткое объявление (для рассылки)
Установлен Zammad Helpdesk на CentOS 7 с Nginx и PostgreSQL. Включён HTTPS через Let’s Encrypt. Выполнена базовая настройка и подготовлен план обслуживания. Готово к тестированию и подключению каналов связи.
Резюме
Zammad успешно устанавливается на CentOS 7 с помощью RPM‑репозитория. В статье показаны шаги установки, настройка SSL с certbot, конфигурация Nginx и первичная настройка через веб‑интерфейс. Также приведены рекомендации по безопасности, чек‑лист и тестовые сценарии для приёмки.
Важно: перед запуском в продакшн проверьте параметры доменов и SELinux, настройте резервное копирование и мониторинг.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента