Поиск по сайту:

Как установить сервер Rocket.Chat на Rocky Linux 8


На этой странице

  1. Предпосылки
  2. Шаг 1. Настройка брандмауэра
  3. Шаг 2. Установите Docker и Docker Compose
  4. Шаг 3. Установите Docker Compose
  5. Шаг 4. Установите RocketChat
  6. Шаг 5. Установите SSL
  7. Шаг 6. Установка и настройка Nginx
  8. Шаг 7. Доступ и настройка RocketChat
    1. Настройка параметров SMTP
    2. Войти в Rocket.Chat Cloud
    3. Установите и используйте облачные приложения Rocket.Chat

    Rocket.Chat — это чат-сервер с открытым исходным кодом, разработанный на JavaScript с использованием фреймворка Meteor.js. Это позволяет вам безопасно общаться в режиме реального времени на нескольких устройствах. Это позволяет компаниям и организациям создавать свой чат-сервер для внутреннего общения со своими сотрудниками. Он интегрируется с социальными каналами, чат-ботами, социальными сетями и приложениями для повышения производительности. Он позволяет отслеживать рабочие процессы DevOps с помощью интеграции через Bitbucket, Jira, GitLab, Confluence, Bamboo и т. д. Он доступен на нескольких настольных и мобильных платформах. Доступны две версии Rocket.Chat: одна — бесплатная для сообщества, а другая — для предприятий.

    В этом руководстве мы установим бесплатную версию Community Edition сервера Rocket.Chat на компьютер Rocky Linux.

    Предпосылки

    • 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
      

    Шаг 1. Настройте брандмауэр

    Первым шагом является настройка брандмауэра. Rocky Linux использует Firewalld Firewall. Проверьте состояние брандмауэров.

    $ sudo firewall-cmd --state
    running
    

    Брандмауэр работает с разными зонами, и мы будем использовать публичную зону по умолчанию. Перечислите все службы и порты, активные на брандмауэре.

    $ sudo firewall-cmd --permanent --list-services
    

    Он должен показать следующий вывод.

    cockpit dhcpv6-client ssh
    

    Для работы Moodle необходимы порты HTTP и HTTPS. Откройте их.

    $ sudo firewall-cmd --add-service=http --permanent
    $ sudo firewall-cmd --add-service=https --permanent
    

    Перезагрузите брандмауэр, чтобы применить изменения.

    $ sudo firewall-cmd --reload
    

    Шаг 2. Установите Docker и Docker Compose

    Rocky Linux поставляется со старой версией Docker. Чтобы установить последнюю версию, сначала установите официальный репозиторий Docker.

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

    Установите последнюю версию Docker.

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

    Включите и запустите демон Docker.

    $ sudo systemctl enable docker --now
    

    Убедитесь, что он запущен.

     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
    ...
    

    По умолчанию Docker требует привилегий root. Если вы хотите избежать использования sudo при каждом запуске команды docker, добавьте свое имя пользователя в docker группа.

    $ sudo usermod -aG docker $(whoami)
    

    Вам нужно будет выйти из сервера и снова войти в систему под тем же пользователем, чтобы включить это изменение, или использовать следующую команду.

    $ su - ${USER}
    

    Подтвердите, что ваш пользователь добавлен в группу Docker.

    $ groups
    navjot wheel docker
    

    Шаг 3 — Установите Docker Compose

    Docker Compose доступен в виде плагина. Проверьте последнюю версию Docker compose, доступную на странице выпусков Github. На момент написания этого руководства последняя доступная версия — 2.10.0.

    Создайте каталог для плагинов Docker.

    $ mkdir ~/.docker/cli-plugins -p
    

    Загрузите подключаемый модуль Docker compose в каталог.

    $ 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
    

    Проверьте установку.

    $ docker compose version
    

    Вы получите следующий вывод.

    Docker Compose version v2.10.0
    

    Шаг 4 - Установите RocketChat

    Создайте каталог для хранения файлов Docker.

    $ mkdir ~/rocketchat
    

    Перейдите в каталог.

    $ cd ~/rocketchat
    

    Создайте и откройте файл компоновки Rocketchat Docker для редактирования.

    $ nano docker-compose.yml
    

    Вставьте в него следующий код.

    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
    

    Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.

    Запустите контейнер Docker.

    $ docker compose up -d
    

    Проверьте состояние контейнеров, чтобы убедиться, что они работают правильно.

    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
    

    Вы также можете использовать следующую команду для проверки состояния.

    $ 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
    

    На этом этапе вы можете проверить свою установку, запустив URL-адрес http://rocketchat.example.com:3000 или http://:3000. в браузере. Следующим шагом является настройка SSL и размещение установки за прокси-сервером.

    Шаг 5 — Установите SSL

    Чтобы установить SSL-сертификат с помощью Lets Encrypt, нам нужно установить инструмент Certbot.

    Во-первых, вам нужно скачать и установить репозиторий EPEL.

    $ sudo dnf install epel-release
    

    Выполните следующие команды, чтобы установить Certbot.

    $ sudo dnf install certbot
    

    Создайте SSL-сертификат.

    $ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m  -d rocketchat.example.com
    

    Приведенная выше команда загрузит сертификат в каталог /etc/letsencrypt/live/rocketchat.example.com на вашем сервере.

    Создайте групповой сертификат Диффи-Хеллмана.

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

    Создайте корневую веб-директорию для автоматического обновления Lets Encrypt.

    $ sudo mkdir -p /var/lib/letsencrypt
    

    Создайте задание Cron для обновления SSL. Он будет запускаться каждый день, чтобы проверять сертификат и при необходимости обновлять его. Для этого сначала создайте файл /etc/cron.daily/certbot-renew и откройте его для редактирования.

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

    Вставьте следующий код.

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

    Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.

    Измените права доступа к файлу задачи, чтобы сделать его исполняемым.

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

    Шаг 6 — Установите и настройте Nginx

    Мы будем устанавливать последнюю версию Nginx. Создайте и откройте файл /etc/yum.repos.d/nginx.repo для редактирования.

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

    Вставьте в него следующие строки.

    [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
    

    Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.

    Установите Нгинкс.

    $ sudo dnf install nginx
    

    Проверьте установку.

    $ nginx -v
    nginx version: nginx/1.22.0
    

    Включите и запустите службу Nginx.

    $ sudo systemctl enable nginx --now
    

    Создайте и откройте файл /etc/nginx/conf.d/rocket.conf для редактирования.

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

    Вставьте в него следующий код.

    # 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;
            }
        }
    

    После завершения сохраните файл, нажав Ctrl + X и введя Y при появлении запроса. Приведенная выше конфигурация позволяет Nginx действовать как прокси-сервер и привязываться к порту 3000 на локальном хосте.

    Откройте файл /etc/nginx/nginx.conf для редактирования.

    $ sudo nano /etc/nginx/nginx.conf
    

    Добавьте следующую строку перед строкой include /etc/nginx/conf.d/*.conf;.

    server_names_hash_bucket_size  64;
    

    Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.

    Проверьте синтаксис файла конфигурации 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
    

    Перезапустите службу Nginx, чтобы активировать новую конфигурацию.

    $ sudo systemctl restart nginx
    

    Шаг 7. Получите доступ и настройте RocketChat

    Запустите URL-адрес https://rocketchat.example.com в своем браузере, и вы увидите следующий экран настройки.

    Заполните данные администратора и нажмите кнопку «Далее», чтобы продолжить. Далее вам будет предложено заполнить данные организации.

    Заполните данные своей организации и нажмите кнопку «Далее», чтобы продолжить. Вам будет предложено зарегистрировать сервер чата в Rocket Cloud, если вы хотите получить доступ к приложениям Marketplace и другим функциям.

    Заполните данные и нажмите «Зарегистрироваться», если вы заинтересованы. В противном случае нажмите Продолжить как отдельную ссылку, чтобы продолжить. Если вы зарегистрировались в Cloud, вам будет отправлено письмо с подтверждением.

    Нажмите на ссылку в письме с подтверждением, чтобы подтвердить регистрацию.

    После проверки вы попадете на панель инструментов Rocket Chat.

    Настройка параметров SMTP

    Посетите страницу администрирования, щелкнув изображение своего профиля, щелкнув в левом верхнем углу страницы и нажав ссылку «Администрирование».

    Щелкните ссылку «Настройки» на левой боковой панели.

    На странице настроек введите «Электронная почта» в поле поиска, чтобы появилась кнопка «Электронная почта».

    Нажмите кнопку «Открыть» в разделе «Электронная почта», чтобы открыть страницу настроек электронной почты. На следующей странице разверните раздел SMTP страницы.

    Заполните данные SMTP и нажмите кнопку «Сохранить изменения» в правом верхнем углу, чтобы активировать кнопку «Отправить тестовое письмо моему пользователю». Вам будет предложено ввести пароль для сохранения настроек SMTP.

    В нашем руководстве мы используем Amazon SES в качестве почтовой программы с портом 587. Снимите флажок над кнопкой «Бассейн». Функция кнопок заключается в игнорировании TLS, но она не помечена правильно.

    Вы должны были получить аналогичное тестовое письмо, если все было настроено правильно.

    Войти в Rocket.Chat Cloud

    Чтобы использовать функции Rocket.Chat Cloud, вам необходимо войти в систему. Откройте меню «Администрирование» >> «Службы подключения», и вы увидите следующую страницу.

    Нажмите кнопку «Войти в Rocket.Chat Cloud», чтобы начать процесс. Вы попадете на страницу входа, где вам будет предложено ввести идентификатор электронной почты, с которым вы зарегистрировались в процессе установки.

    Щелкните ссылку Отправить логин, чтобы продолжить. Вы получите письмо со ссылкой для входа.

    Нажмите на ссылку входа, чтобы завершить процесс. Вам будет предложено авторизовать ваш сервер для входа в систему с помощью облачной учетной записи.

    Нажмите кнопку «Авторизовать», чтобы вернуться на страницу «Службы подключения». Вы вошли в облако сейчас.

    Установите и используйте облачные приложения Rocket.Chat

    Теперь вы можете устанавливать облачные приложения через страницу Администрирование >> Приложения. Мы устанавливаем приложение GIPHY на наш сервер. Нажмите кнопку Получить, чтобы продолжить установку.

    Чтобы настроить приложение, щелкните имя приложения на странице приложений, и вы получите страницу сведений о приложении. Оттуда вы можете настроить параметры и начать использовать приложение.

    Заполните настройки и нажмите кнопку Сохранить изменения, чтобы завершить настройку приложения.

    Вернитесь на панель инструментов Rocket Chat и посетите доску объявлений. Чтобы использовать приложение GIPHY, введите /giphy , и вы увидите множество GIF-файлов, связанных с вашим запросом.

    Нажмите кнопку Enter, чтобы отправить GIF на экран сообщения.

    Шаг 8 - Резервное копирование и восстановление Rocket Chat

    Резервное копирование Rocket Chat требует резервного копирования базы данных MongoDB.

    Остановите контейнер Docker.

    $ docker compose down
    

    Выполните следующую команду, чтобы просмотреть метку образа докера MongoDB.

    $ docker ps -a
    

    В нашем руководстве метка образа MongoDB — rocketchat_mongo_1. Выполните следующую команду, чтобы экспортировать базу данных в файл.

    $ docker exec rocketchat_mongo_1 sh -c 'mongodump --archive' > db.dump
    

    Чтобы восстановить базу данных, используйте следующую команду.

    $ docker exec -i <database_name> sh -c 'mongorestore --archive' < db.dump
    

    Шаг 9 - Обновите Rocket Chat

    Обновление Rocket Chat требует выполнения некоторых команд. Данные не затрагиваются в процессе обновления. Загрузите последнюю версию образа Rocket Chat.

    $ docker pull registry.rocket.chat/rocketchat/rocket.chat:latest
    

    Остановите существующее ведро.

    $ docker compose stop rocketchat
    

    Удалите существующий контейнер.

    $ docker compose rm rocketchat
    

    Запустите Rocket Chat, создав новый контейнер.

    $ docker compose up -d rocketchat
    

    Заключение

    На этом мы завершаем наше руководство по установке сервера Rocket.Chat на компьютер Rocky Linux 8. Если у вас есть какие-либо вопросы, задайте их в комментариях ниже.