Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.
Кратко о задаче
На 1000 пользователей минимально потребуется 1 CPU, 2GB RAM и PostgreSQL v11+ (необязательно использовать именно Postgres).
Я буду использовать следующие ресурсы:
- Postgres 14. Закажем DBaaS с конфигом: 1 CPU 2 GB RAM + 20 GB диска
- Mattermost. Закажем сервер с Ubuntu и конфигурацией 2 CPU, 2 GB RAM + 50 GB диска
- Необходимо ограничить доступ до БД, один из способов — локальная сеть в Simple-Server
Ограничить доступ к базе данных можно через firewall, но по задумке все сервисы будут находиться в одной сети. Важно! Для работы в одной сети сервисы должны находиться в одном регионе.
Базу данных закажем как сервис. Сейчас достаточно 1 CPU, 2GB RAM и 20 GB диска, сервис будет размещен в Польше.
В пункте «4. Приватная сеть» выбрать сеть, созданную выше.
После создания сервиса сразу отключаем ползунок «Разрешить доступ по публичному IP» в настройках. База данных по умолчанию — defult_db, пользователь gen_user.
Теперь необходимо создать сервер, на котором будут установлены Mattermost и Nginx. Сервер будет на Ubuntu 22.04 и развернут в Польше:
Конфигурация — 2 CPU, 2 GB RAM и 50 GB диска.
Как и с Postgres, в пункте «6. Приватная сеть» нужно выбрать созданную выше сеть.
На Дашборде сервера будет предложено предлагается выполнить команду для установки Zabbix, чтобы получать метрики по RAM и диску. Подключимся по SSH и выполним ее:
wget -O - http://zabbix.repo.simple-server.tech/zabbix-install.sh | bashДополнительно нам понадобится домен для получения сертификата TLS. Можно воспользоваться бесплатным техническом доменом в панели Simple-Server в разделе Домены. Я добавлю поддомен на домене twc1.net.
Cтоит проверить, что домен привязался к серверу, это можно сделать в разделе «Сеть». Если домен не прописан рядом с IP-адресом, можно добавить его через «Настроить обратную зону».
Теперь можно переходить к самой установке. Для установки подключим репозиторий deb.packages.mattermost.com/repo-setup.sh.
curl -o- https://deb.packages.mattermost.com/repo-setup.sh | sudo bash -s mattermostЗдесь в sudo bash -s mattermost передается аргумент mattermost для добавления репозитория только Mattermost. Аргументом по умолчанию в данном скрипте является all, тогда будут также добавлены репозитории Ngnix, PostgreSQL и Certbot.
Установим сервис. Он будет установлен по пути /opt/mattermost. Пользователь mattermost и группа mattermost будут созданы автоматически.
sudo apt update
sudo apt install mattermost -yПосле установки понадобится создать config.json с необходимыми правами (он создается на основе config.defaults.json). Чтение и запись в файл будут доступны только для пользователя владельца (в нашем случае это mattermost).
sudo install -C -m 600 -o mattermost -g mattermost /opt/mattermost/config/config.defaults.json /opt/mattermost/config/config.jsonВ конфиге необходимо заполнить параметры:
sudo nano /opt/mattermost/config/config.json-
SiteUrl — сюда необходимо прописать созданный домен с протоколом https (в блоке
ServiceSettings). Позже мы подключим SSL-сертификат. -
DriverName — по умолчанию стоит postgres (в блоке
SqlSettings). -
DataSource — указать пользователя, пароль, хост и имя БД в ссылке подключения (в блоке
SqlSettings).
Остальные конфиги не важны для первого запуска, и их можно будет изменить позднее в административной консоли Mattermost.
Запускаем сервис Mattermost:
sudo systemctl start mattermostПроверим, что ничего не упало и Mattermost поднялся:
sudo systemctl status mattermost.serviceА также, что он доступен на порту 8065.
Если сайт не открывается, проверьте настройки файрвола. Также можно обратиться к порту локально с сервера:
Дополнительно добавим автозапуск сервиса:
sudo systemctl enable mattermost.serviceМы не будем напрямую использовать порт 8065 — он будет позже закрыт файрволом. Для проксирования запросов установим Nginx.
Теперь добавим конфигурацию:
sudo nano /etc/nginx/sites-available/mattermostВ строке server_name необходимо указать свой домен, в нашем случае mattermost.twc1.net.
Обратите внимание, что проксируется как HTTP, так и websocket-протоколы.
Добавим линк конфигурационного файла в sites-enabled:
sudo ln -s /etc/nginx/sites-available/mattermost /etc/nginx/sites-enabled/mattermost
sudo rm -f /etc/nginx/sites-enabled/defaultДелаем рестарт сервиса Nginx:
sudo service nginx restartТеперь выпустим сертификат от Let’s Encrypt для домена через certbot:
sudo apt install python3-certbot-nginx && certbotCertbot попросит указать почту, домен и после добавит сертификат для домена.
После установки сертификата certbot допишет конфигурацию nginx mattermost. Будет добавлена директива listen**** для обработки запросов с 443 порта, директивы с ключами и конфигами для SSL, а также редирект с HTTP на HTTPS.
После создания сервера в настройках сети добавим правила для файрвола.
Я ограничил входящие TCP запросы портами 22 для работы с SSH, 80 и 443 для TCP. Для сбора метрик на дашборд сервера необходимо открыть также порт 10050; список IP-адресов, для которых необходимо открывать порт, будет в /etc/zabbix/zabbix_agentd.conf.
Теперь Mattermost будет доступен по адресу https://mattermost.twc1.net/.
Можно Заказать VPS и рабочее пространство сразу из браузерной версии.
После установки и при первом входе можно наблюдать проблему с коннектом Web-сокетов.
Рекомендую проверить конфиги, теперь сделать это можно из System Console.
Например, моя ошибка заключалась в URL сервера.
Из коробки будут доступны звонки, playbooks, магазин с плагинами, аутентификация Gitlab. Также сам продукт имеет отличную документацию.
Разверните базу данных в облаке за минуту
В статье мы развернули бесплатную self-hosted версию Mattermost на серверах Simple-Server с вынесенной базой данных, доступной только из внутренней сети. Обратите внимание, что ресурсы для серверов были взяты под абстрактную задачу и их может потребоваться больше, не стоит пропускать нагрузочное тестирование :) В качестве следующего шаг рекомендую подключить хранилище S3, которое также доступно на simple-server.tech.
Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.