Rocket.Chat és un sistema de xat de codi obert que facilita la comunicació dels equips, substituint els correus electrònics per canals, de manera similar a Slack.
Pots provar el servei registrant-te a https://open.rocket.chat.
Crear el VPS
Farem la instal·lació en un servidor d'1 vCore, amb 2GB de RAM i 10GB de disc dur. Farem servir la imatge de Docker amb Ubuntu 18.04. Com sempre, els recursos variaran segons el nombre d'usuaris que hagin de fer servir el sistema.
Cal obrir els ports següents a la configuració del tallafoc:
- 22/TCP: per a la connexió a través de SSH
- 80/TCP (opcional): en principi la connexió serà per HTTPS, però es pot obrir per motius de desenvolupament i proves.
- 443/TCP: per oferir el servei a través de HTTPS
Abans de res, hem d'instal·lar: docker-compose: apt install docker-compose
Instal·lació
Com hem dit, farem servir Docker per desplegar Rocket, creant els contenidors següents:
- Rocket.Chat
- MongoDB: allotjarà la base de dades
No desplegarem el servidor web Nginx ni Let's Encrypt en contenidors.
Nginx i Let's Encrypt
Per instal·lar Nginx al nostre servidor: apt install nginx
Hem de configurar un certificat SSL per permetre l'accés per HTTPS. El més recomanable és fer servir un certificat verificat; en el nostre cas farem servir el de Let's Encrypt.
Instal·lem certbot:
add-apt-repository ppa:certbot/certbot
apt-get update
apt-get install certbot python3-certbot-nginxModifiquem el fitxer de configuració de nginx vim /etc/nginx/sites-available/default:
# Servidor HTTPS
server {
listen 443 ssl;
server_name ejemplo.dominio.com;
error_log /var/log/nginx/rocketchat_error.log;
location / {
proxy_pass http://127.0.0.1:3000/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forward-Proto http;
proxy_set_header X-Nginx-Proxy true;
proxy_redirect off;
}
}Reiniciem nginx: service nginx configtest && service nginx restart i després executem certbot --nginx:
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: ejemplo.dominio.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel):
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for ejemplo.dominio.com
Using default address 80 for authentication.
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/default
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
No matching insecure server blocks listening on port 80 found.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled
ejemplo.dominio.com
You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=DOMINIO
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/ejemplo.dominio.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/ejemplo.dominio.com/privkey.pem
Your cert will expire on 2020-07-12. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the "certonly" option. To non-interactively renew *all* of
your certificates, run "certbot renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le Docker
Primer crearem els directoris necessaris per als volums de Docker:
mkdir -p /var/www/rocket.chat/data/runtime/db
mkdir -p /var/www/rocket.chat/data/dumpCreem el fitxer docker-compose vim /var/www/rocket.chat/docker-compose.yml i hi afegim el codi següent:
{YAML}
version: '2'
services:
rocketchat:
image: rocket.chat:latest
command: bash -c 'for i in `seq 1 30`; do node main.js && s=$$? && break || s=$$?; echo "Tried $$i times. Waiting 5 secs..."; sleep 5; done; (exit $$s)'
restart: unless-stopped
volumes:
- ./uploads:/app/uploads
environment:
- PORT=3000
- ROOT_URL=DOMINIO
- MONGO_URL=mongodb://mongo:27017/rocketchat
- MONGO_OPLOG_URL=mongodb://mongo:27017/local
- Accounts_UseDNSDomainCheck=false
depends_on:
- mongo
ports:
- 3000:3000
mongo:
image: mongo:4.0e
restart: unless-stopped
volumes:
- ./data/db:/data/db
- ./data/dump:/dump
command: mongod --smallfiles --oplogSize 128 --replSet rs0 --storageEngine=mmapv1
mongo-init-replica:
image: mongo
command: 'bash -c "for i in `seq 1 30`; do mongo mongo/rocketchat --eval \"rs.initiate({ _id: ''rs0'', members: [ { _id: 0, host: ''localhost:27017'' } ]})\" && s=$$? && break || s=$$?; echo \"Tried $$i times. Waiting 5 secs...\"; sleep 5; done; (exit $$s)"'
depends_on:
- mongoI ja podem accedir al nostre Rocket.chat a https://ejemplo.dominio.com (només funcionarà la connexió per HTTPS)
Per acabar, hem de configurar nginx perquè s'executi a l'inici, de manera que executem: systemctl enable nginx
Nota
Pot ser que al principi, mentre s'està iniciant, aparegui un error 502: Bad Gateway, que se soluciona esperant que es carregui el servei, en un parell de minuts com a màxim.
Configuració
Quan hi accedim, la primera pantalla que veurem serà la següent:
En aquesta pantalla se'ns demanen les dades de l'administrador del sistema.
Després se'ns demanaran certes dades per mostrar i informació sobre el servidor:
Ús
Si estàs familiaritzat amb altres eines similars com Slack, et resultarà molt senzill fer-la servir.
Les converses s'agrupen per canals. Al principi només n'hi haurà un de general al qual accediran tots els usuaris que es registrin. Pots crear els grups que vulguis, tant públics com privats.
L'administrador del lloc també disposa de diversos informes als quals pot accedir des de la pestanya corresponent, i pot instal·lar extensions (com ara la de Jitsi, per fer videoconferències) o gestionar els usuaris.
Per obtenir més informació sobre les possibilitats d'aquesta eina, es recomana visitar-ne la documentació.
CC-BY - Aquest article ha estat redactat per David Población, col·laborador habitual de Clouding.