Как установить систему обмена сообщениями Mattermost Team на Ubuntu 22.04
Это руководство существует для этих версий ОС
- Ubuntu 22.04 (Jammy Jellyfish)
- Ubuntu 20.04 (Focal Fossa)
На этой странице
- Предпосылки
- Шаг 1. Настройка брандмауэра
- Шаг 2. Установите PostgreSQL
- Шаг 3. Настройка PostgreSQL
- Шаг 4. Загрузите Mattermost
- Шаг 5. Создайте системного пользователя для Mattermost и настройте разрешения
- Шаг 6. Создайте файл модуля Systemd
- Шаг 7. Установите Nginx
- Шаг 8. Установите SSL
- Шаг 9. Настройка Nginx
- Шаг 10. Доступ к серверу Mattermost
- Шаг 11. Настройка сервера Mattermost
- Настройка уведомлений по электронной почте
Mattermost — это платформа обмена сообщениями с открытым исходным кодом, используемая для общения в чате, обмена файлами, управления проектами и оркестровки рабочих процессов. Он написан на языке Go. Он предлагается как в виде облачного решения, так и в виде собственного сервера. Это альтернатива Slack и другим профессиональным платформам. Возможность разместить его на своем сервере позволяет вам контролировать свои сообщения и конфиденциальные данные.
В этом руководстве вы узнаете, как установить систему обмена сообщениями Mattermost Team на сервер Ubuntu 22.04. 3043223216276099;var slotId=div-gpt-ad-howtoforge_com-medrectangle-3-0;var ffid=1;var alS=1021%1000;var container=document.getElementById(slotId);container.style.width=100%; var ins=document.createElement(ins);ins.id=slotId+-asloaded;ins.className=adsbygoogle ezasloaded;ins.dataset.adClient=pid;ins.dataset.adChannel=cid;if(ffid==2){ins .dataset.fullWidthResponsive=true;}
Предпосылки
-
A server running Ubuntu 22.04 with a minimum of 2 GB of RAM for up to 1000 users.
-
A non-root user with sudo privileges.
-
The Uncomplicated Firewall(UFW) is enabled and running.
-
A Fully Qualified domain name pointed to the server. For our tutorial, we will be using the domain
mattermost.example.com
. -
Everything is updated.
$ sudo apt update && sudo apt upgrade
Шаг 1. Настройте брандмауэр
Первым шагом перед установкой любых пакетов является настройка брандмауэра для разрешения подключений HTTP и HTTPS.
Проверьте состояние брандмауэра.
$ sudo ufw status
Вы должны увидеть что-то вроде следующего.
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)
Порт 8065 требуется Mattermost. Этот порт необходимо открыть только временно, чтобы подтвердить установку. Мы удалим его позже.
$ sudo ufw allow 8065
Разрешить порты HTTP и HTTPS.
$ sudo ufw allow http $ sudo ufw allow https
Проверьте статус еще раз для подтверждения.
$ sudo ufw status Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 80/tcp ALLOW Anywhere 443 ALLOW Anywhere 8065 ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 80/tcp (v6) ALLOW Anywhere (v6) 443 (v6) ALLOW Anywhere (v6) 8065 (v6) ALLOW Anywhere (v6)
Шаг 2 — Установите PostgreSQL
Mattermost может работать как с серверами MySQL, так и с серверами PostgreSQL, но рекомендуется использовать PostgreSQL.
Ubuntu 22.04 поставляется с последней стабильной (v14) версией PostgreSQL. Вы можете установить его с помощью одной команды.
$ sudo apt install postgresql postgresql-contrib
Проверьте версию MySQL.
$ psql --version psql (PostgreSQL) 14.4 (Ubuntu 14.4-0ubuntu0.22.04.1)
Шаг 3 — Настройте PostgreSQL
PostgreSQL создает учетную запись пользователя Linux
postgres
во время установки. С помощью этой учетной записи можно получить доступ к оболочке PostgreSQL.Войдите в оболочку PostgreSQL.
$ sudo -u postgres psql
Создайте базу данных Mattermost.
postgres=# CREATE DATABASE mattermostdb;
Создайте пользователя базы данных Mattermost. Замените
mmuser-password
на более надежный пароль по вашему выбору.postgres=# CREATE USER mmuser WITH PASSWORD 'mmuser-password';
Предоставьте пользователю все привилегии в базе данных.
postgres=# GRANT ALL PRIVILEGES ON DATABASE mattermost to mmuser;
Выйдите из оболочки PostgreSQL, введя
\q
в оболочке.postgres=# \q
Откройте файл
/etc/postgresql/{version}/main/pg_hba.conf
для редактирования.$ sudo nano /etc/postgresql/{version}/main/pg_hba.conf
Найдите следующие строки.
# "local" is for Unix domain socket connections only local all all peer # IPv4 local connections: host all all 127.0.0.1/32 scram-sha-256 # IPv6 local connections: host all all ::1/128 scram-sha-256
Измените значения
peer
иscram-sha-256
наtrust
в приведенных выше строках.# "local" is for Unix domain socket connections only local all all trust # IPv4 local connections: host all all 127.0.0.1/32 trust # IPv6 local connections: host all all ::1/128 trust
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Перезапустите службу PostgreSQL, чтобы изменения вступили в силу.
$ sudo systemctl restart postgresql
Убедитесь, что вы можете подключиться к пользователю Mattermost SQL.
$ psql --dbname=mattermost --username=mmuser --password
Вам будет предложено ввести пароль. Введите его, и вы войдете в оболочку PostgreSQL. Введите
\q
, чтобы выйти из оболочки.Password: psql (14.4 (Ubuntu 14.4-0ubuntu0.22.04.1)) Type "help" for help. mattermost-> \q
Шаг 4 - Загрузите Mattermost
Загрузите последнюю версию сервера Mattermost. На момент написания этого руководства последней доступной версией была 7.0.1.
$ wget https://releases.mattermost.com/7.0.1/mattermost-7.0.1-linux-amd64.tar.gz
Распакуйте архив.
$ tar -xvzf mattermost*.gz
Переместите извлеченные файлы в каталог
/opt
.$ sudo mv mattermost /opt
Создайте каталог хранения данных для сервера Mattermost.
$ sudo mkdir /opt/mattermost/data
Шаг 5. Создайте системного пользователя для Mattermost и настройте разрешения
Откройте файл конфигурации
/opt/mattermost/config/config.json
для редактирования.$ sudo nano /opt/mattermost/config/config.json
Задайте для переменной
SiteURL
доменное имя, которое вы хотите использовать для установки."SiteURL": "https://mattermost.example.com",
Найдите переменную
DriverName
в разделеSqlSettings
и измените ее значение наmysql
."DriverName": "mysql",
Задайте для переменной
DataSource
следующее значение. Заменитеmmuser
на имя пользователя SQL,YourPassword23!
на пароль SQL иmattermostdb
на имя базы данных. , настроенный на шаге 4."DataSource": "mmuser:(localhost:3306)/mattermostdb?charset=utf8mb4,utf8&writeTimeout=30s",
На этом этапе вы можете настроить множество других параметров, но было бы проще сделать их после установки. На данный момент важны только эти две настройки.
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Создайте системного пользователя и группу для сервера Mattermost.
$ sudo useradd --system --user-group mattermost
Измените владельца каталога Mattermost на вновь созданного пользователя и группу.
$ sudo chown -R mattermost:mattermost /opt/mattermost
Предоставьте разрешения на запись группе
самой важной
в каталоге.$ sudo chmod -R g+w /opt/mattermost
Перейдите в каталог Mattermost.
$ cd /opt/mattermost
Запустите сервер Mattermost от имени пользователя
mattermost
.$ sudo -u mattermost ./bin/mattermost
Сервер запустится и сгенерирует кучу лог-информации. Дождитесь появления строки
Сервер прослушивает [::]:8065
. Посетите URL-адресhttp://
в своем браузере, и вы увидите следующую страницу входа.:8065 Нажмите Ctrl + C, чтобы остановить сервер. Мы вернемся к этому позже, чтобы настроить установку.
Шаг 6 — Создайте файл модуля Systemd
Следующим шагом будет создание системного файла для Mattermost.
Создайте и откройте файл модуля для редактирования.
$ sudo nano /lib/systemd/system/mattermost.service
Вставьте в него следующий код.
[Unit] Description=Mattermost After=network.target After=postgresql.service BindsTo=postgresql.service [Service] Type=notify ExecStart=/opt/mattermost/bin/mattermost TimeoutStartSec=3600 KillMode=mixed Restart=always RestartSec=10 WorkingDirectory=/opt/mattermost User=mattermost Group=mattermost LimitNOFILE=49152 [Install] WantedBy=multi-user.target
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Перезагрузите демон systemd, чтобы загрузить служебный файл.
$ sudo systemctl daemon-reload
Запустите службу Mattermost.
$ sudo systemctl start mattermost
Проверить статус услуги.
? mattermost.service - Mattermost Loaded: loaded (/lib/systemd/system/mattermost.service; disabled; vendor preset: enabled) Active: active (running) since Mon 2022-07-11 01:24:46 UTC; 20s ago Main PID: 23628 (mattermost) Tasks: 48 (limit: 2241) Memory: 448.2M CPU: 14.929s CGroup: /system.slice/mattermost.service ??23628 /opt/mattermost/bin/mattermost ??23651 plugins/com.mattermost.plugin-channel-export/server/dist/plugin-linux-amd64 ??23656 plugins/com.mattermost.nps/server/dist/plugin-linux-amd64 ??23662 plugins/com.mattermost.calls/server/dist/plugin-linux-amd64 ??23668 plugins/com.mattermost.apps/server/dist/plugin-linux-amd64 ??23674 plugins/playbooks/server/dist/plugin-linux-amd64 ??23683 plugins/focalboard/server/dist/plugin-linux-amd64 ....
Включите службу.
$ sudo systemctl enable mattermost
Шаг 7 — Установите Nginx
Ubuntu 22.04 поставляется с более старой версией Nginx. Чтобы установить последнюю версию, вам необходимо скачать официальный репозиторий Nginx.
Импортировать ключ подписи Nginxs.
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Добавьте репозиторий для стабильной версии Nginx.
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \ http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list
Обновите системные репозитории.
$ sudo apt update
Установите Нгинкс.
$ sudo apt install nginx
Проверьте установку.
$ nginx -v nginx version: nginx/1.22.0
Шаг 8 — Установите SSL
Нам нужно установить Certbot для создания SSL-сертификата. Вы можете либо установить Certbot, используя репозиторий Ubuntu, либо получить последнюю версию с помощью инструмента Snapd. Мы будем использовать версию Snapd.
Ubuntu 22.04 поставляется с установленным по умолчанию Snapd. Выполните следующие команды, чтобы убедиться, что ваша версия Snapd обновлена.
$ sudo snap install core
Установите Сертбот.
$ sudo snap install --classic certbot
Используйте следующую команду, чтобы убедиться, что команду Certbot можно запустить, создав символическую ссылку на каталог
/usr/bin
.$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Выполните следующую команду, чтобы сгенерировать SSL-сертификат.
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m -d mattermost.example.com
Приведенная выше команда загрузит сертификат в каталог
/etc/letsencrypt/live/mattermost.example.com
на вашем сервере.Создайте групповой сертификат Диффи-Хеллмана.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Откройте файл
/etc/letsencrypt/renewal/mattermost.example.com.conf
для редактирования.$ sudo nano /etc/letsencrypt/renewal/mattermost.example.com.conf
Вставьте следующий код внизу.
pre_hook = systemctl stop nginx post_hook = systemctl start nginx
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Мы создали сертификат SSL, используя автономную опцию Certbot. Он запускает свой веб-сервер для создания сертификата, что означает, что Nginx должен быть отключен во время обновления. Команды pre_hook и post_hook запускаются до и после обновления, чтобы автоматически закрыть и перезапустить сервер Nginx, не требуя ручного вмешательства.
Чтобы проверить, нормально ли работает обновление SSL, выполните пробный запуск процесса.
$ sudo certbot renew --dry-run
Если вы не видите ошибок, все готово. Ваш сертификат будет продлен автоматически.
Шаг 9 — Настройте Nginx
Откройте файл
/etc/nginx/nginx.conf
для редактирования.$ sudo nano /etc/nginx/nginx.conf
Добавьте следующую строку перед строкой
include /etc/nginx/conf.d/*.conf;
.server_names_hash_bucket_size 64;
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Создайте и откройте файл
/etc/nginx/conf.d/monica.conf
для редактирования.$ sudo nano /etc/nginx/conf.d/mattermost.conf
Вставьте в него следующий код. Замените
mattermost.example.com
своим доменным именем. Убедитесь, что значениеclient_max_body_size
установлено на 10 МБ, что соответствует размеру загружаемых файлов по умолчанию в Monica. Это то же самое значение, которое мы настроили с помощью PHP ранее.upstream backend { server 127.0.0.1:8065; keepalive 32; } proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=mattermost_cache:10m max_size=3g inactive=120m use_temp_path=off; server { listen 80 default_server; server_name mattermost.example.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; server_name mattermost.example.com; http2_push_preload on; # Enable HTTP/2 Server Push ssl_certificate /etc/letsencrypt/live/mattermost.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/mattermost.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/mattermost.example.com/chain.pem; ssl_session_timeout 1d; # Enable TLS versions (TLSv1.3 is required upcoming HTTP/3 QUIC). ssl_protocols TLSv1.2 TLSv1.3; # Enable TLSv1.3's 0-RTT. Use $ssl_early_data when reverse proxying to # prevent replay attacks. # # @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data ssl_early_data on; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384'; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:50m; # HSTS (ngx_http_headers_module is required) (15768000 seconds = six months) add_header Strict-Transport-Security max-age=15768000; # OCSP Stapling --- # fetch OCSP records from URL in ssl_certificate and cache them ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; add_header X-Early-Data $tls1_3_early_data; location ~ /api/v[0-9]+/(users/)?websocket$ { proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; client_max_body_size 50M; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Frame-Options SAMEORIGIN; proxy_buffers 256 16k; proxy_buffer_size 16k; client_body_timeout 60; send_timeout 300; lingering_timeout 5; proxy_connect_timeout 90; proxy_send_timeout 300; proxy_read_timeout 90s; proxy_http_version 1.1; proxy_pass http://backend; } location / { client_max_body_size 50M; proxy_set_header Connection ""; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Frame-Options SAMEORIGIN; proxy_buffers 256 16k; proxy_buffer_size 16k; proxy_read_timeout 600s; proxy_cache mattermost_cache; proxy_cache_revalidate on; proxy_cache_min_uses 2; proxy_cache_use_stale timeout; proxy_cache_lock on; proxy_http_version 1.1; proxy_pass http://backend; } } # This block is useful for debugging TLS v1.3. Please feel free to remove this # and use the `$ssl_early_data` variable exposed by NGINX directly should you # wish to do so. map $ssl_early_data $tls1_3_early_data { "~." $ssl_early_data; default ""; }
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Дайте Nginx разрешения на каталог кеша.
$ sudo chown -R nginx:nginx /var/cache/nginx
Проверьте конфигурацию Nginx.
$ sudo nginx -t
Перезапустите сервер Nginx.
$ sudo systemctl restart nginx
Шаг 10. Доступ к серверу Mattermost
Откройте URL-адрес
https://mattermost.example.com
в своем браузере, и вы увидите страницу регистрации, как показано на шаге 5. Введите данные своей учетной записи, и она будет установлена как Системный администратор.Прежде чем продолжить, нам нужно закрыть порт 8065, поскольку мы настроили Mattermost для доступа через общедоступный URL-адрес. Таким образом, открытый порт представляет угрозу безопасности.
$ sudo ufw delete allow 8065
Далее вы попадете на страницу создания команды.
Нажмите кнопку «Создать команду», чтобы создать свою первую команду.
Далее вам будет предложено установить общедоступный URL-адрес для команды.
Нажмите кнопку «Готово», чтобы открыть панель инструментов Mattermost.
Шаг 11 — Настройте сервер Mattermost
Вы можете настроить Mattermost с помощью файла
config.json
или с помощью системной консоли на панели инструментов. Мы будем делать это через панель инструментов, так как это намного проще. Нажмите кнопку продукта в верхнем левом углу, а затем выберите параметр «Системная консоль».Вы попадете на панель управления системной консолью, где сможете настроить все, что касается сервера.
Настройка уведомлений по электронной почте
Одной из наиболее важных функций системы обмена сообщениями являются уведомления по электронной почте.
Первый шаг — включить уведомления. Перейдите в Системную консоль >> Конфигурация сайта >> Меню Уведомления и установите следующие параметры.
- Установите для параметра Включить уведомления по электронной почте значение true.
- Установите для отображаемого имени уведомления значение Нет ответа
- Укажите для параметра Адрес уведомления от что-то вроде [email .
- Укажите для адреса электронной почты службы поддержки что-то вроде [email
Следующим шагом будет включение SMTP. Перейдите в Системную консоль >> Среда >> Меню SMTP и установите следующие параметры. В нашем руководстве мы используем почтовую программу Amazon SES.
- Установите для SMTP-сервера значение {SMTP-сервер}
- Установите для порта SMTP-сервера значение 465.
- Установите для параметра Включить проверку подлинности SMTP значение true.
- Задайте для имени пользователя SMTP-сервера значение {SES-username}
- Установите для пароля SMTP-сервера значение {SES-Key}
- Установите для безопасности подключения значение TLS или STARTTLS, в зависимости от того, что принимает SMTP-сервер.
Нажмите кнопку Test Connection, чтобы подтвердить настройки SMTP.
Есть еще много настроек для настройки. После того, как вы закончите, вам нужно перезапустить сервер из терминала, чтобы изменения вступили в силу.
$ sudo systemctl restart mattermost
Заключение
На этом мы завершаем наше руководство по установке и настройке системы обмена сообщениями Mattermost Team на сервере Ubuntu 22.04. Если у вас есть какие-либо вопросы, задайте их в комментариях ниже.