Установка Zammad

Установка Zammad
Попытка поставить apt-пакет без зависимостей

Вводные

Захотелось поставить Zammad на погонять. Так как я всё ещё не пользуюсь докером без необходимости, я решительно поднял свою ногу и шагнул вперёд в говно

Также я ещё не подготовил свой ELK (в ✨личных целях ✨), поэтому решил пробовать ставить без ElasticSearch

Ссылки

  1. Официальная инструкция по установке (уровень полезности для моего кейса: 50/50): https://docs.zammad.org/en/latest/install/package.html
  2. Официальная инструкция по конфигурации веб-сервера: https://docs.zammad.org/en/latest/getting-started/configure-webserver.html
  3. Как ставить apt-пакеты без зависимостей: https://askubuntu.com/questions/74523/how-can-i-install-a-package-without-installing-some-dependencies
  4. Как чинить apt-пакеты, установленные без зависимостей: https://serverfault.com/a/506993 (и в разделе про установку Zammad)
  5. Выпуск самоподписанного сертификата: https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-nginx-in-ubuntu-16-04

⚠️ Вот это всё - ! не работает !

Бесполезная информация, но пускай будет

sudo apt install zammad
sudo apt install zammad --skip-broken
sudo apt install zammad --force
sudo apt install zammad --ignore-depends
sudo apt install zammad elasticsearch-
sudo apt install zammad elasticsearch- elasticsearch-oss-
sudo apt install zammad --no-install-recommends

Установка

Инструкция заговорщицки говорит, что зависимости можно не ставить, но потом начался полный бананас

Zammad оказалось непросто установить без Эластика. Но сработает это:

sudo apt download zammad
sudo dpkg --force-all -i zammad_<версия>.deb

Но. Пакет на данном этапе будет сломан
Чтобы исправить, делаем

sudo vi /var/lib/dpkg/status

и ищем там Package: Zammad, где из раздела Depends: сносим лишнее - я убрал ElasticSearch (оба), nginx, Redis и PostgreSQL (так как всё из этого будет - или уже стоит - на отдельных серверах). Nginx ставьте по своему усмотрению - либо нужен будет наружный, либо внутренний (для локальных сетей), либо оба сразу

После этого нужно поставить все мини-, микро- и нанозависимости, прежде чем чинить apt:

sudo apt install libpq5 libev4 libimlib2 libcairo2 libpixman-1-0 libxcb-render0 libxcb-shm0 libxrender1 libgif7 libid3tag0 libjxl0.7 libopenjp2-7 librsvg2-2 libspectre1 libwebpdemux2 libx11-xcb1 libhwy1t64 liblcms2-2 liblcms2-2 libcairo-gobject2 libgdk-pixbuf-2.0-0 libpango-1.0-0 libpangocairo-1.0-0 librsvg2-common libgs10 libgdk-pixbuf2.0-bin libgs10-common poppler-data libcups2t64 libidn12 libijs-0.35 libjbig2dec0 libpaper1 libxt6t64 fontconfig libharfbuzz0b libthai0 libharfbuzz0b libpangoft2-1.0-0 libavahi-client3 libavahi-common3 libgdk-pixbuf2.0-common fonts-urw-base35 libgs-common fonts-droid-fallback libgraphite2-3 libthai-data libdatrie1 libice6 libsm6 xfonts-utils libavahi-common-data x11-common libfontenc1 xfonts-encodings

(по одному поставить не покатит, но если указать все сразу, то apt сам разберётся, в каком порядке ставить)

Чиним apt:

sudo apt -f install

После этого zammad должен "нормально" себя чувствовать в /opt/zammad

⚠️ Если при sudo apt -f install apt предлагает удалить zammad, значит, какие-то зависимости не поставились, нужно перепроверять. Как это выглядело у меня:

$ sudo apt -f install
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Correcting dependencies... Done
The following packages will be REMOVED:
  zammad
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 727 MB disk space will be freed.
Do you want to continue? [Y/n] n

Настройка

Конфигурация базы

⚠️ С версии 7.0.0 Zammad будет поддерживать только PostgreSQL, так что остальное настраивать на текущем этапе не имеет смысла.

Если сервер удалённый, то в файле /opt/zammad/config/database.yml:

production:
  adapter: postgresql
  host: <ip СУБД>
  database: <название базы>
  pool: 50
  timeout: 5000
  encoding: utf8
  username: <имя>
  password: <пароль от базы>

Если вы создали базу руками, а не через

sudo zammad run rake db:create

то понадобится её инициализировать, заполнив данными приложения:

sudo zammad run rake db:prepare

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

sudo zammad config:set REDIS_URL=redis://<ip>:6379

После этого команда

sudo /usr/bin/zammad run web

не должна вернуть ошибок (кроме "занят порт", если служба уже была запущена)

На всякий:

sudo systemctl restart zammad
nginx

Стандартной конфигурации достаточно для запуска в приватной сети

# копирование стандартного конфига zammad в директорию nginx
sudo cp /opt/zammad/contrib/nginx/zammad_ssl.conf /etc/nginx/conf.d/zammad.conf
# генерация dhparam для шифрования соединения с nginx
sudo openssl dhparam -out /etc/ssl/dhparam.pem 2048
# выпуск самоподписанного сертификата
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/zammad-my-dmn.key -out /etc/ssl/certs/zammad-my-dmn.crt

В конфиге достаточно поменять server_name и пути к сертификатам:

server_name zammad.your.example;
<...>
ssl_certificate /etc/ssl/certs/zammad-my-dmn.crt;
ssl_certificate_key /etc/ssl/private/zammad-my-dmn.key;

Перезагрузка конфига

sudo nginx -s reload

После этого по адресу https://ip_сервера будет:

Веб-страница начальной настройки Zammad