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