Поиск по сайту:

Как установить систему обмена сообщениями Mattermost Team на Ubuntu 22.04


Это руководство существует для этих версий ОС

  • Ubuntu 22.04 (Jammy Jellyfish)
  • Ubuntu 20.04 (Focal Fossa)

На этой странице

  1. Предпосылки
  2. Шаг 1. Настройка брандмауэра
  3. Шаг 2. Установите PostgreSQL
  4. Шаг 3. Настройка PostgreSQL
  5. Шаг 4. Загрузите Mattermost
  6. Шаг 5. Создайте системного пользователя для Mattermost и настройте разрешения
  7. Шаг 6. Создайте файл модуля Systemd
  8. Шаг 7. Установите Nginx
  9. Шаг 8. Установите SSL
  10. Шаг 9. Настройка Nginx
  11. Шаг 10. Доступ к серверу Mattermost
  12. Шаг 11. Настройка сервера Mattermost
    1. Настройка уведомлений по электронной почте

    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. Если у вас есть какие-либо вопросы, задайте их в комментариях ниже.