Вступление
http://rocket.chat [Rocket.Chat] - приложение для обмена сообщениями с открытым исходным кодом, созданное с помощью Meteor. Он поддерживает видеоконференции, обмен файлами, голосовые сообщения, имеет полнофункциональный API и многое другое. Rocket.Chat отлично подходит для тех, кто предпочитает иметь полный контроль над своими коммуникациями.
В этом руководстве мы будем устанавливать и настраивать Rocket.Chat на новом сервере Ubuntu, а также настраивать обратный прокси-сервер через Nginx для повышения безопасности и упрощения доступа к Rocket.Chat. Когда мы закончим, у вас будет функциональный экземпляр Rocket.Chat, доступный практически из любого места.
Предпосылки
Чтобы следовать этому уроку, вам понадобится:
-
Один сервер Ubuntu 14.04 с рекомендуемым минимумом 1 ГБ ОЗУ
-
Пользователь без полномочий root с привилегиями sudo (Initial Server Setup с Ubuntu 14.04 объясняет, как это настроить. )
-
Полностью зарегистрированный домен. Вы можете приобрести один на https://namecheap.com [Namecheap] или получить его бесплатно на Freenom.
-
Убедитесь, что ваше доменное имя настроено так, чтобы оно указывало на ваш сервер. Проверьте thutorial, если вам нужна помощь.
-
SSL-сертификат. Generate самоподписанный сертификат, https: // www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-14-04[obobest бесплатно получить от 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 npm mongodb-org curl graphicsmagick
Нам нужно установить пакет, используя NPM, чтобы позволить нам изменить версию узла:
sudo npm install -g n
Используйте этот пакет, чтобы изменить версию узла на + 0.10.40 +
.
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 +
.
tar zxvf rocket.chat.tgz
Это расширяет весь архив в каталог с именем + bundle +
. Давайте переместим содержимое каталога + 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:///
Установите URL MongoDB в переменной + MONGO_URL +
.
export MONGO_URL=mongodb://localhost:27017/rocketchat
Установите переменную + PORT +
в + 3000 +
.
export PORT=3000
Теперь вы можете запустить Rocket.Chat с помощью следующей команды:
node main.js
Если ошибок нет, это работает! А пока остановите Rocket.Chat с помощью + CTRL + C +
. Теперь, когда Rocket.Chat установлен, нам нужно настроить Nginx для прокси-сервера всего своего трафика с использованием обратного прокси-сервера, упрощая доступ к Rocket.Chat и шифруя все ваши сообщения с помощью вашего SSL-сертификата.
Шаг 3 - Настройка обратного прокси с Nginx
Для начала установите Nginx.
sudo apt-get install -y nginx
Переместите закрытый ключ вашего сертификата в + / etc / nginx / certificate.key
.
sudo cp /etc/nginx/certificate.key
Например, если вы создали сертификат Let Encrypt, вы должны использовать + sudo cp /etc/letsencrypt/live//privkey.pem / etc / nginx / certificate.key +
.
Измените разрешения ключа, чтобы неавторизованные воры не могли получить доступ.
sudo chmod 400 /etc/nginx/certificate.key
Скопируйте сам сертификат в + / etc / nginx / certificate.crt +
.
sudo cp /etc/nginx/certificate.crt
Если вы создали сертификат Let Encrypt, команда будет похожа на + sudo cp /etc/letsencrypt/live//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 +
:
/ И т.д. / Nginx / сайты с поддержкой / по умолчанию
# Upstreams
upstream backend {
server 127.0.0.1:3000;
}
Под этим давайте создадим блок + server +
. Первая часть сообщает Nginx, на каком порту прослушивать соединения, в данном случае +: 443 +
. Он также дает ему знать, какое у нас имя хоста. Не забудьте заменить ++
на ваше доменное имя.
/ И т.д. / Nginx / сайты с поддержкой / по умолчанию
server {
listen 443;
server_name ;
При этом мы сообщаем Nginx, где хранить журналы доступа Rocket.Chat, и указываем на SSL-сертификат и ключ, которые мы поместили в + / etc / nginx / certificate.key +
и + / etc / nginx / certificate.crt +
соответственно.
/ И т.д. / Nginx / сайты с поддержкой / по умолчанию
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://: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 / сайты с поддержкой / по умолчанию
server {
listen 443;
server_name ;
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://: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 запущен:
* nginx is running
Если вы видите сообщение об ошибке, проверьте журналы в + / var / log / nginx / rocketchat.access.log +
и + / var / log / nginx / access.log +
или журналы ошибок в + / var / войти / Nginx / error.log + `. Вы также можете запустить `+ nginx -t +
, чтобы проверить файл конфигурации Nginx, в котором и появляется большинство ошибок.
Убедитесь, что вы все еще находитесь в папке + Rocket.Chat +
.
cd ~/Rocket.Chat
Затем выполните следующую команду, чтобы снова запустить Rocket.Chat.
node main.js
Rocket.Chat теперь должен быть активен в + https: // +
. Вы можете убедиться в этом, посетив этот адрес в своем любимом браузере.
В следующем разделе мы настроим Rocket.Chat для автоматического запуска при загрузке с использованием модуля узла под названием + forever-service +
.
Шаг 4 - Настройка Rocket.Chat в качестве службы
+ forever-service +
автоматически генерирует сценарии инициализации для приложений узла, таких как Rocket.Chat. Для начала нам нужно установить сам + forever +
, от которого зависит + forever-service +
.
sudo npm install -g forever
Затем установите + forever-service +
.
sudo npm install -g forever-service
Создайте сервис, используя + forever-service +
:
sudo forever-service install -s main.js -e "ROOT_URL=https:/// MONGO_URL=mongodb://localhost:27017/rocketchat PORT=3000" rocketchat
-
Флаг
+ -s +
, за которым следует+ main.js +
, сообщает навсегда, что наш скрипт называется+ main.js +
, а не+ app.js +
, что по умолчанию. -
Флаг
+ -e +
, за которым следует" ROOT_URL = https: /// MONGO_URL = mongodb: // localhost: 27017 / rocketchat PORT = 3000 "
передает наши переменные окружения навсегда-сервису. -
Наконец,
+ rocketchat +
сообщает навсегда-сервису, как назвать сервис.
Для получения более подробной информации о синтаксисе forever-service, запустите + forever-service --help +
.
Теперь мы можем запустить Rocket.Chat. Это инициализирует сервис + rocketchat +
, созданный + forever-service +
.
sudo start rocketchat
Rocket.Chat теперь должен быть активным по URL, который вы указали в шаге 2. Убедитесь, что вы используете HTTPS здесь.
Rocket.Chat должен быть готов к работе. В следующем разделе мы добавим нашего первого администратора в Rocket.Chat и познакомимся с интерфейсом.
Шаг 5 - Настройка и использование Rocket.Chat
Посетите URL, который мы ранее установили на Rocket.Chat. Вы должны увидеть что-то вроде этого:
изображение: https: //assets.digitalocean.com/articles/rocket_chat/klJmqMA.png [страница входа в Rocket.Chat]
Нажмите * Зарегистрировать новую учетную запись *, затем введите информацию о пользователе для вашего первого администратора.
изображение: https: //assets.digitalocean.com/articles/rocket_chat/DYO7MES.png [регистрация в Rocket.Chat]
Нажмите * Отправить *, а затем выберите имя пользователя для нового пользователя:
изображение: https: //assets.digitalocean.com/articles/rocket_chat/sjw3Anc.png [Установить имя пользователя для нового пользователя]
После нажатия * Использовать это имя пользователя * вы попадете на домашнюю страницу:
изображение: https: //assets.digitalocean.com/articles/rocket_chat/Ek3gIlH.png [домашняя страница Rocket.Chat]
Это все! Справа вы увидите, что канал * # general * для вас уже создан. Если вы нажмете на нее, вы попадете в чат. Не стесняйтесь немного поиграть.
изображение: https: //assets.digitalocean.com/articles/rocket_chat/JHXi3Au.png [стандартный # общий чат]
Теперь давайте пройдемся по интерфейсу. Во-первых, давайте продолжим и создадим новый канал, нажав крошечную кнопку плюса рядом с * Channels *:
изображение: https: //assets.digitalocean.com/articles/rocket_chat/2eCYawM.png [Создать новый канал]
Назовите это как угодно:
изображение: https: //assets.digitalocean.com/articles/rocket_chat/bLTOD84.png [введите описание изображения здесь]
Теперь нажмите * Сохранить *, и вы попадете на новый канал.
Чтобы получить доступ к интерфейсу администрирования, нажмите маленькую стрелочку рядом с вашим именем пользователя. Это опустит меню:
image: https: //assets.digitalocean.com/articles/rocket_chat/54LxGdj.png [Используя это меню, вы можете установить свой статус и получить доступ к таким вещам, как меню Администрирование.]
Нажмите на * Администрирование *. Это вызовет второе меню:
image: https: //assets.digitalocean.com/articles/rocket_chat/LPrzgYZ.png [Это меню администрирования.]
Используя это меню, мы можем настроить и управлять каждым аспектом нашей установки Rocket.Chat. В разделе * Users * мы можем управлять разрешениями отдельных пользователей и даже приглашать новых. Мы также можем добавить больше возможностей к нашей установке, используя представление * Integrations *.
Заключение
Поздравляем! Теперь у вас есть собственное решение для чата для вас и вашей команды: Rocket.Chat, работающее на сервере Ubuntu 14.04. Он настроен на автоматический запуск при загрузке с помощью + forever-service +
и полностью оснащен SSL с использованием обратного прокси-сервера Nginx. Теперь вы можете добавить больше участников, создать больше каналов или проверить раздел «Интеграции» в меню «Администрирование». Повеселись!