Не отправляются файлы rocket chat

Обновлено: 04.07.2024

Требования

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

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

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

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

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

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

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

sudo npm install -g n

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

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

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

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

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

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

sudo apt-get install -y nginx

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

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

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

sudo cp /etc/letsencrypt/live/your_domain_name/cert.pem /etc/nginx/certificate.crt

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:

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

После этого нужно добавить блок location.

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

Сохраните и закройте файл.

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. Также можно проверить конфигурационный файл на наличие ошибок:

Сначала установите 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

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

sudo start rocketchat

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

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

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

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

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

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

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

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

Установка компонентов

Установка необходимых пакетов

apt-get install curl build-essential graphicsmagick nodejs

  • curl — служебная программа для взаимодействия с сервисами по различным протоколам с синтаксисом URL. Нам понадобиться для скачивания файлов.
  • build-essential — пакет, необходимый для сборки других пакетов.
  • graphicsmagick — набор программ для чтения и редактирования файлов различных графических форматов.
  • nodejs — программная платформа, которая делает код javascript в язык общего назначения.

Устанавливаем inherits и node версии 12.14.0:

npm install -g inherits n && sudo n 12.14.0

Установка MongoDB

Конфигурируем репозиторий для MongoDB:

Импортируем ключ из репозитория для проверки пакетов от подделки:

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

И устанавливаем mongodb-org:

apt-get install mongodb-org

Вносим изменения в конфигурационный файл:

Разрешаем автозапуск mongodb и стартуем его:

systemctl enable mongod

systemctl start mongod

Инициализируем базу данных:

mongo --eval "printjson(rs.initiate())"

Установка

Для установки скачиваем пакет:

* обязательно сохраняем архив в каталог /tmp.

Распаковываем скачанный пакет:

Переходим в распакованный каталог:

. и переносим его в каталог /opt:

Настройка

Создаем пользователя для rocketchat:

useradd -M rocketchat

usermod -L rocketchat

* где первая команда создаст пользователя rocketchat без домашнего каталога; вторая — блокирует пароль пользователя.

Задаем владельца для каталога с rocketchat:

Создаем файл для нового юнита в systemd:

* в данном примере сервис будет запущен на порту 3000.

Применяем изменения в systemd:

Разрешаем сервис для rocketchat и запускаем сервер для чата:

systemctl enable rocketchat

systemctl start rocketchat

Ждем около 20 секунд — запуск выполняется не сразу.

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

iptables -A INPUT -p tcp --dport 3000 -j ACCEPT

. и сохраняем настройки:

apt-get install iptables-persistent

Установка и настройка клиента

Скачиваем клиента для rocketchat

* клиент может быть установлен на Windows, Mac OS, Linux. В данном примере скачиваем для Windows.

Устанавливаем и запускаем программу — откроется окно для подключения. Вводим IP-адрес и порт нашего сервера:

Подключение к серверу rocketchat

. система проверит подключение к серверу и предложит подключиться к серверу.

При первом входе клиент потребует зарегистрировать учетную запись администратора. Заполняем поля и регистрируемся.

Создание нового пользователя

Переходим к администрированию сервера. Кликаем по иконки меню (с тремя точками) и выбираем Administration:

Переходим к администрированию rocketchat

Переходим в раздел Users:

Переходим к управлению учетными записями

Кликаем по «плюсику» для создания нового пользователя:

Добавляем нового пользователя

Заполняем поля и кликаем по Save.

Настройка языка

Выбор языка в клиенте

Открываем клиентскую программу - кликаем по значку пользователя - выбираем My Account:

Переходим в настройку My Account

Кликаем по Preferences:

Переходим в Preferences

Выбираем язык и сохраняем настройки:

Выбор языка

Настройка языка по умолчанию

Переходим к администрированию сервера. Кликаем по иконки меню (с тремя точками) и выбираем Administration:

Переходим к администрированию rocketchat

Выбираем пункт меню General:

Переходим в настройки General

Выбираем язык по умолчанию:

Выбираем язык по умолчанию

. и сохраняем настройки.

Установка NGINX и получение сертификата

В качестве веб-сервера удобнее всего использовать NGINX. Установим его командой:

apt-get install nginx

Сразу разрешим автозапуск nginx:

systemctl enable nginx

Игаче, создадим конфигурационный файл с настройками для домена:

systemctl restart nginx

Если мы используем брандмауэр, создаем правила:

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

iptables -A INPUT -p tcp --dport 443 -j ACCEPT

apt-get install certbot

Получаем сертификат командой:

Если все сделано правильно, мы увидим:

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
.

Создаем задание для автоматического обновления сертификата:

И добавляем строку:

0 0 * * 1,4 /usr/bin/certbot renew && systemctl reload nginx

Открываем наш конфигурационный файл для nginx:

