Kategorie: Linux

Instalacja Rocket.Chat Server w systemie Rocky Linux 8

Poniższy poradnik opisuje sposób instalacji Rocket.Chat W systemie Rocky Linux 8 Całość bardzo prosto zainstalujemy z pomocą menadżera pakietów Snap.
Zapraszam do lektury.

Na początek uruchamiamy terminal i dokonujemy aktualizacji pakietów:

sudo dnf update

Kolejny krok to instalacja niezbędnych pakietów:

sudo dnf install wget curl nano unzip yum-utils -y

Dodajemy repo dockera:

sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

Dokonujemy instalacji dockera:

sudo dnf install docker-ce docker-ce-cli containerd.io

uruchamiamy go w systemie:

sudo systemctl enable docker --now

Dodajemy dockrowi uprawnienia sudo:

sudo usermod -aG docker $(whoami)

Instalujemy Docker Compose

mkdir ~/.docker/cli-plugins -p
curl -SL https://github.com/docker/compose/releases/download/v2.10.0/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
chmod +x ~/.docker/cli-plugins/docker-compose

weryfikujemy instalację poleceniem:

docker compose version

Przechodzimy do instalacji RocketChat. Na początek tworzymy katalog:

mkdir ~/rocketchat

Przechodzimy do katalogu

cd ~/rocketchat

Tworzymy obraz kontenera RocketChat w docker-compose.

Tworzymy plik:

nano docker-compose.yml

o zawartości:

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:AmazonSESKey@email-smtp.us-west-2.amazonaws.com: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

Zapisujemy plik i uruchamiamy kontener.

docker compose up -d

Uruchamiamy ssl dla naszego czatu:

sudo dnf install epel-release
sudo dnf install certbot

I generujemy certyfikat:

sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m adres@e-mail.pl -d rocketchat.domena.pl

adres@e-mail.pl zastępujemy naszym adresem e-mail
rocketchat.domena.pl zastępujemy naszą domeną z rocket.chat

sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Tworzymy katalog letsencrypt

sudo mkdir -p /var/lib/letsencrypt

tworzymy cron który będzie nam automatycznie odnawiał certyfikat:

sudo nano /etc/cron.daily/certbot-renew

o zawartości:

#!/bin/sh
certbot renew --cert-name rocketchat.domena.pl --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"

rocketchat.domena.pl zastępujemy naszą domeną z rocket.chat

nadajmy uprawnienia:

sudo chmod +x /etc/cron.daily/certbot-renew

Dokonujemy nginx jako proxy:

tworzymy repo:

sudo nano /etc/yum.repos.d/nginx.repo

o zawartości:

[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

zapisujemy pliki dokonujemy instalacji:

sudo dnf install nginx

uruchamiamy w systemie :

sudo systemctl enable nginx --now

Tworzymy vhosta dla rocket.chat

Tworzymy piik:

sudo nano /etc/nginx/conf.d/rocket.conf

O zawartości:

# Redirect all non-encrypted to encrypted
    server {
        listen 80;
        listen [::]:80;
        server_name rocketchat.domena.pl;
        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.domena.pl/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/rocketchat.domena.pl/privkey.pem;
        ssl_trusted_certificate /etc/letsencrypt/live/rocketchat.domena.pl/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.domena.pl: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;
        }
    }

rocketchat.domena.pl zastępujemy naszą domeną z rocket.chat

edytujemy plik:

sudo nano /etc/nginx/nginx.conf

I dopisujemy:

server_names_hash_bucket_size  64;

Przeładowujemy nginx

sudo systemctl restart nginx

Dostęp po rocket.chat teraz powinien działać pod adresem: rocketchat.domena.pl należy przekierować ją rekordem A na IP naszego serwera.

Linux

Udostępnij
Opublikowane przez
Linux

Najnowsze wpisy

KeePass2 2.52 w Ubuntu 22.04

Poniższy poradnik opisuje sposób instalacji KeePass w systemie Ubuntu. Całość wykonamy za pomocą kilku poleceń…

2 lata temu

Instalacja Master PDF editor w Ubuntu 22.04

Master PDF Editor to wszechstronny program PDF, który zawiera wiele funkcji. Oprócz tworzenia i edycji…

2 lata temu

iotop – monitorowanie pamięci

Iotop jest prostym narzędziem dla systemów Uniksowych umożliwiającym monitorowanie użycia dowolnego nośnika pamięci flash/hdd/ssd w…

2 lata temu

Uruchomienie wiele poleceń w jednym zadaniu Cron

Możesz oddzielić dwa lub więcej poleceń za pomocą średników (;), Średnik (;): służy do oddzielania…

2 lata temu

Zmiana danych exif zdjęcia w terminalu Linux

Poniższy poradnik opisuje w jaki sposób za pomocą konsoli możemy dokonać edycji danych zdjęcia exif.…

2 lata temu

Adobe Acrobat Reader W Ubuntu 22.04

Poniższy poradnik opisuje instalację Adobe Acrobat Reader w Ubuntu 22.04. Całość wykonamy w kilka minut…

2 lata temu