Установка Zammad
Вводные
Захотелось поставить Zammad на погонять. Так как я всё ещё не пользуюсь докером без необходимости, я решительно поднял свою ногу и шагнул вперёд в говно
Также я ещё не подготовил свой ELK (в ✨личных целях ✨), поэтому решил пробовать ставить без ElasticSearch
Ссылки
- Официальная инструкция по установке (уровень полезности для моего кейса: 50/50): https://docs.zammad.org/en/latest/install/package.html
- Официальная инструкция по конфигурации веб-сервера: https://docs.zammad.org/en/latest/getting-started/configure-webserver.html
- Как ставить apt-пакеты без зависимостей: https://askubuntu.com/questions/74523/how-can-i-install-a-package-without-installing-some-dependencies
- Как чинить apt-пакеты, установленные без зависимостей: https://serverfault.com/a/506993 (и в разделе про установку Zammad)
- Выпуск самоподписанного сертификата: 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_сервера будет:

Comments ()