В поисках хорошего корпоративного чата некоторое время назад я наткнулся на mattermost. При ближайшем знакомстве оказалось, что это бесплатная альтернатива Slack. Я знаком с разными бесплатными корпоративными мессенджерами, но mattermost понравился больше всего. В этой статье я хочу рассказать, как установить и настроить mattermost на Centos 7.

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужно пройти .

Введение

Посмотреть подробно, что такое mattermost можно на официальном сайте. Если кратко, то это форк платного мессенджера Slack. Я не очень знаком с историей развития последнего, поэтому не знаю, когда и при каких условиях от него отпочковался бесплатный аналог. Похоже, исходники слака в какое-то время были доступны, и благодаря этому у него появились бесплатные аналоги.

Так же я подробно знакомился с сервером MyChat. По ссылке подробная статья и мой личный отзыв и впечатления после тестирования. В целом, продукт неплохой при цене ниже, чем платная версия mattermost, а функционал шире.

Рассмотрю еще один момент - зачем, собственно, нужны какие-то мессенджеры, когда есть skype, telegram, viber и другие бесплатные и популярные программы для общения. Тот, кто использовал указанные выше аналоги в реальной работе коллектива в 20-30 человек, думаю прекрасно себе представляет, в чем тут могут быть проблемы. Пройдусь по основным моментам:

Этот список на основе моего опыта работы небольших коллективов с различными мессенджерами. Кстати, наиболее простым и функциональным решением для корпоративного чата мне долгое время казалось решение на основе openfire. И только после знакомства с mattermost я стал потихоньку его внедрять в работу. Кратко расскажу о его достоинствах и недостатках, которые заметил я. Сначала достоинства:

  1. Сервер mattermost представляет из себя приложение, которое вы устанавливаете на своем сервере. То есть это закрытое решение, которое полностью под вашим контролем. Вы можете как угодно ограничивать к нему доступ на уровне сервера.
  2. Централизованное управление учетными записями. Администратор без проблем управляет всеми учетками - создает, блокирует, меняет пароли, выдает доступы и т.д.
  3. Централизованное хранение истории на вашем личном сервере в базе данных mysql. Можете ее хранить сколько угодно долго, бэкапить, восстанавливать, читать при необходимости.
  4. Удобная передача файлов прямо в чате. При этом файлы хранятся у вас на сервере сколь угодно долго.
  5. Приятный и понятный дизайн. Чат выглядит абсолютно одинаково через отдельное приложение, либо через браузер. Где пользоваться чатом каждый выбирает на свое усмотрение.

Теперь недостатки mattermost:

Вот пожалуй и все. Если с мобильной версией еще можно смириться, лично мне она не нужна, то списка юзеров и подтверждения прочтения мне не хватает. Тем не менее, что-то лучше, чем mattermost за бесплатно я не знаю. Буду рад, если кто-то поделится информацией на эту тему. Возможно, какой-то интересный и функциональный корпоративный мессенджер прошел мимо меня.

Подготовка к установке

Устанавливать mattermost будем на сервер под управлением CentOS 7. Если у вас еще нет готового сервера, можете воспользоваться моими руководствами по установке и настройке centos.

Далее нам понадобится web сервер с mysql. Я предпочитаю управлять базой данной mysql с помощью phpmyadmin, поэтому рекомендую мою статью на эту тему - установка phpmyadmin на CentOS 7. Там я подробно рассмотрел момент подготовки web сервера и установки непосредственно phpmyadmin. Далее я кратко выполню необходимые команды, а вы сами можете более подробно ознакомиться с процессом настройки по указанной выше ссылке.

Запускаем все это хозяйство и добавляем в автозагрузку.

Устанавливаем пароль root для mariadb.

Теперь установим phpmyadmin, предварительно подключив epel репозиторий. Подробнее о репозиториях читайте отдельно.

Заменяем параметры директории /usr/share/phpMyAdmin/ на следующие значения.

Установка mattermost

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

Создание базы и пользователя mysql

Распаковываем архив и переносим его в директорию /opt.

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

Создаем отдельного пользователя для запуска сервера и доступа к папкам.

Редактируем конфигурационный файл, указывая там доступ к базе данных mysql.

Находим строку с DataSource и изменяем параметры подключения.

mattermost Имя пользователя и базы данных mysql. В моем случае это одно и то же слово.
12345678 Пароль пользователя mysql mattermost.
localhost IP адрес mysql сервера. В данном случае это тот же сервер, где я выполняю установку.

По идее все готово. Пробуем запустить сервер.

Я стабильно в этот момент получаю ошибку:

При этом делаю все в соответствии с инструкцией на сайте. Ошибка понятна и легко исправляется. Mattermost при создании таблиц в базе данных создает их типа Innodb, а ему надо MyISAM. Я не вдавался в подробности, почему так происходит. Возможно это как-то связано с настройками базы данных по-умолчанию. Мы просто изменим тип уже созданных таблиц. Для этого идем в phpmyadmin, открываем там базу данных mattermost и выполняем sql запрос.

