Zammad

Zammad

Instalar Zammad

Instalación en debian 12

Preparar el entorno

apt update
apt install curl apt-transport-https gnupg

Instalar ELASTICSEARCH

apt install apt-transport-https sudo wget curl gnupg
echo "deb [signed-by=/etc/apt/trusted.gpg.d/elasticsearch.gpg] https://artifacts.elastic.co/packages/7.x/apt stable main"| \
  tee -a /etc/apt/sources.list.d/elastic-7.x.list > /dev/null
curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | \
  gpg --dearmor | tee /etc/apt/trusted.gpg.d/elasticsearch.gpg> /dev/null
apt update
apt install elasticsearch
/usr/share/elasticsearch/bin/elasticsearch-plugin install ingest-attachment

Configurar elasticsearch para inicio automático

systemctl start elasticsearch
systemctl enable elasticsearch

Añadimos a /etc/elasticsearch/elasticsearch.yml

http.max_content_length: 400mb

indices.query.bool.max_clause_count: 2000

reiniciamos servicio elasticsearch

systemctl restart elasticsearch

Habilitamos el repositorio de Zammad

curl -fsSL https://dl.packager.io/srv/zammad/zammad/key | \
  gpg --dearmor | tee /etc/apt/trusted.gpg.d/pkgr-zammad.gpg> /dev/null
 
 echo "deb [signed-by=/etc/apt/trusted.gpg.d/pkgr-zammad.gpg] https://dl.packager.io/srv/deb/zammad/zammad/stable/debian 12 main"| \
   tee /etc/apt/sources.list.d/zammad.list > /dev/null

Instalar Zammad

apt update
apt install zammad

Conectar Zammad a elasticsearch

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

Opcionalmente podemos poner el rebuild con el número de hilos (cores) para mejorar el tiempo de respuesta. En el ejemplo 8 cores

zammad run rake zammad:searchindex:rebuild[8]

Copiamos el fichero de configuración de nginx de ejemlo 

Configurar Nginx con certificado

cp /opt/zammad/contrib/nginx/zammad.conf /etc/nginx/sites-enabled/zammad.conf

A continuación instalaremos el certbot para poner el certificado.

Instalación para debian 10

Preparar el entorno

$ apt update
$ apt install curl

# For Debian 10+
$ apt install nodejs

Instalar ELASTICSEARCH

$ apt install apt-transport-https sudo wget
$ echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | tee -a /etc/apt/sources.list.d/elastic-7.x.list
$ wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -
$ apt update
$ apt install elasticsearch
$ /usr/share/elasticsearch/bin/elasticsearch-plugin install ingest-attachment
responder S

$ systemctl start elasticsearch
$ systemctl enable elasticsearch


Añadimos a /etc/elasticsearch/elasticsearch.yml

http.max_content_length: 400mb

indices.query.bool.max_clause_count: 2000

reiniciamos servicio elasticsearch

$ systemctl restart elasticsearch

Continuamos instalando zammad

locale |grep "LANG="

debe devolver <lang_code>.utf8

Agregar repositorio Zammad

wget -qO- https://dl.packager.io/srv/zammad/zammad/key | apt-key add -

wget -O /etc/apt/sources.list.d/zammad.list \
https://dl.packager.io/srv/zammad/zammad/stable/installer/debian/10.repo

Instalamos zammad

$apt update
$apt install zammad

Otros aspectos a tener en cuenta


OJO AL FIREWALL DEBIAN

IGUAL HAY QUE AÑADIR

#!/usr/local/sbin/nft -f
flush ruleset

table inet filter {
   chain input {
      type filter hook input priority 0; policy drop;
      ct state established,related accept
      tcp dport ssh log accept
      tcp dport { http, https } accept
      udp dport { http, https } accept
   }

   chain forward {
      type filter hook forward priority 0; policy accept;
   }

   chain output {
      type filter hook output priority 0; policy accept;
   }
}

Conecta Zammad

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

Configurar Nginx con certificado

cp /opt/zammad/contrib/nginx/zammad_ssl.conf /etc/nginx/sites-enabled/zammad.conf

poner los certificados

y configurar via web la organizacion

Cambiar contraseña zammad

Se abre consola Rails:

zammad run rails c


Se lanza la siguiente sentencia:

User.find_by(email:'usuario@dominio.com').update!(password:'micontraseña')

Borrar ticket en Zammad

Muchas veces nos encontramos con un ticket de spam, que lo cerramos, pero al enviar respuesta, vuelve a abrirse, una y otra vez.

Para eliminarlo entramos en la consola de rails

Ejecutamos

zammad run rails c


Y una vez nos aparezca la consola (tardará unos 30/40 segundos)

Tecleamos Ticket.find(XYZ) Y comprobamos que es realmente el ticket que queremos eliminar (en nuestro caso es el 348)

=> #<Ticket id: 348, group_id: 1, priority_id: 2, state_id: 2, organization_id: nil, number: "35003463", 
title: "Spam subject", owner_id: 3, customer_id: 114, note: nil, first_response_at: "2022-02-28 10:24:43",
first_response_escalation_at: nil, first_response_in_min: 490027, first_response_diff_in_min: -490012, 
close_at: "2021-12-27 13:28:22", close_escalation_at: nil, close_in_min: 490027, 
close_diff_in_min: -489667, update_escalation_at: nil, update_in_min: nil, 
update_diff_in_min: nil, last_contact_at: "2022-03-05 11:20:23", 
last_contact_agent_at: "2022-02-28 10:24:43", last_contact_customer_at: "2022-03-05 11:20:23", 
last_owner_update_at: "2022-04-16 08:01:57", create_article_type_id: 1, create_article_sender_id: 2, 
article_count: 21, escalation_at: nil, pending_time: nil, type: nil, time_unit: nil, 
preferences: {"channel_id"=>3, "escalation_calculation"=>{"first_response_at"=>Mon, 28 Feb 2022 10:24:43 UTC +00:00, 
  "last_update_at"=>Sat, 05 Mar 2022 11:20:23 UTC +00:00, "close_at"=>Mon, 27 Dec 2021 13:28:22 UTC +00:00, 
  "last_contact_at"=>Sat, 05 Mar 2022 11:20:23 UTC +00:00, "sla_id"=>2, "sla_updated_at"=>Mon, 13 Apr 2020 20:33:25 UTC +00:00,
  "calendar_id"=>2, "calendar_updated_at"=>Fri, 15 Apr 2022 14:00:22 UTC +00:00, "escalation_disabled"=>false}}, 
updated_by_id: 117, created_by_id: 114, created_at: "2021-01-21 06:20:56", updated_at: "2022-04-16 08:01:59"

Y para eliminarlo

irb(main):003:0>Ticket.find(XYZ).destroy

Donde XYZ es el id del ticket que se ve en la URL

https://soporte.ateinco.net/#ticket/zoom/XYZ

Cambiar estado ticket zammad

Para ello deberemos de entrar en la consola de Zammad

zammad run rails c

Y una vez nos aparezca la consola (tardará unos 30/40 segundos)

Tecleamos Ticket.find(XYZ) Y comprobamos que es realmente el ticket al que queremos cambiar es estado

=> #<Ticket id: 348, group_id: 1, priority_id: 2, state_id: 2, organization_id: nil, number: "35003463", 
title: "Spam subject", owner_id: 3, customer_id: 114, note: nil, first_response_at: "2022-02-28 10:24:43",
first_response_escalation_at: nil, first_response_in_min: 490027, first_response_diff_in_min: -490012, 
close_at: "2021-12-27 13:28:22", close_escalation_at: nil, close_in_min: 490027, 
close_diff_in_min: -489667, update_escalation_at: nil, update_in_min: nil, 
update_diff_in_min: nil, last_contact_at: "2022-03-05 11:20:23", 
last_contact_agent_at: "2022-02-28 10:24:43", last_contact_customer_at: "2022-03-05 11:20:23", 
last_owner_update_at: "2022-04-16 08:01:57", create_article_type_id: 1, create_article_sender_id: 2, 
article_count: 21, escalation_at: nil, pending_time: nil, type: nil, time_unit: nil, 
preferences: {"channel_id"=>3, "escalation_calculation"=>{"first_response_at"=>Mon, 28 Feb 2022 10:24:43 UTC +00:00, 
  "last_update_at"=>Sat, 05 Mar 2022 11:20:23 UTC +00:00, "close_at"=>Mon, 27 Dec 2021 13:28:22 UTC +00:00, 
  "last_contact_at"=>Sat, 05 Mar 2022 11:20:23 UTC +00:00, "sla_id"=>2, "sla_updated_at"=>Mon, 13 Apr 2020 20:33:25 UTC +00:00,
  "calendar_id"=>2, "calendar_updated_at"=>Fri, 15 Apr 2022 14:00:22 UTC +00:00, "escalation_disabled"=>false}}, 
updated_by_id: 117, created_by_id: 114, created_at: "2021-01-21 06:20:56", updated_at: "2022-04-16 08:01:59"

Una vez comprobado, cambiamos el estado

Ticket.find(348).update(state_id:4)