Come installare Rocket.Chat Server su Rocky Linux 8
Su questa pagina
- Prerequisiti
- Passaggio 1: configurazione del firewall
- Passaggio 2 - Installa Docker e Docker Compose
- Passaggio 3 - Installa Docker Compose
- Passaggio 4 - Installa RocketChat
- Passaggio 5 - Installa SSL
- Passaggio 6 - Installa e configura Nginx
- Passaggio 7 - Accedi e configura RocketChat
- Configura impostazioni SMTP
- Accedi a Rocket.Chat Cloud
- Installa e usa le app Rocket.Chat Cloud
Rocket.Chat è un server di chat open source sviluppato in JavaScript utilizzando il framework Meteor.js. Ti consente di comunicare in modo sicuro in tempo reale su più dispositivi. Consente alle aziende e alle organizzazioni di creare il proprio server di chat per le comunicazioni interne con i propri dipendenti. Si integra con canali social, chatbot, social media e app per la produttività. Consente di monitorare i flussi di lavoro DevOps con integrazioni tramite Bitbucket, Jira, GitLab, Confluence, Bamboo, ecc. È disponibile su più piattaforme desktop e mobili. Sono disponibili due edizioni di Rocket.Chat, una è un'edizione comunitaria gratuita e l'altra è un'edizione aziendale.
In questo tutorial, installeremo l'edizione Community gratuita del server Rocket.Chat su una macchina Rocky Linux.
Prerequisiti
-
A Server running Rocky Linux with a minimum of 1GB of RAM for a server for up to 200 users, and up to 50 concurrently active users. If you want to accommodate more than 200 users, you should opt for a server with a minimum of 2GB of RAM.
-
A domain name pointing to the server. For our tutorial, we will use the
rocketchat.example.com
domain. -
A non-sudo user with root privileges.
-
SELinux is disabled.
-
Everything is updated.
$ sudo dnf update
-
Install basic utility packages. Some of them may already be installed.
$ sudo dnf install wget curl nano unzip yum-utils -y
Passaggio 1: configurare il firewall
Il primo passo è configurare il firewall. Rocky Linux utilizza Firewalld Firewall. Controlla lo stato dei firewall.
$ sudo firewall-cmd --state running
Il firewall funziona con zone diverse e la zona pubblica è quella predefinita che utilizzeremo. Elenca tutti i servizi e le porte attive sul firewall.
$ sudo firewall-cmd --permanent --list-services
Dovrebbe mostrare il seguente output.
cockpit dhcpv6-client ssh
Moodle ha bisogno delle porte HTTP e HTTPS per funzionare. Aprili.
$ sudo firewall-cmd --add-service=http --permanent $ sudo firewall-cmd --add-service=https --permanent
Ricarica il firewall per applicare le modifiche.
$ sudo firewall-cmd --reload
Passaggio 2: installa Docker e Docker Compose
Rocky Linux viene fornito con una versione precedente di Docker. Per installare l'ultima versione, per prima cosa installa il repository Docker ufficiale.
$ sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
Installa l'ultima versione di Docker.
$ sudo dnf install docker-ce docker-ce-cli containerd.io
Abilita ed esegui il demone Docker.
$ sudo systemctl enable docker --now
Verificare che sia in esecuzione.
docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2022-08-20 22:35:19 UTC; 1s ago Docs: https://docs.docker.com Main PID: 82575 (dockerd) Tasks: 7 Memory: 31.1M CGroup: /system.slice/docker.service ??82575 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock ...
Per impostazione predefinita, Docker richiede i privilegi di root. Se vuoi evitare di usare
sudo
ogni volta che esegui il comandodocker
, aggiungi il tuo nome utente alladocker
gruppo.$ sudo usermod -aG docker $(whoami)
Sarà necessario disconnettersi dal server e riconnettersi come lo stesso utente per abilitare questa modifica o utilizzare il seguente comando.
$ su - ${USER}
Verifica che il tuo utente sia stato aggiunto al gruppo Docker.
$ groups navjot wheel docker
Passaggio 3: installa Docker Compose
Docker Compose è disponibile come plug-in. Controlla l'ultima versione di Docker compose disponibile dalla pagina delle versioni di Github. Al momento della stesura di questo tutorial, l'ultima versione disponibile è la 2.10.0.
Crea la directory per i plug-in Docker.
$ mkdir ~/.docker/cli-plugins -p
Scarica il plug-in di composizione Docker nella directory.
$ curl -SL https://github.com/docker/compose/releases/download/v2.10.0/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
Impostare le autorizzazioni per rendere eseguibile il plug-in.
$ chmod +x ~/.docker/cli-plugins/docker-compose
Verificare l'installazione.
$ docker compose version
Riceverai il seguente output.
Docker Compose version v2.10.0
Passaggio 4: installa RocketChat
Crea una directory per archiviare i file Docker.
$ mkdir ~/rocketchat
Passa alla rubrica.
$ cd ~/rocketchat
Crea e apri il file di composizione Rocketchat Docker per la modifica.
$ nano docker-compose.yml
Incolla il seguente codice al suo interno.
volumes: mongodb_data: rocketchat-uploads: services: rocketchat: image: registry.rocket.chat/rocketchat/rocket.chat:5.0.4 restart: on-failure volumes: - rocketchat-uploads:/app/uploads environment: MONGO_URL: mongodb://mongodb:27017/rocketchat?replicaSet=rs0 MONGO_OPLOG_URL: mongodb://mongodb:27017/local?replicaSet=rs0 ROOT_URL: https://rocketchat.example.com PORT: 3000 DEPLOY_METHOD: docker Accounts_UseDNSDomainCheck: 'false' MAIL_URL: 'smtps://AmazonSESuser::587' depends_on: - mongodb expose: - 3000 ports: - 3000:3000 healthcheck: test: > /usr/local/bin/node -e ' const http = require("http"); const options = { host: "localhost", port: 3000, path: "/api/info", timeout: 2000 }; const healthCheck = http.request(options, (res) => { console.log(`HEALTHCHECK STATUS: $${res.statusCode}`); if (res.statusCode == 200) { process.exit(0); } else { process.exit(1); } }); healthCheck.on("error", function (err) { console.error("ERROR"); process.exit(1); }); healthCheck.end();' interval: 10s timeout: 5s retries: 3 start_period: 60s mongodb: image: bitnami/mongodb:4.4 restart: on-failure volumes: - mongodb_data:/bitnami/mongodb environment: MONGODB_REPLICA_SET_MODE: primary MONGODB_REPLICA_SET_NAME: rs0 MONGODB_PORT_NUMBER: 27017 MONGODB_INITIAL_PRIMARY_HOST: mongodb MONGODB_INITIAL_PRIMARY_PORT_NUMBER: 27017 MONGODB_ADVERTISED_HOSTNAME: mongodb MONGODB_ENABLE_JOURNAL: 'true' ALLOW_EMPTY_PASSWORD: 'yes' healthcheck: test: echo 'db.runCommand("ping").ok' | mongo mongodb:27017/test --quiet interval: 10s timeout: 5s retries: 3 start_period: 60s
Salva il file premendo Ctrl + X e immettendo Y quando richiesto.
Avvia il contenitore Docker.
$ docker compose up -d
Controlla lo stato dei contenitori per assicurarti che funzionino correttamente.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 59cd748e684f registry.rocket.chat/rocketchat/rocket.chat:5.0.4 "docker-entrypoint.s…" 2 minutes ago Up 2 minutes (healthy) 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp rocketchat-rocketchat-1 1fdabedf8681 bitnami/mongodb:4.4 "/opt/bitnami/script…" 2 minutes ago Up 2 minutes (healthy) 27017/tcp rocketchat-mongodb-1
È inoltre possibile utilizzare il seguente comando per verificare lo stato.
$ docker compose ps NAME COMMAND SERVICE STATUS PORTS rocketchat-mongodb-1 "/opt/bitnami/script…" mongodb running (healthy) 27017/tcp rocketchat-rocketchat-1 "docker-entrypoint.s…" rocketchat running (healthy) 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp
A questo punto, puoi verificare la tua installazione lanciando l'URL
http://rocketchat.example.com:3000
ohttp://
nel browser. Il passaggio successivo consiste nel configurare SSL e mettere l'installazione dietro un server proxy.:3000 Passaggio 5: installa SSL
Per installare un certificato SSL utilizzando Lets Encrypt, è necessario installare lo strumento Certbot.
Innanzitutto, devi scaricare e installare il repository EPEL.
$ sudo dnf install epel-release
Eseguire i seguenti comandi per installare Certbot.
$ sudo dnf install certbot
Genera il certificato SSL.
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m -d rocketchat.example.com
Il comando precedente scaricherà un certificato nella directory
/etc/letsencrypt/live/rocketchat.example.com
sul tuo server.Genera un certificato di gruppo Diffie-Hellman.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Crea una directory radice Web di verifica per il rinnovo automatico di Lets Encrypt.
$ sudo mkdir -p /var/lib/letsencrypt
Crea un Cron Job per rinnovare l'SSL. Verrà eseguito ogni giorno per controllare il certificato e rinnovarlo se necessario. Per questo, per prima cosa, crea il file
/etc/cron.daily/certbot-renew
e aprilo per modificarlo.$ sudo nano /etc/cron.daily/certbot-renew
Incolla il seguente codice.
#!/bin/sh certbot renew --cert-name rocketchat.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
Salva il file premendo Ctrl + X e immettendo Y quando richiesto.
Modificare le autorizzazioni sul file dell'attività per renderlo eseguibile.
$ sudo chmod +x /etc/cron.daily/certbot-renew
Passaggio 6: installa e configura Nginx
Installeremo l'ultima versione di Nginx. Crea e apri il file
/etc/yum.repos.d/nginx.repo
per la modifica.$ sudo nano /etc/yum.repos.d/nginx.repo
Incolla le seguenti righe al suo interno.
[nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true
Salva il file premendo Ctrl + X e immettendo Y quando richiesto.
Installa Nginx.
$ sudo dnf install nginx
Verificare l'installazione.
$ nginx -v nginx version: nginx/1.22.0
Abilita e avvia il servizio Nginx.
$ sudo systemctl enable nginx --now
Crea e apri il file
/etc/nginx/conf.d/rocket.conf
per la modifica.$ sudo nano /etc/nginx/conf.d/rocket.conf
Incolla il seguente codice al suo interno.
# Redirect all non-encrypted to encrypted server { listen 80; listen [::]:80; server_name rocketchat.example.com; return 301 https://$host$request_uri; } # HTTPS Server server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name rocketchat.example.com; access_log /var/log/nginx/rocketchat_access.log main; error_log /var/log/nginx/rocketchat_error.log; ssl_certificate /etc/letsencrypt/live/rocketchat.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/rocketchat.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/rocketchat.example.com/chain.pem; ssl_dhparam /etc/ssl/certs/dhparam.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384'; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:20m; ssl_session_tickets off; ssl_session_timeout 180m; ssl_stapling on; ssl_stapling_verify on; location / { proxy_pass http://rocketchat.example.com: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-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Nginx-Proxy true; proxy_redirect off; } }
Una volta terminato, salva il file premendo Ctrl + X e inserendo Y quando richiesto. La configurazione di cui sopra consente a Nginx di agire come server proxy e di collegarsi alla porta 3000 su localhost.
Apri il file
/etc/nginx/nginx.conf
per la modifica.$ sudo nano /etc/nginx/nginx.conf
Aggiungere la riga seguente prima della riga
include /etc/nginx/conf.d/*.conf;
.server_names_hash_bucket_size 64;
Salva il file premendo Ctrl + X e immettendo Y quando richiesto.
Verificare la sintassi del file di configurazione di 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
Riavvia il servizio Nginx per abilitare la nuova configurazione.
$ sudo systemctl restart nginx
Passaggio 7: accedi e configura RocketChat
Avvia l'URL
https://rocketchat.example.com
nel tuo browser e verrai accolto con la seguente schermata di configurazione.Inserisci i dettagli dell'amministratore e fai clic sul pulsante Avanti per procedere. Successivamente, ti verrà chiesto di inserire i dettagli dell'organizzazione.
Inserisci i dettagli della tua organizzazione e fai clic sul pulsante Avanti per procedere. Ti verrà chiesto di registrare il tuo server di chat con Rocket Cloud se desideri accedere alle app del marketplace e ad altre funzionalità.
Compila i dettagli e clicca su registrati se sei interessato. Altrimenti, fare clic sul collegamento Continua come autonomo per procedere. Se ti sei registrato con Cloud, ti verrà inviata una mail di verifica.
Fare clic sul collegamento nell'e-mail di verifica per verificare la registrazione.
Dopo la verifica, verrai indirizzato alla dashboard di Rocket Chat.
Configura le impostazioni SMTP
Visita la pagina di amministrazione facendo clic sull'immagine del tuo profilo facendo clic in alto a sinistra nella pagina e facendo clic sul collegamento Amministrazione.
Fare clic sul collegamento Impostazioni dalla barra laterale sinistra.
Nella pagina delle impostazioni, digita Email nella casella di ricerca per visualizzare il pulsante Email.
Fare clic sul pulsante Apri nella sezione Email per aprire la pagina delle impostazioni email. Nella pagina successiva, espandi la sezione SMTP della pagina.
Compila i dettagli SMTP e fai clic sul pulsante Salva modifiche in alto a destra per abilitare il pulsante Invia una mail di prova al mio utente. Ti verrà richiesta la password per salvare le impostazioni SMTP.
Per il nostro tutorial, stiamo utilizzando Amazon SES come mailer con 587 come porta. Deseleziona il pulsante sopra il pulsante Pool. La funzione dei pulsanti consiste nell'ignorare TLS ma non è etichettata correttamente.
Avresti dovuto ricevere una mail di prova simile se tutto fosse stato impostato correttamente.
Accedi a Rocket.Chat Cloud
Per utilizzare le funzionalità di Rocket.Chat Cloud, devi effettuare l'accesso. Visita il menu Amministrazione >> Servizi di connettività e verrai accolto con la seguente pagina.
Fai clic sul pulsante Accedi a Rocket.Chat Cloud per avviare il processo. Verrai indirizzato alla pagina di accesso dove ti verrà chiesto di inserire l'ID e-mail con cui ti sei registrato durante il processo di configurazione.
Fare clic sul collegamento Invia login per procedere. Riceverai una mail con il link di accesso.
Fare clic sul collegamento di accesso per completare il processo. Ti verrà chiesto di autorizzare il tuo server ad accedere con l'account Cloud.
Fare clic sul pulsante Autorizza per procedere e tornare alla pagina Servizi di connettività. Ora sei connesso al cloud.
Installa e usa le app Rocket.Chat Cloud
Ora puoi installare le app cloud tramite la pagina Amministrazione >> App. Stiamo installando l'app GIPHY sul nostro server. Fare clic sul pulsante Ottieni per procedere con l'installazione.
Per configurare l'app, fai clic sul nome dell'app dalla pagina App e otterrai la pagina dei dettagli per l'applicazione. Da lì, puoi configurare le impostazioni e iniziare a utilizzare l'app.
Completare le impostazioni e fare clic sul pulsante Salva modifiche per completare la configurazione dell'applicazione.
Torna alla dashboard di Rocket Chat e visita la bacheca dei messaggi. Per utilizzare l'app GIPHY, digita
/giphy
e vedrai molte GIF relative alla tua query.Premi il pulsante Invio per inviare la GIF alla schermata del messaggio.
Passaggio 8: backup e ripristino di Rocket Chat
Il backup di Rocket Chat richiede il backup del database MongoDB.
Arrestare il contenitore Docker.
$ docker compose down
Eseguire il comando seguente per elencare l'etichetta dell'immagine docker di MongoDB.
$ docker ps -a
Per il nostro tutorial, l'etichetta dell'immagine MongoDB è
rocketchat_mongo_1
. Eseguire il seguente comando per esportare il database in un file.$ docker exec rocketchat_mongo_1 sh -c 'mongodump --archive' > db.dump
Per ripristinare il database, utilizzare il seguente comando.
$ docker exec -i <database_name> sh -c 'mongorestore --archive' < db.dump
Passaggio 9: aggiorna la chat Rocket
L'aggiornamento di Rocket Chat richiede di seguire alcuni comandi. I dati non vengono influenzati dal processo di aggiornamento. Estrai l'ultima versione dell'immagine di Rocket Chat.
$ docker pull registry.rocket.chat/rocketchat/rocket.chat:latest
Arresta il bucket esistente.
$ docker compose stop rocketchat
Rimuovere il contenitore esistente.
$ docker compose rm rocketchat
Avvia Rocket Chat creando un nuovo contenitore.
$ docker compose up -d rocketchat
Conclusione
Questo conclude il nostro tutorial sull'installazione del server Rocket.Chat su una macchina Rocky Linux 8. Se hai domande, pubblicale nei commenti qui sotto.