Выполнение sql запроса

Этот запрос сформирует нам список команд для изменения каждой таблицы. Я это сделал, чтобы не вручную менять тип каждой таблицы по отдельности. Отображаем полные строки получившихся команд и копируем их все.

Изменение типа таблиц базы mattermost

Должен получиться такой набор SQL команд.

Выполняем их все сразу так же в базе mattermost. После этого все таблицы должны стать MyISAM.

Список таблиц

Снова запускаем сервер.

Запуск сервера mattermost

Если все в порядке, то должны увидеть такой вывод. Сервер успешно стартовал на порту 8065. Создадим файл для управления и запуска сервера как службы через systemctl. Останавливаем сервер по ctrl+c в консоли и создаем файл.

Делаем его исполняемым.

Перезапускаем службу systemd.

Разрешаем запуск службы mattermost, добавляем ее в автозагрузку и запускаем.

Проверяем, запустился ли сервер.

Настройка mattermost

При первом заходе в чат по указанному ранее адресу, вы попадаете на страницу создания учетной записи администратора. Указывайте ваш емейл, имя пользователя и пароль. Далее вам предлагают создать команду - team. В данном случае это что-то вроде отдельного изолированного чата. На сервере может быть несколько независимых друг от друга тимов со своими пользователями и комнатами. Можно создать team позже, а сначала перейти в консоль и сделать несколько полезных настроек.

Настройка сервера mattermost

Так что идем в раздел NOTIFICATIONS -> Email , указываем там Enable Email Notifications - true и дальше заполняем необходимые настройки, которые будут отличаться в зависимости от того, каким почтовым сервером вы будете пользоваться.

Далее укажите язык по-умолчанию для всех пользователей, чтобы не пришлось его потом менять у каждого по отдельности. Для этого идем в раздел GENERAL -> Localization и выбираем нужные языки.

Настройки локализации

Так же рекомендую обратить внимание на настройку подтверждения email адреса. Она по-умолчанию выключена. Лично мне так удобнее, я ее не включаю. Когда сервер закрытый и все учетные записи создает администратор, подтверждение email не нужно. Но если у вас пользователи сами создают свои учетки, то лучше включить подтверждение, иначе при ошибке в указании почтового адреса, уведомления приходить не будут.

Не забудьте в разделе FILES-> Storage указать путь к каталогу хранения файлов - /opt/mattermost/data.

Теперь создадим одну team. Для этого нажимаем на ссылку Team Selection.

Создание команды

Нажимаем на ссылку Create a new team , указываем название и ссылку для входа в данную команду.

Добавление team URL

После этого мы попадаем в только что созданную команду. Если вы решили отключить публичную регистрацию, то для регистрации пользователя вам надо получить ссылку. Она находится в меню пользователя администратора.

Получение ссылки для регистрации пользователей

Настройка языка пользователя

Перевод адекватный, ляпов я не заметил, можно пользоваться.

Остальные настройки можете сами пробежать, просмотреть. Их не много, все достаточно понятно. Создавайте пользователей, каналы для них, приватные комнаты и т.д. В общем, изучайте самостоятельно функционал, ничего особенного там нет. Упомяну еще несколько настроек, которые я делаю пользователям. На мой взгляд, с ими удобнее. Все параметры указываются в настройках аккаунта.

Вот в общем и все, что я обычно делаю. Настройка сервера и учетной записи закончена. Можно добавлять юзеров и начинать пользоваться.

Установка приложения mattermost на компьютер

Загрузка приложений mattermost

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

Настройка подключения к серверу

Дальше вводите логин и пароль и начинаете пользоваться.

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

Все основные моменты рассказал. Сервер мы настроили, пользователей добавили. Корпоративным чатом можно пользоваться. Но если вы хотите опубликовать его в интернете и использовать публичный доступ, то я расскажу вам как это красиво и аккуратно сделать. До кучи добавим сертификат на доменное имя.

Проксирование чата mattermost через nginx

Вместо него установим nginx. По большому счету, это можно было сделать сразу, но я поленился, так как phpmyadmin под апачем настроить проще и быстрее. Добавляем репозиторий nginx.

Запускаем и добавляем в автозагрузку.

Убеждаемся, что он работает, перейдя по ip адресу сервера в браузере. Рисуем файл конфигурации для проксирования mattermost.

Удалим стандартную конфигурацию nginx. Вместо нее будет использоваться наша.

Проверяем конфигурацию nginx и перезапускаем его.

На этом все, установка и настройка бесплатного мессенджера mattermost завершена. Получилось вполне функциональное и законченное решение.

Обновление mattermost

