Zammad es una solución de tickets gratuita, de código abierto y con todas las funciones escritas en Ruby. Es un sistema web con muchas funciones para administrar la comunicación con el cliente a través de varios canales como teléfono, Facebook, Twitter, chat y correos electrónicos.
También puede atender fácilmente las consultas y quejas de los clientes. Zammad viene con un amplio conjunto de características que incluyen búsqueda de texto completo, guardado automático, auditable, admite autenticación externa, admite varios idiomas y mucho más.
Requisitos previos
- Un servidor Ubuntu 20.04 LTS, de un mínimo de 2 vCore con 2 GB de memoria por vCore y para el uso de Elasticsearch (recomendado) un mínimo de 6 GB de memoria (requisitos de hardware oficiales).
- Acceso al servidor con root o un usuario con privilegios para realizar sudo.
Instalación de Elasticsearch (dependencia opcional pero recomendada)
Para la funcionalidad de búsqueda deberás instalar Elasticsearch. Por defecto, no está disponible en el repositorio predeterminado de Ubuntu 20.04 LTS. Por ello, deberás agregar el repositorio Elasticsearch en su sistema.
Primero, instala apt-transport-https y el resto de dependencias con el siguiente comando:
# apt update -y && apt install wget libimlib2 apt-transport-https gnupg -y
A continuación, descarga y agrega la clave pública para el repositorio de Elasticsearch:
# wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -
Y posteriormente agrega el repositorio Elasticsearch:
# echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | tee -a /etc/apt/sources.list.d/elastic-7.x.list
A continuación, actualiza los repositorios e instala Elasticsearch:
# apt update -y && apt install elasticsearch -y
Una vez que se haya completado la instalación, inicia el servicio elasticsearch y activa el inicio con el sistema:
# systemctl start elasticsearch && systemctl enable elasticsearch
Adicionalmente, puedes comprobar el estado de Elasticsearch con el siguiente comando:
# systemctl status elasticsearch
Deberías ver el siguiente resultado (active):
● elasticsearch.service - Elasticsearch
Loaded: loaded (/lib/systemd/system/elasticsearch.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2021-08-04 10:46:17 CEST; 4s ago
Docs: https://www.elastic.co
Main PID: 3958 (java)
Tasks: 61 (limit: 1074)
Memory: 660.9M
CGroup: /system.slice/elasticsearch.service
├─3958 /usr/share/elasticsearch/jdk/bin/java -Xshare:auto -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.negative.ttl=10 -XX:+AlwaysPreTouch -Xss1m -Djava.awt.headle>
└─4125 /usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/controller
Aug 04 10:45:38 zammad systemd[1]: Starting Elasticsearch...
Aug 04 10:46:17 zammad systemd[1]: Started Elasticsearch.
A continuación, también tienes que permitir que Elasticsearch indexe los archivos adjuntos. Puedes hacerlo con el siguiente comando:
# /usr/share/elasticsearch/bin/elasticsearch-plugin install ingest-attachment
Tendrás que aceptar el mensaje de instalación, y deberías ver el siguiente resultado:
-> 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 http://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
Una vez instalado, reinicia Elasticsearch para cargar el nuevo complemento:
# systemctl restart elasticsearch
Instalación de Zammad
Por defecto, Zammad tampoco está disponible en el repositorio Ubuntu 20.04 LTS. Por lo tanto, deberás agregar el repositorio de Zammad a tu sistema.
Primero, añade la llave para el repositorio:
# wget -qO- https://dl.packager.io/srv/zammad/zammad/key | apt-key add -
Luego añade el repositorio:
# wget -O /etc/apt/sources.list.d/zammad.list \
https://dl.packager.io/srv/zammad/zammad/stable/installer/ubuntu/20.04.repo
Una vez agregado el repositorio, actualiza los repositorios e instala Zammad:
# apt update -y && apt install zammad -y
Completada la instalación, puedes verificar el estado de Zammad con el siguiente comando:
# systemctl status zammad
Deberías ver el siguiente resultado (active):
● zammad.service
Loaded: loaded (/etc/systemd/system/zammad.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2021-08-04 11:07:30 CEST; 39s ago
Main PID: 5371 (sleep)
Tasks: 1 (limit: 2281)
Memory: 176.0K
CGroup: /system.slice/zammad.service
└─5371 /bin/sleep infinity
Aug 04 11:07:30 zammad systemd[1]: Started zammad.service.
Conectar Zammad con Elasticsearch
Únicamente si has instalado Elasticsearch (recomendado) deberás hacer que Zammad funcione con él y reconstruir el índice. Para realizarlo, puedes ejecutar los siguientes comandos:
# zammad run rails r "Setting.set('es_url', 'http://localhost:9200')"
# zammad run rake searchindex:rebuild
También puedes agregar el espacio de nombre de índice Elasticsearch adicional, ignorar los tipos de archivos binarios comunes y establecer el tamaño máximo de archivo adjunto. Ejecuta con los siguientes comandos para ello:
# zammad run rails r "Setting.set('es_index', Socket.gethostname + '_zammad')"
# zammad run rails r "Setting.set('es_attachment_ignore', [ '.png', '.jpg', '.jpeg', '.mpeg', '.mpg', '.mov','.bin', '.exe', '.box', '.mbox' ] )"
# zammad run rails r "Setting.set('es_attachment_max_size_in_mb', 50)"
Configurar Nginx para Zammad
Por defecto, sólo se puede acceder a Zammad desde localhost. Por lo tanto, deberás configurar Nginx para acceder a Zammad desde una ubicación remota. Para ello, puedes editar el archivo de host virtual de Zammad:
# nano /etc/nginx/sites-available/zammad.conf
Deberás reemplazar el localhost de la línea server_name con el FQDN o la dirección IP de tu servidor:
server_name FQDN_or_your-server-ip;
Guarda los cambios, cierra el editor y verifica la modificación realizada:
# nginx -t
Si la configuración es correcta, recarga el servicio Nginx para aplicar los cambios realizados en la configuración:
# systemctl reload nginx
Si has utilizado un FQDN puedes obtener un certificado con Let's Encrypt rápidamente con Certbot. Puedes instalar la dependencia de NGINX para Certbot directamente:
# apt install python3-certbot-nginx
Luego podrás adquirir el certificado para el registro ejecutando:
# certbot --nginx -d ejemplo.com
Deberás ir respondiendo a las preguntas de Certbot, puedes indicar la opción de redirect para redirigir el tráfico no seguro a seguro.
Acceder a la Interfaz Web de Zammad
Ahora abre tu navegador web y escribe la URL http: // FQDN or your-server-ip. Serás redirigido a la siguiente página:
Haz clic en el botón 'Configurar nuevo sistema', deberías ver la siguiente página:
Proporciona el nombre de administrador, correo electrónico, contraseña y haz clic en el botón 'Crear'. Serás redirigido a la siguiente página:
Proporciona el nombre de tu organización, la URL del sistema, carga el logotipo y haz clic en el botón 'Siguiente'.
Elige un método de envío de correo electrónico adecuado y haz clic en el botón ‘Continuar’.
Ahora haz clic en el botón 'Omitir' para finalizar la instalación. Deberías ver el dashboard del panel de Zammad:
¡Felicidades! Has instalado y configurado el sistema de ticketing Zammad en el servidor Ubuntu 20.04 LTS.
Ahora puedes implementar fácilmente Zammad para un entorno en producción.