Установка, настройка и развёртывание Rocket.Chat на сервере Ubuntu 14.04

Published by Leave your thoughts

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

Данное руководство поможет установить и настроить Rocket.Chat на свежем сервере Ubuntu и настроить обратный прокси-сервер Nginx (чтобы повысить безопасность и упростить доступ к Rocket.Chat).

Требования

  • Ubuntu 14.04 (минимум 1 GB RAM).
  • Не-root пользователь с доступом к sudo (инструкции по созданию такого пользователя – в руководстве «Начальная настройка сервера Ubuntu 14.04»).
  • Зарегистрированный домен, привязанный к серверу.
  • SSL-сертификат. Вы можете сгенерировать самоподписанный сертификат, получить бесплатный сертификат Let’s Encrypt или купить сертификат у другого провайдера.

1: Установка зависимостей

Сначала нужно установить зависимости Rocket.Chat, среди которых MongoDB и NodeJS.

Чтобы установить MongoDB, нужно сначала добавить сервер ключей:

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

Затеем нужно задать репозиторий:

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

Обновите список пакетов:

sudo apt-get update

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

sudo apt-get install -y npm mongodb-org curl graphicsmagick

Примечание: Аргумент –y автоматически подтверждает установку.

Теперь установите пакет при помощи NPM:

sudo npm install -g n

Измените версию NodeJS:

sudo n 0.10.40

Все зависимости установлены. Теперь можно установить Rocket.Chat.

2: Установка Rocket.Chat

Загрузите последнюю доступную версию Rocket.Chat с помощью curl:

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

Распакуйте архив:

tar zxvf rocket.chat.tgz

Эта команда извлечет архив в каталог bundle. Переместите содержимое этого каталога в каталог с более описательным названием:

mv bundle Rocket.Chat

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

cd Rocket.Chat/programs/server

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

npm install

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

cd ../..

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

В переменной ROOT_URL нужно указать свой URL-адрес:

export ROOT_URL=https://example.com/

Затем нужно задать URL-адрес MongoDB в переменной MONGO_URL:

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

Задайте порт 3000:

export PORT=3000

Теперь запустите Rocket.Chat:

node main.js

Остановите Rocket.Chat при помощи клавиш CTRL-C.

3: Настройка обратного прокси-сервера Nginx

Теперь нужно настроить Nginx для проксирования трафика, благодаря чему приложение Rocket.Chat сможет работать быстрее, а SSL-сертификат начнёт шифровать данные.

Установите Nginx:

sudo apt-get install -y nginx

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

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

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

sudo chmod 400 /etc/nginx/certificate.key

Теперь скопируйте сертификат в /etc/nginx/certificate.crt:

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, удалите настройки по умолчанию:

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

Если в дальнейшем вам понадобится этот файл, его можно найти в каталоге /etc/nginx/sites-available/default.

Создайте /etc/nginx/sites-enabled/default в nano:

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

Сначала добавьте блок upstream:

# Upstreams
upstream backend {
server 127.0.0.1:3000;
}

После этого создайте блок server. Первая его часть указывает имя хоста и порт, который прослушивает Nginx (в данном случае :443).

server {
listen 443;
server_name example.com;

Примечание: Замените example.com своим доменом.

После этого нужно указать, где Nginx будет хранить логи Rocket.Chat, и подключить SSL-сертификат:

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

В результате /etc/nginx/sites-enabled/default выглядит так:

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:

sudo service nginx restart

Чтобы убедиться, что Nginx работает, проверьте состояние сервера:

sudo service nginx status

Команда должна вернуть:

* nginx is running

Если же команда вернула ошибку:

* nginx is not running

проверьте логи /var/log/nginx/rocketchat.access.log и /var/log/nginx/access.log или лог ошибок /var/log/nginx/error.log. Также можно проверить конфигурационный файл на наличие ошибок:

nginx -t

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

cd ~/Rocket.Chat

Снова запустите приложение Rocket.Chat:

node main.js

Теперь приложение Rocket.Chat доступно по ссылке:

https://example.com

4: Настройка сервиса Rocket.Chat

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

Сначала установите forever (зависимость forever-service):

sudo npm install -g forever

Теперь можно установить forever-service:

sudo npm install -g forever-service

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

cd ~/Rocket.Chat

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

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 указывает, что скрипт называется main.js, а не app.js (стандартное имя).
  • Флаг –e, за которым идёт «ROOT_URL=https://example.com/ MONGO_URL=mongodb://localhost:27017/rocketchat PORT=3000″, передаёт переменные окружения модулю forever-service.
  • rocketchat – название сервиса.

Примечание: Чтобы получить справку по синтаксису forever-service, запустите команду:

forever-service --help

Запустите Rocket.Chat:

sudo start rocketchat

Эта команда инициализирует сервис rocketchat, созданный модулем forever-service.

Команды для управления Rocket.Chat:

  • Запустить:
    sudo start rocketchat
  • Остановить:
    sudo stop rocketchat
  • Проверить состояние:
    sudo status rocketchat
  • Перезапустить:
    sudo restart rocketchat

Перезапустите сервер:

sudo reboot

Если настройки выполнены правильно, Rocket.Chat запустится вместе с сервером.

Примечание: Проверьте лог-файл /var/log/rocketchat.log, чтобы узнать подробности запуска приложения.

5: Настройка Rocket.Chat

Теперь попробуйте добавить первого пользователя – администратора Rocket.Chat.

Откройте Rocket.Chat в браузере. На экране появится форма входа.

Выберите Register a new account и введите данные о новом пользователе. Нажмите Submit, а затем выберите имя пользователя. Нажмите Use this username. На экране появится домашняя страница приложения.

По умолчанию приложение создаёт канал #general.

Rocket.Chat предлагает множество удобных вариантов форматирования (курсив, полужирный, зачеркнутый и т.п.). Ниже вы найдёте советы по работе с Rocket.Chat:

  • Чтобы выделить текст полужирным, поместите его между звёздочками: *this is bold!*
  • Чтобы написать текст курсивом, используйте символы подчёркивания:

_woohoo, italics!_

  • Чтобы зачеркнуть текст, используйте тильду:

~strikethrough!~

  • Чтобы использовать блоки встроенного кода, введите обратные кавычки:

`inline_code`

  • Чтобы добавить цитату, используйте знак «больше»:

> blockquote

Теперь рассмотрим интерфейс приложения. Попробуйте создать новый канал. Для этого нажмите кнопку с плюсом возле Channels.

Выберите название канала. Нажмите Save. Приложение откроет новый канал.

Чтобы получить доступ к интерфейсу администратора, нажмите кнопку со стрелочкой рядом с именем пользователя. Это переведёт вас в новое меню. Выберите Administration. На экране появится меню администратора.

При помощи этого меню можно управлять всеми параметрами Rocket.Chat. В разделе Users можно изменять привилегии отдельных пользователей. Чтобы добавить новые функции для приложения, используйте Integrations.

Заключение

Теперь на сервере Ubuntu 14.04 установлено простое и удобное средство обмена сообщениями — Rocket.Chat. Приложение запускается автоматически, поддерживает SSL и использует обратный прокси-сервер Nginx. Добавьте в приложение новых пользователей.

Tags: , , , , , ,

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *


*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>