С момента написания статьи прошло некоторое время, и вышла новая 4-я версия сервера. Я расскажу, как обновить сервер 3-й версии до последней на текущий момент версии mattermost 4.5.0. При обновлении любого продукта необходимо делать резервные копии. Сделаем и мы, отдельно директорию с самим сервером и базу данных.

Копируем директорию с файлами.

Бэкапим mysql базу.

Теперь можно смело обновляться. Если что-то пойдет не так, можем быстро откатиться на старую версию. Скачиваем и распаковываем свежую версию сервера.

Удаляем старую папку с сервером и копируем на ее место новую.

Копируем из бэкапа конфиг, загруженные файлы и логи.

Делаем владельцем директории с новой версией системного пользователя mattermost.

Запускаем сервер и проверяем работу.

С обновлением mattermost все. Можно заходить и проверять изменения. Не забудьте обновить версию клиента. Хотя старая все равно будет работать, но в новой будет расширен функционал и исправлены баги.

Заключение

Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!

Я привел реальный пример использования бесплатного корпоративного чата в своей практике. Чат удобный, функциональный, легко и быстро настраивается. Можно без проблем передать администрирование чата после настройки обычному сотруднику, который через админку будет управлять командами и пользователями. Внимание к себе чат почти не просит, работает надежно и стабильно. В общем, получился неплохой продукт. Рекомендую обратить на него внимание и попробовать. Если у кого есть еще удачные примеры подобных чатов, делитесь информацией в комментариях.

  • Чат в реальном времени
  • Аудиоконференции
  • Видеоконференции
  • Каналы
  • Гостевой вход
  • Трансляция экрана
  • Передача файлов
  • Полнофункциональный API

Для обеспечения безопасности используется:

  • Групповая синхронизация LDAP
  • Двухфакторная аутентификация 2FA
  • Сквозное шифрование
  • Единый вход SSO
  • Несколько поставщиков Oauth аутентификации

Шаг 1. Установка Snap в Linux

Для простоты мы будем использовать систему управления пакетами Snaps . Первым делом надо установить пакет snapd c помощью диспетчера пакетов.

Далее необходимо включить модуль systemd, который управляет основным сокетом мгновенной связи. Эта команда запустит сокет и позволит ему запускаться при загрузке системы.

$ sudo systemctl enable --now snapd.socket

Для установки rocketchat-server выполните:

$ sudo snap install rocketchat-server

После загрузки мастера настройки укажите следующие параметры: полное имя администратора, имя пользователя, адрес электронной почты организации и пароль.

Далее надо указать информацию об организации: тип организации, название, отрасль, размер, страна и сайт.

Затем нужно указать информацию о сервере - имя сайта, язык, тип сервера, и включение или отключение двухфакторной аутентификации 2FA.

Настройка завершена, и ваше рабочее пространство готово, теперь надо нажать Go to your workspace (Перейти в рабочее пространство)

Вот так оно выглядит.

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

Далее запустите службу Nginx, включите ее автоматический запуск при загрузке системы и проверьте ее статус

$ sudo systemctl enable --now nginx
$ sudo systemctl status nginx

Далее вставьте конфигурацию в этот файл, заменив домен на свой и сохраните.

upstream backend server 127.0.0.1:3000;
>

Наконец проверьте синтаксис и перезапустите службу Nginx.

$ sudo nginx -t
$ sudo systemctl restart nginx

Установите пакет Apache2

Далее запустите и включите службу apache и проверьте, запущена ли она и работает.

----- В Ubuntu/Debian -----
$ sudo systemctl enable --now apache2
$ sudo systemctl status apache2

Далее вставьте конфигурацию в этот файл, заменив домен на свой и сохраните.

<Location />
Require all granted
</Location>

В Ubuntu и Debian включите необходимые модули apache2 и перезапустите службу.

В CentOS/RHEL и Fedora перезапустите службу apache.

Затем установите пакет с помощью диспетчера пакетов dpkg или rpm

$ sudo dpkg -i rocketchat_2.17.7_amd64.deb Ubuntu/Debian
$ sudo rpm -i rocketchat-2.17.7.x86_64.rpm CentOS/RedHat

Установка Node.js

Сначала обновите список системных пакетов:

sudo apt update

Установите Node.js , npm и все другие зависимости, необходимые для сборки пакетов npm из исходного кода:

sudo apt install nodejs npm build-essential curl software-properties-common graphicsmagick

Мы будем использовать n, пакет npm, который позволяет интерактивно управлять версиями Node.js. Выполните команды ниже, чтобы установить n и Node.js:

sudo npm install -g inherits n
sudo n 8.11.3

Установка MongoDB

Импортируйте открытый ключ MongoDB и включите официальный репозиторий MongoDB:

После включения репозитория apt обновите список пакетов и установите MongoDB, набрав:

Читайте также: