Pesquisa de site

Instale o sistema de tickets Zammad no Rocky 8 | CentOS 8


Toda empresa com suporte ao cliente precisa de um sistema de tickets e suporte ao cliente para operações comerciais tranquilas. Existe uma opção de soluções de software comerciais e de código aberto que podem ser adotadas para isso. Zammad é um dos melhores sistemas de tíquetes e suporte ao cliente de código aberto que permite gerenciar a comunicação com o cliente por meio de diversos canais, como mídia social, e-mail, chamadas telefônicas e bate-papos, a partir de um painel centralizado da web.

Alguns recursos principais da solução de software Zammad são:

  • Gestão de tickets de clientes
  • Base de conhecimento para instruções, perguntas frequentes e POPs internos
  • Gerenciamento de ativos de TI
  • Automação de fluxos de trabalho
  • Monitoramento, relatórios e análises
  • Suporte para vários canais de comunicação
  • Integração com muitas ferramentas de colaboração
  • Coleta de feedback do cliente
  • Gestão de Acordo de Nível de Serviço (SLA)
  • Gestão de Call Center
  • Modelos de e-mail
  • Notificações em tempo real
  • Portal de autoatendimento
  • Entre muitos outros

Neste breve tutorial você aprenderá como instalar, configurar e usar o Zammad Ticketing System no sistema Rocky 8 ou CentOS 8 Linux.

Adicionar repositório EPEL

Alguns dos pacotes de dependência necessários estão contidos no repositório EPEL. Você pode configurar o repositório no sistema executando os seguintes comandos no sistema.

sudo dnf install wget epel-release

Defina também a localidade para o seu idioma.

sudo localectl set-locale LANG=en_US.utf8

Instale o Elasticsearch

Importe a chave GPG do elasticsearch para o armazenamento do sistema.

sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

O repositório Elasticsearch adicionado ao sistema.

sudo tee /etc/yum.repos.d/elasticsearch-7.x.repo<<EOF
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF

Instale o pacote elasticsearch executando os seguintes comandos em seu terminal.

sudo dnf -y install elasticsearch

Abra o arquivo de configuração para edição

sudo vim /etc/elasticsearch/elasticsearch.yml

Personalize os valores http.max_content_length e indices.query.bool.max_clause_count.

# Tickets above this size (articles + attachments + metadata)
# may fail to be properly indexed (Default: 100mb).
#
# When Zammad sends tickets to Elasticsearch for indexing,
# it bundles together all the data on each individual ticket
# and issues a single HTTP request for it.
# Payloads exceeding this threshold will be truncated.
#
# Performance may suffer if it is set too high.
http.max_content_length: 400mb

# Allows the engine to generate larger (more complex) search queries.
# Elasticsearch will raise an error or deprecation notice if this value is too low,
# but setting it too high can overload system resources (Default: 1024).
#
# Available in version 6.6+ only.
indices.query.bool.max_clause_count: 2000

Inicie e habilite o serviço para iniciar na inicialização do sistema.

sudo systemctl enable --now elasticsearch

Instale o plugin ingest-attachment para elasticsearch.

$ sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install ingest-attachment
-> Installing ingest-attachment
-> Downloading ingest-attachment from elastic
[=================================================] 100%
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@     WARNING: plugin requires additional permissions     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
* java.lang.RuntimePermission accessClassInPackage.sun.java2d.cmm.kcms
* java.lang.RuntimePermission accessDeclaredMembers
* java.lang.RuntimePermission getClassLoader
* java.lang.reflect.ReflectPermission suppressAccessChecks
* java.security.SecurityPermission createAccessControlContext
See https://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html
for descriptions of what these permissions allow and the associated risks.

Continue with installation? [y/N]y
-> Installed ingest-attachment
-> Please restart Elasticsearch to activate any plugins installed

Reinicie o serviço após fazer a alteração.

sudo systemctl restart elasticsearch

Instale o Zammad no Rocky/CentOS 8

Importar chave do repositório Zammad

sudo rpm --import https://dl.packager.io/srv/zammad/zammad/key

Em seguida, adicione o repositório Zammad RPM que contém os pacotes necessários

wget https://dl.packager.io/srv/zammad/zammad/stable/installer/el/8.repo -O zammad.repo 
sudo mv zammad.repo  /etc/yum.repos.d/

Instale o Zammad usando o gerenciador de pacotes yum ou dnf.

sudo dnf -y install zammad

Inicie e ative os serviços.

sudo systemctl enable --now zammad zammad-web zammad-worker zammad-websocket

Definir permissões de diretório para dados

sudo chmod -R 755 /opt/zammad/public/

Se o SELinux estiver no modo de aplicação, configure os rótulos.

sudo chcon -Rv --type=httpd_sys_content_t /opt/zammad/public/
sudo setsebool httpd_can_network_connect on -P
sudo semanage fcontext -a -t httpd_sys_content_t /opt/zammad/public/
sudo restorecon -Rv /opt/zammad/public/
sudo chmod -R a+r /opt/zammad/public/

Abra a porta 80 ou porta 443 no firewall, se ativo.

sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --reload

Em geral, o Zammad usa três serviços – estes podem ser (re)iniciados e interrompidos com o zammad pai.

$ Zammad service to start all services at once
$ systemctl (status|start|stop|restart) zammad

$ # Zammads internal puma server (relevant for displaying the web app)
$ systemctl (status|start|stop|restart) zammad-web

$ # Zammads background worker - relevant for all delayed- and background jobs
$ systemctl (status|start|stop|restart) zammad-worker

$ # Zammads websocket server for session related information
$ systemctl (status|start|stop|restart) zammad-websocket

Verifique se os serviços estão em execução.

$ systemctl status zammad zammad-web zammad-worker zammad-websocket
 zammad.service
   Loaded: loaded (/etc/systemd/system/zammad.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2024-03-14 22:36:35 EAT; 1min 14s ago
 Main PID: 6807 (sleep)
    Tasks: 1 (limit: 49026)
   Memory: 172.0K
   CGroup: /system.slice/zammad.service
           └─6807 /bin/sleep infinity

Mar 14 22:36:35 webhosting.cloudspinx.com systemd[1]: Started zammad.service.

 zammad-web.service
   Loaded: loaded (/etc/systemd/system/zammad-web.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2024-03-14 22:36:35 EAT; 1min 14s ago
 Main PID: 6810 (sleep)
    Tasks: 1 (limit: 49026)
   Memory: 172.0K
   CGroup: /system.slice/zammad-web.service
           └─6810 /bin/sleep infinity

Mar 14 22:36:35 webhosting.cloudspinx.com systemd[1]: Started zammad-web.service.

 zammad-worker.service
   Loaded: loaded (/etc/systemd/system/zammad-worker.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2024-03-14 22:36:35 EAT; 1min 14s ago
 Main PID: 6808 (sleep)
    Tasks: 1 (limit: 49026)
   Memory: 172.0K
   CGroup: /system.slice/zammad-worker.service
           └─6808 /bin/sleep infinity

Mar 14 22:36:35 webhosting.cloudspinx.com systemd[1]: Started zammad-worker.service.

 zammad-websocket.service
   Loaded: loaded (/etc/systemd/system/zammad-websocket.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2024-03-14 22:36:35 EAT; 1min 14s ago
 Main PID: 6812 (sleep)
    Tasks: 1 (limit: 49026)
   Memory: 176.0K
   CGroup: /system.slice/zammad-websocket.service
           └─6812 /bin/sleep infinity

Mar 14 22:36:35 webhosting.example.com systemd[1]: Started zammad-websocket.service.

Defina o endereço do servidor Elasticsearch usando o comando zammad.

zammad run rails r "Setting.set('es_url', 'http://localhost:9200')"

Construa o índice de pesquisa antes de usar o Zammad.

$ zammad run rake zammad:searchindex:rebuild
Dropping indexes... done.
Deleting pipeline... done.
Creating indexes... done.
Creating pipeline... done.
Reloading data...
  - Chat::Session...
    done in 0 seconds.
  - Cti::Log...
    done in 0 seconds.
  - Group...
    done in 0 seconds.
  - KnowledgeBase::Answer::Translation...
    done in 0 seconds.
  - KnowledgeBase::Category::Translation...
    done in 0 seconds.
  - KnowledgeBase::Translation...
    done in 0 seconds.
  - Organization...
    done in 0 seconds.
  - StatsStore...
    done in 0 seconds.
  - Ticket::Priority...
    done in 0 seconds.
  - Ticket::State...
    done in 0 seconds.
  - Ticket...
    done in 0 seconds.
  - User...
    done in 0 seconds.

A desativação da verificação SSL pode ser feita definindo es_ssl_verify como false.

zammad run rails r "Setting.set('es_ssl_verify', false)"

Configurar proxy Nginx

Certifique-se de que o nginx esteja instalado.

sudo dnf -y install nginx && sudo systemctl enable --now nginx

Configure o servidor Web copiando o arquivo de configuração

$ sudo find / -name zammad.conf
/etc/nginx/conf.d/zammad.conf
/opt/zammad/contrib/apache2/zammad.conf
/opt/zammad/contrib/nginx/zammad.conf

Edite e defina o nome DNS correto para corresponder ao nome DNS.

$ sudo vim /etc/nginx/conf.d/zammad.conf
  # replace 'localhost' with your fqdn if you want to use zammad from remote
   server_name tickets.cloudspinx.com;

Confirme o índice Nginx.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Reinicie o serviço do servidor web nginx.

sudo systemctl restart nginx

Acesse a interface web do Zammad

Acesse o Zammad em seu navegador usando o nome de host configurado – http://yourfqdn. Escolha “Configurar um novo sistema“.

Insira o nome da sua organização e carregue o logotipo da sua empresa.

Confirme se o logotipo foi carregado e está visível.

Em seguida, você pode configurar o SMTP para e-mails enviados ou optar por configurar posteriormente.

O MTA local pode ser usado para entrega de e-mails.

Configure os canais de comunicação a serem usados ou pule para configurações posteriores.

Na próxima página você deverá ver a interface administrativa do Zammad.

Proteja o Zammad com o certificado Let's Encrypt

Let’s Encrypt é um certificado SSL gratuito que pode ser usado para acesso HTTPS aos seus sites. Instale o Certbot.

sudo dnf -y install epel-release
sudo dnf -y install certbot python3-certbot python3-certbot-nginx

Defina o nome de domínio e e-mail do Zammad que receberá alertas de expiração de certificado.

export DOMAIN="tickets.example.com"
export ALERTS_EMAIL="alerts.example.com"

Gere certificados SSL e configure o nginx para usá-los.

sudo certbot --nginx --redirect -d $DOMAIN --preferred-challenges http --agree-tos -n -m $ALERTS_EMAIL --keep-until-expiring

Saiba mais nas páginas de documentação do Zammad.

Artigos relacionados: