Как установить, настроить и развернуть 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. Во-первых, нам нужно добавить сервер ключей, чтобы мы могли получить доступ к пакетам.
- 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://example.com/
Установите 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 /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
. Это также позволяет узнать, какое у нас имя хоста. Не забудьте заменить 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, чтобы завершить работу.
- 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/log/nginx/error.log
. Вы также можете запустить nginx -t
, чтобы проверить файл конфигурации Nginx, где появляется большинство ошибок.
Убедитесь, что вы все еще находитесь в папке Rocket.Chat
.
- cd ~/Rocket.Chat
Затем выполните следующую команду, чтобы снова запустить Rocket.Chat.
- node main.js
Теперь Rocket.Chat должен работать по адресу https://example.com
. Вы можете убедиться в этом, посетив этот адрес в своем любимом браузере.
В следующем разделе мы настроим 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://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
.
- 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. Теперь вы можете добавить больше участников, создать больше каналов или, возможно, проверить раздел «Интеграции» в меню «Администрирование». Веселиться!