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

Как установить, настроить и развернуть Rocket.Chat в Ubuntu 14.04


Введение

Rocket.Chat — это приложение для обмена сообщениями с открытым исходным кодом, созданное с помощью Meteor. Он поддерживает видеоконференции, обмен файлами, голосовые сообщения, имеет полнофункциональный API и многое другое. Rocket.Chat отлично подходит для тех, кто предпочитает иметь полный контроль над своим общением.

В этом руководстве мы установим и настроим Rocket.Chat на новый сервер Ubuntu, а также настроим обратный прокси-сервер через Nginx, чтобы повысить безопасность и упростить доступ к Rocket.Chat. Когда мы закончим, у вас будет функциональный экземпляр Rocket.Chat, доступный практически из любого места.

Предпосылки

Чтобы следовать этому руководству, вам понадобятся:

  • Один сервер Ubuntu 14.04 с рекомендуемым объемом оперативной памяти не менее 1 ГБ
  • Пользователь без полномочий root с привилегиями sudo (начальная настройка сервера с Ubuntu 14.04 объясняет, как это настроить).
  • Полностью зарегистрированный домен. Вы можете приобрести его на Freenom.
  • Убедитесь, что имя вашего домена указывает на ваш сервер. Ознакомьтесь с этим руководством, если вам нужна помощь.
  • Сертификат SSL. https://linux-console.net/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-14-04) или купить у другого поставщика.

Шаг 1 — Установка зависимостей

В этом разделе мы установим некоторые зависимости Rocket.Chat, такие как MongoDB и NodeJS.

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

  1. sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10

Затем нам нужно установить репо для использования.

  1. echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list

Теперь обновите списки пакетов.

  1. sudo apt-get update

Теперь, когда это сделано, мы можем продолжить и установить npm, mongodb-org, curl и graphicsmagick, которые все зависимости от Rocket.Chat:

  1. sudo apt-get install npm mongodb-org curl graphicsmagick

Нам нужно установить пакет с помощью NPM, чтобы мы могли изменить версию узла:

  1. sudo npm install -g n

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

  1. sudo n 0.10.40

Далее мы установим сам Rocket.Chat и немного настроим его.

Шаг 2 — Установка Rocket.Chat

Для начала загрузите последнюю стабильную версию Rocket.Chat с помощью curl.

  1. curl -L https://rocket.chat/releases/latest/download -o rocket.chat.tgz

Разверните только что загруженный архив с помощью команды tar.

  1. tar zxvf rocket.chat.tgz

Это разворачивает весь архив в каталог с именем bundle. Давайте переместим содержимое каталога bundle во что-нибудь более простое для запоминания.

  1. mv bundle Rocket.Chat

Перейдите в каталог, куда мы установим Rocket.Chat с помощью NPM.

  1. cd Rocket.Chat/programs/server

Установите Rocket.Chat.

  1. npm install

Вернитесь в родительский каталог Rocket.Chat.

  1. cd ../..

Нам нужно настроить некоторые переменные среды, чтобы помочь Rocket.Chat отслеживать такие вещи, как URL-адреса, порты и многое другое.

Сначала задайте для переменной ROOT_URL имя вашего домена. Это должно быть в форме URL.

  1. export ROOT_URL=https://example.com/

Установите URL-адрес MongoDB в переменной MONGO_URL.

  1. export MONGO_URL=mongodb://localhost:27017/rocketchat

Установите для переменной PORT значение 3000.

  1. export PORT=3000

Теперь вы можете запустить Rocket.Chat с помощью следующей команды:

  1. node main.js

Если ошибок нет, то работает! А пока остановите Rocket.Chat с помощью CTRL+C. Теперь, когда Rocket.Chat установлен, нам нужно настроить Nginx для проксирования всего своего трафика с использованием обратного прокси-сервера, что упростит доступ к Rocket.Chat и зашифрует все ваши сообщения с помощью вашего SSL-сертификата.

Шаг 3 — Настройка обратного прокси с Nginx

Для начала установите Nginx.

  1. sudo apt-get install -y nginx

Переместите закрытый ключ вашего сертификата в /etc/nginx/certificate.key.

  1. sudo cp /path/to/your/key /etc/nginx/certificate.key

Например, если вы создали сертификат Let's Encrypt, вы должны использовать sudo cp /etc/letsencrypt/live/your_domain_name/privkey.pem /etc/nginx/certificate.key .

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

  1. sudo chmod 400 /etc/nginx/certificate.key

Скопируйте сам сертификат в /etc/nginx/certificate.crt.

  1. sudo cp /path/to/your/cert /etc/nginx/certificate.crt

Если вы создали сертификат Let's Encrypt, команда будет похожа на sudo cp /etc/letsencrypt/live/your_domain_name/cert.pem /etc/nginx/certificate.crt .

Мы собираемся создать совершенно новую конфигурацию для Rocket.Chat, так что вы можете удалить настройку по умолчанию, чтобы сделать ее немного проще.

  1. sudo rm /etc/nginx/sites-enabled/default

Если вам понадобится этот файл по какой-либо причине в будущем, он все еще доступен по адресу /etc/nginx/sites-available/default.

Создайте новый /etc/nginx/sites-enabled/default с помощью nano или вашего любимого текстового редактора.

  1. sudo nano /etc/nginx/sites-enabled/default

Во-первых, мы добавим блок upstream:

# Upstreams
upstream backend {
    server 127.0.0.1:3000;
}

Под ним давайте создадим блок server. Первая часть сообщает Nginx, на каком порту прослушивать соединения, в данном случае :443. Это также позволяет узнать, какое у нас имя хоста. Не забудьте заменить example.com своим доменным именем.

server {
    listen 443;
    server_name example.com;

При этом мы указываем Nginx, где хранить журналы доступа Rocket.Chat, и указываем на SSL-сертификат и ключ, которые мы поместили в /etc/nginx/certificate.key и /etc/nginx. /certificate.crt соответственно.

    error_log /var/log/nginx/rocketchat.access.log;

    ssl on;
    ssl_certificate /etc/nginx/certificate.crt;
    ssl_certificate_key /etc/nginx/certificate.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # don’t use SSLv3 ref: POODLE

И теперь мы завершаем настройку блоком location:

    location / {
        proxy_pass http://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-Forward-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forward-Proto http;
        proxy_set_header X-Nginx-Proxy true;

        proxy_redirect off;
    }
}

Вот полный файл для справки:

server {
    listen 443;
    server_name example.com;
    error_log /var/log/nginx/rocketchat.access.log;

    ssl on;
    ssl_certificate /etc/nginx/certificate.crt;
    ssl_certificate_key /etc/nginx/certificate.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # don’t use SSLv3 ref: POODLE

    location / {
        proxy_pass http://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-Forward-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forward-Proto http;
        proxy_set_header X-Nginx-Proxy true;

        proxy_redirect off;
    }
}

Сохраните и закройте файл. Наконец, перезапустите Nginx, чтобы завершить работу.

  1. sudo service nginx restart

Проверьте, запущен ли Nginx.

  1. sudo service nginx status

Если вы видите следующее сообщение, Nginx запущен и работает:

 * nginx is running

Если вы видите сообщение об ошибке, проверьте журналы в /var/log/nginx/rocketchat.access.log и /var/log/nginx/access.log или журналы ошибок в /var/log/nginx/error.log. Вы также можете запустить nginx -t, чтобы проверить файл конфигурации Nginx, где появляется большинство ошибок.

Убедитесь, что вы все еще находитесь в папке Rocket.Chat.

  1. cd ~/Rocket.Chat

Затем выполните следующую команду, чтобы снова запустить Rocket.Chat.

  1. node main.js

Теперь Rocket.Chat должен работать по адресу https://example.com. Вы можете убедиться в этом, посетив этот адрес в своем любимом браузере.

В следующем разделе мы настроим Rocket.Chat для автоматического запуска при загрузке с помощью модуля узла с именем forever-service.

Шаг 4 — Настройка Rocket.Chat как службы

forever-service автоматически создает сценарии инициализации для узловых приложений, таких как Rocket.Chat. Для начала нам нужно установить сам forever, от которого зависит forever-service.

  1. sudo npm install -g forever

Затем установите forever-service.

  1. sudo npm install -g forever-service

Создайте сервис с помощью forever-service:

  1. sudo forever-service install -s main.js -e "ROOT_URL=https://example.com/ MONGO_URL=mongodb://localhost:27017/rocketchat PORT=3000" rocketchat

  • Флаг -s, за которым следует main.js, сообщает сервису forever, что наш скрипт называется main.js, а не app .js, который используется по умолчанию.
  • Флаг -e, за которым следует ROOT_URL=https://example.com/ MONGO_URL=mongodb://localhost:27017/rocketchat PORT= 3000 передает наши переменные окружения навсегда-сервису.
  • Наконец, rocketchat сообщает сервису forever-service, как назвать сервис.

Для получения более подробной информации о синтаксисе навсегда-сервиса запустите forever-service --help.

Теперь мы можем запустить Rocket.Chat. Это инициализирует службу rocketchat, созданную forever-service.

  1. sudo start rocketchat

Теперь Rocket.Chat должен работать по URL-адресу, который вы указали на шаге 2. Убедитесь, что вы используете HTTPS.

Rocket.Chat должен быть готов к работе. В следующем разделе мы добавим нашего первого администратора в Rocket.Chat и ознакомимся с интерфейсом.

Шаг 5 — Настройка и использование Rocket.Chat

Посетите URL-адрес, который мы установили для Rocket.Chat ранее. Вы должны увидеть что-то вроде этого:

Нажмите «Зарегистрировать новую учетную запись», затем введите информацию о пользователе для вашего первого администратора.

Нажмите «Отправить», а затем выберите имя пользователя для нового пользователя:

После нажатия Использовать это имя пользователя вы попадете на домашнюю страницу:

Вот и все! Справа вы увидите, что для вас уже создан канал #general. Если вы нажмете на нее, вы попадете в чат. Не стесняйтесь немного поиграть.

Теперь давайте пройдемся по интерфейсу. Во-первых, давайте продолжим и создадим новый канал, нажав крошечную кнопку с плюсом рядом с каналами:

Назовите это как угодно:

Теперь нажмите «Сохранить», и вы попадете на новый канал.

Чтобы получить доступ к интерфейсу администрирования, щелкните маленькую стрелку рядом с вашим именем пользователя. Это вытащит меню:

Нажмите «Администрирование». Появится второе меню:

Используя это меню, мы можем настраивать и управлять каждым аспектом нашей установки Rocket.Chat. В разделе «Пользователи» мы можем управлять разрешениями отдельных пользователей и даже приглашать новых. Мы также можем добавить дополнительные функции в нашу установку, используя представление «Интеграции».

Заключение

Поздравляем! Теперь у вас есть собственное решение для чата для вас и вашей команды: Rocket.Chat, работающее на сервере Ubuntu 14.04. Он настроен на автоматический запуск при загрузке с использованием forever-service и полностью оснащен SSL с использованием обратного прокси-сервера Nginx. Теперь вы можете добавить больше участников, создать больше каналов или, возможно, проверить раздел «Интеграции» в меню «Администрирование». Веселиться!