Гид по технологиям

Установка и настройка Zammad на CentOS 7 с Nginx и PostgreSQL

• 7 min read • DevOps • Обновлено 26 Nov 2025
Zammad на CentOS 7 — установка и настройка
Zammad на CentOS 7 — установка и настройка

Что такое Zammad

Zammad — это open source система поддержки/Helpdesk, написанная на Ruby. Это веб‑система тикетов с поддержкой множества каналов: Facebook, Telegram, онлайн‑чат и электронная почта. Zammad распространяется под лицензией GNU AFFERO (AGPL) и доступен на GitHub. Вы можете установить его бесплатно на собственный сервер.

Что мы сделаем

  1. Установим Zammad на CentOS 7
  2. Подготовим и настроим SSL через Let’s Encrypt
  3. Настроим Nginx как обратный прокси для Zammad
  4. Выполним первоначальную настройку Zammad через веб‑интерфейс
  5. Приведём дополнительные рекомендации и чек‑листы для эксплуатации

Требования

  • 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.

Создание SSL‑сертификата

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

Certbot выполнил задачу успешно

Совет по обслуживанию: настройте автоматическое продление сертификатов. Простая команда для проверки продления:

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

Проверка конфигурации Nginx

Примечание: в примере конфигурации встречаются два разных server_name. Исправьте на ваш актуальный домен во всех местах. Если планируете использовать несколько FQDN — настройте отдельные server блоки.

Шаг 4 — Первичная настройка Zammad через веб‑интерфейс

Откройте браузер и перейдите по адресу вашего Zammad, например:

https://zammad.hakase-labs.co

Вы будете перенаправлены на HTTPS. Нажмите кнопку Setup new system для начала настройки.

Начало настройки Zammad

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

Установка имени пользователя и пароля

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

Указание названия организации

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

Уведомления по электронной почте

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

Конфигурация каналов

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

Интерфейс 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 для уменьшения операционной нагрузки.

Мини‑методология: как поддерживать рабочую инсталляцию

  1. Еженедельные обновления пакетов и проверка changelog.
  2. Автоматические бэкапы базы каждый день и тест восстановления раз в месяц.
  3. Мониторинг производительности и алёрты при падении доступности.
  4. Автоматическая регенерация сертификатов и контроль сроков действия.

Тесты и приёмка (примерные тест‑кейсы)

  • Откройте главную страницу 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, настройте резервное копирование и мониторинг.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро