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.