RocketChat.Server

Rocket.Chat Ansible Galaxy Travis-CI

¡Despliega Rocket.Chat, la mejor plataforma de chat web de código abierto, con Ansible!

Notas

  • La rama master ha sido actualizada a v2.0 y ahora es el código más reciente del rol (en lugar de la versión compatible con 1.9). Si deseas el código más reciente, simplemente no incluyas ninguna versión y ansible-galaxy descargará la última etiqueta, o puedes incluir version: master para estar siempre al día con el desarrollo.
  • Los usuarios de v1.9 pueden continuar utilizando las etiquetas v1.9 y v1.9.0, y aún existe una rama ansible_1.9, aunque poco o nada de modificaciones se harán allí.

Características

  • Despliegue de pila completa opcional: Despliega completamente Rocket.Chat, incluyendo MongoDB y un proxy inverso SSL Nginx. O, despliega Rocket.Chat e intégralo con tus instancias/métodos de despliegue existentes de MongoDB y/o Nginx.

  • Generación automática de certificados SSL opcional: Genera automáticamente certificados SSL para conectividad HTTPS a través de un proxy inverso Nginx. ¡O utiliza tus propios certificados SSL!

  • Actualizaciones automáticas opcionales [requiere Ansible 2.0]: Si se publica una nueva versión de Rocket.Chat, o si deseas seguir el desarrollo para fines de prueba, simplemente actualiza rocket_chat_version a la versión que desees desplegar (consulta la página de lanzamientos de Rocket.Chat, establece rocket_chat_automatic_upgrades en true y deja que este rol haga el resto. Si hay un cambio en el código desplegado en tu servidor Rocket.Chat (ya sea por un cambio remoto en la rocket_chat_version que estás siguiendo, como 'latest' o 'develop', o porque estableciste una nueva rocket_chat_version para obtener), este rol se encargará de la actualización y el redepliegue del servicio Rocket.Chat, manteniendo tus datos intactos. Nota: Esta funcionalidad requiere Ansible 2.0. Consulta cómo obtener la versión 2.0 de este rol en la sección Instalar desde Ansible Galaxy

Plataformas soportadas

Debian

  • Stretch (9)
  • Buster (10)

Ubuntu

  • Bionic Beaver: 18.04 LTS
  • Xenial: 16.04 LTS
  • Trusty: 14.04 LTS

EL (RHEL/CentOS)

  • 7

Si deseas que tu distribución/sistema operativo sea soportado, por favor informa de un problema!

¿Tienes problemas?

Asegúrate de haber leído la FAQ y toda la documentación antes de informar de un problema.

Variables del rol

Todas las variables tienen valores predeterminados razonables en defaults/main.yml

Predeterminados

Nombre Valor Predeterminado Descripción
rocket_chat_automatic_upgrades false Un valor booleano que determina si se debe actualizar Rocket.Chat al realizar cambios en el código fuente
rocket_chat_upgrade_backup true Un valor booleano que determina si se debe hacer una copia de seguridad de la versión actual de Rocket.Chat al actualizar
rocket_chat_upgrade_backup_path "{{ rocket_chat_application_path }}" La ruta para almacenar la copia de seguridad de Rocket.Chat cuando rocket_chat_upgrade_backup es true
rocket_chat_application_path /var/lib/rocket.chat El destino en el sistema de archivos para desplegar Rocket.Chat
rocket_chat_version latest La versión de Rocket.Chat a desplegar; consulta la página de lanzamientos de Rocket.Chat para las opciones disponibles
rocket_chat_tarball_remote Consulta defaults/main.yml La URL remota para obtener el archivo tarball de Rocket.Chat (utiliza rocket_chat_version)
rocket_chat_tarball_sha256sum Consulta defaults/main.yml La suma de verificación SHA256 del archivo tarball de Rocket.Chat que se está obteniendo
rocket_chat_tarball_fetch_timeout 100 El tiempo (en segundos) antes de que la tentativa de obtener el archivo tarball de Rocket.Chat falle
rocket_chat_tarball_validate_remote_cert true Un valor booleano que determina si validar o no los certificados SSL para el archivo tarball remoto de Rocket.Chat
rocket_chat_service_user rocketchat El nombre del usuario que ejecutará el proceso del servidor Rocket.Chat
rocket_chat_service_group rocketchat El nombre del grupo principal para el usuario rocket_chat_service_user
rocket_chat_service_host "{{ ansible_fqdn }}" El FQDN del sistema Rocket.Chat
rocket_chat_service_port 3000 El puerto TCP en el que escucha Rocket.Chat
rocket_chat_service_extra_instances [] Lista de números de puerto TCP para instancias adicionales de rocketchat para manejar más usuarios en una máquina
rocket_chat_node_version 4.5.0 La versión de NodeJS a instalar que n entiende
rocket_chat_node_prefix /usr/local/n/versions/node/{{ rocket_chat_node_version }} La ruta al directorio del binario node que instala n
rocket_chat_npm_dist /usr/bin/npm La ruta al binario original de npm, antes de que n instale cualquier versión de Node
rocket_chat_include_mongodb true Un valor booleano que determina si se debe desplegar MongoDB
rocket_chat_mongodb_keyserver keyserver.ubuntu.com El servidor de claves GPG a utilizar al importar la clave del repositorio de MongoDB
rocket_chat_mongodb_gpg_key 7F0CEB10 La huella digital de la clave GPG a importar para el repositorio de MongoDB
rocket_chat_mongodb_user no se usa por defecto Nombre de usuario a usar al conectarse a MongoDB. Si estableces esto, también debes definir rocket_chat_mongodb_password, de lo contrario, no se usan usuario/contraseña para conectarse a MongoDB
rocket_chat_mongodb_password no se usa por defecto Contraseña a usar al conectarse a MongoDB. Si estableces esto, también debes definir rocket_chat_mongodb_user, de lo contrario, no se usan usuario/contraseña para conectarse a MongoDB
rocket_chat_mongodb_server 127.0.0.1 La IP/FQDN del host de MongoDB
rocket_chat_mongodb_port 27017 El puerto TCP para contactar al host de MongoDB
rocket_chat_mongodb_database rocketchat La base de datos de MongoDB a utilizar para Rocket.Chat
rocket_chat_mongodb_use_tls false Si usar TLS para conectarse a la base de datos de MongoDB
rocket_chat_mongodb_packages mongodb El nombre del paquete(s) de MongoDB a instalar (difiere para diferentes distribuciones - consulta vars/)
rocket_chat_mongodb_config_template mongod.conf.j2 La plantilla /etc/mongod.conf a desplegar
rocket_chat_mongodb_org_pkgs false | true (Debian/Ubuntu) Si se deben utilizar paquetes de la edición comunitaria de MongoDB.org o no
rocket_chat_mongodb_org_version 3.4 Cadena de versión de los paquetes oficiales a instalar
rocket_chat_mongodb_service_name mongod El nombre del servicio systemd y del archivo de configuración de mongodb en /etc
rocket_chat_include_nginx true Un valor booleano que determina si se debe desplegar Nginx
rocket_chat_ssl_generate_certs true Un valor booleano que determina si se deben generar los certificados SSL de Nginx
rocket_chat_ssl_key_path /etc/nginx/rocket_chat.key La ruta de destino para la clave privada SSL de Nginx
rocket_chat_ssl_cert_path /etc/nginx/rocket_chat.crt La ruta de destino para el certificado SSL de Nginx
rocket_chat_ssl_deploy_data false Un valor booleano que determina si se deben desplegar datos SSL personalizados (archivos cert/key)
rocket_chat_ssl_key_file ~ Si no usas la generación de certificados SSL, esta es la ruta a la clave privada SSL de Nginx en el nodo de control de Ansible, para su despliegue
rocket_chat_ssl_cert_file ~ Si no usas la generación de certificados SSL, esta es la ruta al certificado SSL de Nginx en el nodo de control de Ansible, para su despliegue
rocket_chat_nginx_enable_pfs true Un valor booleano que determina si habilitar o no PFS al desplegar Nginx
rocket_chat_nginx_generate_pfs_key true Un valor booleano que determina si generar o no un archivo de clave PFS
rocket_chat_nginx_pfs_key_numbits 2048 Número de bits que pasar a OpenSSL al generar un archivo de clave PFS
rocket_chat_nginx_pfs_key_path /etc/nginx/rocket_chat.pem La ruta de destino para el archivo de clave PFS de Nginx
rocket_chat_nginx_pfs_file ~ Si no usas la generación de clave PFS, esta es la ruta a la clave PFS de Nginx en el nodo de control de Ansible, para su despliegue
rocket_chat_nginx_listen_ssl_port 443 El puerto SSL en el que Nginx escucha
rocket_chat_nginx_listen_port 80 El puerto en el que Nginx escucha

Algunas variables difieren entre sistemas operativos/distribuciones. Estas están establecidas en el directorio vars/, típicamente en un archivo nombrado según la distribución.

Variables de RHEL/CentOS

Establecidas en vars/RedHat.yml

Nombre Valor Predeterminado Descripción
rocket_chat_dep_packages - git Una lista de dependencias de Rocket.Chat para instalar
- GraphicsMagick
- nodejs
- npm
- make
rocket_chat_mongodb_packages - mongodb Una lista de paquetes del servidor MongoDB a instalar
- mongodb-server
rocket_chat_mongodb_repl_lines 'replSet=001-rs' El valor para el conjunto de réplicas de MongoDB
rocket_chat_mongodb_fork true Un valor booleano que establece si se debe bifurcar el proceso del servidor MongoDB
rocket_chat_mongodb_pidfile_path /var/run/mongodb/mongodb.pid La ruta al archivo pid para el proceso del servidor MongoDB
rocket_chat_mongodb_logpath /var/log/mongodb/mongod.log La ruta del archivo de registro para el servidor MongoDB
rocket_chat_mongodb_unixsocketprefix /var/run/mongodb La ruta para el prefijo del socket UNIX de MongoDB
rocket_chat_mongodb_dbpath /var/lib/mongodb La ruta para que MongoDB almacene sus bases de datos
rocket_chat_nginx_process_user nginx El usuario que se utilizará para iniciar el proceso del servidor Nginx

Variables de RHEL/CentOS 7

Establecidas en vars/RedHat_7.yml

Nombre Valor Predeterminado Descripción
rocket_chat_service_update_command systemctl daemon-reload ; systemctl restart rocketchat El comando a usar para informar al sistema de gestión de servicios cuando ha cambiado un manifiesto de servicio
rocket_chat_service_template
src rocketchat.service.j2 La plantilla fuente para desplegar el manifiesto del servicio de Rocket.Chat
dest /usr/lib/systemd/system/rocketchat.service El destino para desplegar el manifiesto del servicio de Rocket.Chat
rocket_chat_tarball_validate_remote_cert false Un valor booleano que determina si validar o no los certificados SSL para el archivo tarball remoto de Rocket.Chat

Variables de Debian

Establecidas en vars/Debian.yml

Nombre Valor Predeterminado Descripción
rocket_chat_dep_packages - git Una lista de dependencias de Rocket.Chat para instalar
- graphicsmagick
- nodejs
- npm
- make
rocket_chat_mongodb_packages - mongodb-server Una lista de paquetes del servidor MongoDB a instalar
- mongodb-shell
rocket_chat_mongodb_repl_lines replication: El valor para el conjunto de réplicas de MongoDB
replSetName: "001-rs"
rocket_chat_nginx_process_user www-data El usuario que se utilizará para iniciar el proceso del servidor Nginx

Variables de Debian 8

Establecidas en vars/Debian_8.yml

Nombre Valor Predeterminado Descripción
rocket_chat_service_update_command systemctl daemon-reload ; systemctl restart rocketchat El comando a usar para informar al sistema de gestión de servicios cuando ha cambiado un manifiesto de servicio
rocket_chat_service_template
src rocketchat.service.j2 La plantilla fuente para desplegar el manifiesto del servicio de Rocket.Chat
dest /etc/systemd/system/rocketchat.service El destino para desplegar el manifiesto del servicio de Rocket.Chat
rocket_chat_mongodb_apt_repo deb http://repo.mongodb.org/apt/debian wheezy/mongodb-org/3.0 main El repositorio APT para MongoDB

Variables de Ubuntu

Establecidas en vars/Ubuntu.yml

Nombre Valor Predeterminado Descripción
rocket_chat_dep_packages - git Una lista de dependencias de Rocket.Chat para instalar
- graphicsmagick
- nodejs
- npm
- make
rocket_chat_mongodb_packages - mongodb-server Una lista de paquetes del servidor MongoDB a instalar
- mongodb-shell
rocket_chat_mongodb_repl_lines replication: El valor para el conjunto de réplicas de MongoDB
replSetName: "001-rs"
rocket_chat_nginx_process_user www-data El usuario que se utilizará para iniciar el proceso del servidor Nginx

Variables de Ubuntu 16

Establecidas en vars/Ubuntu_15.yml

Nombre Valor Predeterminado Descripción
rocket_chat_service_update_command systemctl daemon-reload ; systemctl restart rocketchat El comando a usar para informar al sistema de gestión de servicios cuando ha cambiado un manifiesto de servicio
rocket_chat_service_template
src rocketchat.service.j2 La plantilla fuente para desplegar el manifiesto del servicio de Rocket.Chat
dest /etc/systemd/system/rocketchat.service El destino para desplegar el manifiesto del servicio de Rocket.Chat
rocket_chat_mongodb_apt_repo deb http://repo.mongodb.org/apt/debian wheezy/mongodb-org/3.0 main El repositorio APT para MongoDB

Variables de Ubuntu 14

Establecidas en vars/Ubuntu_14.yml

Nombre Valor Predeterminado Descripción
rocket_chat_service_update_command initctl reload-configuration ; service rocketchat restart El comando a usar para informar al sistema de gestión de servicios cuando ha cambiado un manifiesto de servicio
rocket_chat_service_template
src rocketchat_upstart.j2 La plantilla fuente para desplegar el manifiesto del servicio de Rocket.Chat
dest /etc/init/rocketchat.conf El destino para desplegar el manifiesto del servicio de Rocket.Chat
rocket_chat_mongodb_apt_repo deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.0 multiverse El repositorio APT para MongoDB
rocket_chat_tarball_validate_remote_cert false Un valor booleano que determina si validar o no los certificados SSL para el archivo tarball remoto de Rocket.Chat

Instalar este rol desde Ansible Galaxy

Este rol está disponible para descarga en Ansible Galaxy. Para instalar este rol y rastrearlo en tu base de código de Ansible, usa algo similar a lo siguiente en tu requirements.yml:

- src: RocketChat.Server
  version: v1.9.0
  path: roles/external/

Nota: debes especificar version como v1.9.0 si todavía estás usando Ansible 1.9.4

Instalar la versión de Ansible 2.0 de este rol

Con el lanzamiento de Ansible 2.0, este rol tiene soporte oficial con algunas mejoras de rendimiento y características adicionales (como actualizaciones automáticas). Para usar la versión de Ansible 2.0 de este rol, puedes instalarla usando la herramienta de línea de comandos ansible-galaxy utilizando un requirements.yml (ambos mencionados arriba) para especificar la versión que deseas usar.

Aquí tienes un ejemplo de un archivo requirements.yml para instalar a través de ansible-galaxy, que descargará el código de Ansible 2.0:

  - src: RocketChat.Server
    path: roles/external
Nota: master ha sido actualizado a v2.0 y ahora es el código más reciente del rol. Si deseas el más reciente, simplemente no incluyas ninguna versión y ansible-galaxy descargará la última etiqueta, o puedes incluir version: master para estar siempre al día.

Ejemplo de Playbook

Un playbook simple para ejecutar este rol en todos los sistemas chat_servers:

  - hosts: chat_servers
    roles:
     - RocketChat.Server

Un playbook para desplegar Rocket.Chat en chat_servers, pero excluyendo el despliegue de MongoDB y utilizando una instancia externa. También permite actualizaciones automáticas de Rocket.Chat (¡se requiere Ansible 2.0 para rocket_chat_automatic_upgrades! Consulta la sección Instalar desde Ansible Galaxy):

  - hosts: chat_servers

    vars:
      rocket_chat_automatic_upgrades: true
      rocket_chat_include_mongodb: false
      rocket_chat_mongodb_server: 10.19.3.24

    roles:
      - RocketChat.Server

FAQ

  • Cuando intento desplegar usando este rol, falla en la tarea Fetch the Rocket.Chat binary tarball Si el despliegue falla con un mensaje similar al siguiente, es porque el rol no ha sido actualizado para reflejar la suma de verificación SHA256 del último tarball de lanzamiento de Rocket.Chat
TASK [RocketChat.Server : Fetch the Rocket.Chat binary tarball] ****************
fatal: [chat1]: FAILED! => {"changed": false, "failed": true, "msg": "The checksum for /var/lib/rocket.chat/rocket.chat-latest.tgz did not match e6caca890c86f79595da14398dd3ab0c0d3222932d6a8a1b38c6e5082531acd2; it was 21ef5ee220671e5f514f240d1423514c5780d81d6ffba8720d19660079099925."}

En este momento, el mantenimiento de esta variable es un proceso manual. Mientras tanto, puedes simplemente establecer el valor de esta variable tú mismo; a través de host_vars, group_vars, vars en tu playbook, o con -e al ejecutar ansible-playbook, etc.

Etiquetas disponibles

Para ejecutar un conjunto específico de tareas, con la bandera --tags, las etiquetas disponibles son:

  • vars
  • build
  • mongodb
  • repo
  • nginx
  • upgrade
  • service

Gestión del servicio Rocket.Chat

Este rol desplegará un servicio llamado rocketchat. Puedes usar tu sistema nativo de gestión de servicios para iniciar/detener/recargar/reiniciar el servicio.

Pruebas con Vagrant

Para probar este rol, encontrarás un Vagrantfile y un playbook provision.yml en el directorio tests/. Esto es, como puedes haber adivinado, para ejecutar despliegues de prueba a través de Vagrant.

Si deseas probar algunos cambios, o simplemente ver cómo funciona el rol/desplegar un pequeño servidor local de Rocket.Chat, puedes cd en tests/ y ejecutar vagrant up (siempre que tengas Vagrant y VirtualBox instalados).

Si echas un vistazo al Vagrantfile, verás que hay un despliegue para cada plataforma soportada actualmente; simplemente comenta cualquier despliegue que no desees (¡no olvides su configuración de Ansible al final, tampoco!). Una vez que el despliegue haya finalizado, si deseas probar Rocket.Chat, puedes visitar http://localhost:4000 en tu navegador (el puerto 4000 varía aquí, según la plataforma que estés desplegando, consulta el valor de forwarded_port para tu plataforma).

TODO

  • Usar Let's Encrypt para SSL

Licencia

MIT

Problemas/Contribuciones

Siéntete libre de: Reportar un problema Contribuir

Instalar
ansible-galaxy install RocketChat.Server
Licencia
mit
Descargas
12.5k
Propietario
The communications platform that puts data protection first.