MatterMost Server

Ubuntu 20.04
Вводные

Имеем: сервер с чистым Ubuntu server 20.04 и локальным адресом 192.168.66.39
Установленный на отдельной тачке Nginx (будет проксёй)
Пароль рута на mysql - jkhgf^559Graslkjudsfa98%
Домен mattermost.yourdomain.ru
Меняем под свои нужды
На внутреннем DNS-сервере прописываем соответствие mattermost.yourdomain.ru адресу 192.168.66.250

Настройка сервера Mattermost
sudo apt update && sudo apt install -y htop vim mc && sudo apt dist-upgrade -y && sudo apt autoremove && sudo reboot now
sudo apt install mysql-server -y
sudo mysql_secure_installation
sudo su
mysql -u root -p
create user 'mmuser'@'192.168.66.39' identified by 'jkhgf^559Graslkjudsfa98%';
create database mattermost;
grant all privileges on mattermost.* to 'mmuser'@'192.168.66.39';
quit
exit

комментируем строку bind-address = 127.0.0.1 решеткой

sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

wget https://releases.mattermost.com/5.28.1/mattermost-5.28.1-linux-amd64.tar.gz
tar -xvzf mattermost*.gz && sudo mv mattermost /opt && sudo mkdir /opt/mattermost/data
sudo useradd --system --user-group mattermost
sudo chown -R mattermost:mattermost /opt/mattermost
sudo chmod -R g+w /opt/mattermost

Меняем
"DriverName" на "mysql"
"SiteURL" на "https://mattermost.yourdomain.ru"
В строке "DataSource" значения вписываем свои: mmuser:password и host-name-or-IP
Также убеждаемся, что имя БД mattermost, а не mattermost_test

vi /opt/mattermost/config/config.json

У меня получилось

	"DataSource": "mmuser:jkhgf^559Graslkjudsfa98%@tcp(192.168.66.39:3306)/mattermost?charset=utf8mb4,utf8\u0026readTimeout=30s\u0026writeTimeout=30s",
	"SiteURL" "https://mattermost.yourdomain.ru"
cd /opt/mattermost && sudo -u mattermost ./bin/mattermost

После запуска сервера будет отображен лог и текст, говорящий о том, что запущен на порту 8065. Останавливаем CTRL+C в терминале.

Меняем содержимое mattermost.service

sudo vi /lib/systemd/system/mattermost.service
[Unit]
Description=Mattermost
After=network.target
After=mysql.service
BindsTo=mysql.service
[Service]
Type=notify
ExecStart=/opt/mattermost/bin/mattermost
TimeoutStartSec=3600
Restart=always
RestartSec=10
WorkingDirectory=/opt/mattermost
User=mattermost
Group=mattermost
LimitNOFILE=49152
[Install]
WantedBy=mysql.service
sudo systemctl daemon-reload && sudo systemctl enable mattermost.service && sudo systemctl start mattermost.service

Проверяем, что сервер запущен:

curl http://localhost:8065

Должно отобразиться содержимое HTML-файла

Дальше идём по ссылке http://192.168.66.39:8065 и настраиваем сервер по мануалам от производителя

Настройка Nginx

Иду на тачку, где установлен Nginx - 192.168.66.250

sudo vi /etc/nginx/conf.d/mattermost.conf

вписываю туда

upstream backend {
 server 192.168.66.39:8065;
}
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.yourdomain.ru;
 }

После в терминале

certbot --nginx

Затем опять

sudo vi /etc/nginx/conf.d/mattermost.conf

И заменяю содержимое на

upstream backend {
 server 192.168.66.39:8065;
}

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.yourdomain.ru;
 return 301 https://$server_name$request_uri;
}

server {
 listen 443 ssl http2;
 server_name mattermost.yourdomain.ru;
 ssl on;
 ssl_certificate /etc/letsencrypt/live/mattermost.yourdomain.ru/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/mattermost.yourdomain.ru/privkey.pem;
 ssl_session_timeout 5m;
 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
 ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
 ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
 ssl_prefer_server_ciphers on;
 ssl_session_cache shared:SSL:10m;

 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 $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_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_pass http://backend;
 }
}

Fuse

Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript.