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

Вступление

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. Теперь вы можете добавить больше участников, создать больше каналов или проверить раздел «Интеграции» в меню «Администрирование». Повеселись!

Related