Гид по технологиям

Установка Mattermost с PostgreSQL и Nginx на Ubuntu 16.04

5 min read DevOps Обновлено 20 Oct 2025
Mattermost на Ubuntu 16.04: PostgreSQL + Nginx
Mattermost на Ubuntu 16.04: PostgreSQL + Nginx

Краткое руководство по развёртыванию self‑hosted чата Mattermost на Ubuntu 16.04 с базой PostgreSQL и обратным прокси Nginx. Пошаговые команды, системная служба systemd, настройка SSL, тестирование и рекомендации по безопасности и резервному копированию.

Важно: пример использует Mattermost 3.4.0 и демонстрирует базовую продакшн‑настройку; для актуальной версии проверьте официальную документацию.

Что нужно знать заранее

  • Mattermost — open source система обмена сообщениями, написана на Go и React. Это альтернатива Slack/hipchat для self‑hosted инсталляций. Краткое определение: это сервер + веб/мобильные клиенты для командной коммуникации.
  • В этом руководстве используется Ubuntu 16.04 (64‑бит), PostgreSQL в качестве СУБД и Nginx как обратный прокси с самоподписанным SSL.

Требования

  • Сервер с Ubuntu 16.04 — 64‑бит.
  • Права root или sudo.
  • Доменное имя, указывающее на ваш сервер (на примерах — mattermost.mydomain.com).

Шаг 1 — Установка и настройка PostgreSQL

Mattermost поддерживает MySQL и PostgreSQL. В этом примере используем PostgreSQL.

Подключитесь к серверу по SSH и обновите репозитории:

ssh [email protected]
sudo apt-get update

Установите PostgreSQL:

sudo apt-get install postgresql postgresql-contrib

Переключитесь на пользователя postgres и войдите в psql:

su - postgres
psql

Смените пароль у системного пользователя postgres (в psql):

\password postgres
Enter new password:

Создайте базу данных и пользователя для Mattermost. В примере используются имена mattermostdb, matteruser и matterpassword — обязательно замените на безопасный пароль:

CREATE DATABASE mattermostdb;
CREATE USER matteruser WITH PASSWORD 'matterpassword';
GRANT ALL PRIVILEGES ON DATABASE mattermostdb TO matteruser;
\q

Настройка PostgreSQL для Mattermost

Совет: храните резервные копии дампов базы командой pg_dump и тестируйте восстановление.

Шаг 2 — Установка Mattermost

Мы запустим Mattermost от непользовательского системного аккаунта matter.

Создайте пользователя и задайте пароль:

useradd -m -s /bin/bash matter
passwd matter

Переключитесь на этого пользователя и загрузите релиз Mattermost (в примере 3.4.0):

su - matter
wget https://releases.mattermost.com/3.4.0/mattermost-3.4.0-linux-amd64.tar.gz

Распакуйте архив и перейдите в каталог:

tar -xzvf mattermost-3.4.0-linux-amd64.tar.gz
cd mattermost/

Создайте каталог для файлов данных и откройте конфигурационный файл:

mkdir data/
vim config/config.json

В блоке ServiceSettings укажите, чтобы Mattermost слушал локальный адрес (мы используем обратный прокси):

"ListenAddress": "127.0.0.1:8065",

В блоке SqlSettings замените драйвер и строку подключения на PostgreSQL (замените учётные данные на свои):

"DriverName": "postgres",
"DataSource": "postgres://matteruser:[email protected]:5432/mattermostdb?sslmode=disable&connect_timeout=10",

Примечание: matteruser = имя пользователя PostgreSQL; matterpassword = пароль; mattermostdb = имя базы.

Сохраните файл и запустите платформу из каталога bin:

cd bin/
./platform

После запуска сервис будет доступен локально по адресу 127.0.0.1:8065. Для остановки — Ctrl+C.

Установка Mattermost на Ubuntu 16.04

Шаг 3 — Настройка systemd‑сервиса для Mattermost

Создайте unit‑файл systemd чтобы Mattermost автоматически запускался как сервис.

cd /etc/systemd/system/
vim mattermost.service

Вставьте следующий конфигурационный блок:

[Unit]
Description=Mattermost is an open source, self-hosted Slack-alternative
After=syslog.target network.target

[Service]
Type=simple
User=matter
Group=matter
ExecStart=/home/matter/mattermost/bin/platform
PrivateTmp=yes
WorkingDirectory=/home/matter/mattermost
Restart=always
RestartSec=30
LimitNOFILE=49152

[Install]
WantedBy=multi-user.target

Сохраните и запустите сервис:

systemctl daemon-reload
systemctl start mattermost

Проверьте статус и порты:

netstat -plntu
systemctl status mattermost

Запущенная служба Mattermost

Совет: используйте journalctl -u mattermost -f для просмотра логов в реальном времени.

Шаг 4 — Установка и настройка Nginx как обратного прокси

Установите Nginx:

sudo apt-get install nginx

Создайте каталог для сертификатов и сгенерируйте самоподписанный сертификат (для тестовой установки):

cd /etc/nginx/
mkdir ssl/; cd ssl/
openssl req -new -x509 -days 365 -nodes -out /etc/nginx/ssl/mattermost.crt -keyout /etc/nginx/ssl/mattermost.key
chmod 400 mattermost.key

Создайте виртуальный хост в /etc/nginx/sites-available/mattermost:

cd /etc/nginx/sites-available/
vim mattermost

Вставьте конфигурацию (замените server_name на ваш домен):

server {
   listen         80;
   server_name    mattermost.mydomain.com;
   return         301 https://$server_name$request_uri;
}

server {
   listen 443 ssl;
   server_name mattermost.mydomain.com;

   ssl on;
   ssl_certificate /etc/nginx/ssl/mattermost.crt;
   ssl_certificate_key /etc/nginx/ssl/mattermost.key;
   ssl_session_timeout 5m;
   ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
   ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
   ssl_prefer_server_ciphers on;
   ssl_session_cache shared:SSL:10m;

   location / {
      gzip off;
      proxy_set_header X-Forwarded-Ssl on;
      client_max_body_size 50M;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
      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_pass http://127.0.0.1:8065;
   }
}

Активируйте сайт и перезапустите Nginx:

ln -s /etc/nginx/sites-available/mattermost /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginx

Примечание по SSL: для production используйте сертификаты от CA (Let’s Encrypt или платные). Самоподписанные сертификаты подходят только для тестирования.

Шаг 5 — Тестирование и первичная конфигурация

Откройте браузер и перейдите по домену, например https://mattermost.mydomain.com. Вы будете перенаправлены на HTTPS. Создайте первую учётную запись — кнопка Create Account в интерфейсе.

Создание учётной записи в Mattermost

Далее: создание команды, доступ в System Console для администрирования и завершение настройки.

Создание команды или доступ в консоль администратора

Консоль администратора Mattermost

Создание команды в Mattermost

Панель команды Mattermost

Чат команды в Mattermost

Mattermost с PostgreSQL и Nginx на Ubuntu 16.04 установлен успешно.

Отладка и частые проблемы

  • Служба не стартует: проверьте journalctl -u mattermost и права на каталоги в /home/matter/mattermost (user matter должен иметь доступ).
  • Nginx выдаёт 502: убедитесь, что Mattermost слушает 127.0.0.1:8065 и systemd‑сервис запущен.
  • Проблемы с SSL: при самоподписанном сертификате браузер будет предупреждать; используйте Let’s Encrypt для production.
  • Ошибки подключения к БД: проверьте строку DataSource в config.json и доступность PostgreSQL из локальной сети.

Безопасность и рекомендованные меры

  • Сертификаты: используйте проверенные CA. Let’s Encrypt — бесплатный и автоматизируемый вариант.
  • Брандмауэр: закройте внешние порты 8065 (разрешите доступ только из localhost), откройте 80/443 для Nginx.
  • Права файлов: убедитесь, что владелец каталога Mattermost — пользователь matter.
  • Резервное копирование: делайте регулярные бэкапы базы (pg_dump) и каталога data/ (файлы, аватарки и т.п.). Тестируйте восстановление.
  • Шифрование на диске: для хранения пользовательских файлов и бэкапов рассмотрите шифрование на уровне файловой системы.
  • Логи и мониторинг: собирайте логи (systemd + Nginx) и настраивайте мониторинг доступности и задержки.

Миграция, обновления и совместимость

  • Перед обновлением Mattermost делайте бэкап БД и каталога data/.
  • Проверяйте заметки релизов Mattermost на предмет несовместимых изменений в схеме БД.
  • Для более современной и удобной работы в production рассмотрите контейнерную развёртку (Docker, Kubernetes) и использование внешних хранилищ файлов.

Альтернативные подходы

  • MySQL вместо PostgreSQL — Mattermost поддерживает оба драйвера.
  • Docker‑контейнеры — упрощают обновления и миграции, особенно в контейнеризированных окружениях.
  • Использование внешних CDN и S3‑совместимых хранилищ для файлов и аватаров уменьшит нагрузку и упростит масштабирование.

Роли и чеклист перед запуском в production

Администратор/DevOps:

  • Проверить работу systemd‑сервиса и автозапуск.
  • Настроить и протестировать резервное копирование БД.
  • Настроить Let’s Encrypt и автоматическое обновление сертификатов.
  • Настроить firewall (UFW/iptables) — закрыть порт 8065 извне.
  • Включить мониторинг (uptime, SLI/SLO: доступность, латентность ответов).

Системный инженер:

  • Убедиться в корректных правах на файловой системе.
  • Настроить лог‑ротацию для Nginx и системных логов.
  • Тестировать восстановление из бэкапа.

Администратор Mattermost:

  • Создать первую команду и назначить администраторов.
  • Настроить правила хранения и экспорта данных для соответствия локальным требованиям GDPR.

Критерии приёмки

  • Mattermost доступен по HTTPS по доменному имени.
  • Вход и создание команды работают, можно отправлять сообщения и загружать файлы до 50 MB.
  • Резервное копирование и восстановление отрабатывают успешно в тесте.
  • Автоматический запуск сервиса systemd после перезагрузки сервера.

Шаблоны команд для проверки работоспособности

Проверка статуса сервиса:

systemctl status mattermost
journalctl -u mattermost -n 200 --no-pager

Проверка слушающих портов:

netstat -plntu | grep 8065
ss -plnt | grep 8065

Проверка Nginx конфигурации:

nginx -t
systemctl restart nginx

Краткое резюме

  • Mattermost можно развернуть на Ubuntu 16.04 с PostgreSQL и Nginx за несколько шагов: установить БД, настроить config.json, создать systemd‑сервис и настроить обратный прокси с SSL.
  • Для production обязательно использовать CA‑сертификаты, настроить бэкапы и мониторинг.

Ресурсы

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как исправить Charging On Hold на iPhone
Аккумулятор

Как исправить Charging On Hold на iPhone

Соглашение по Siri: кто имеет право и как подать иск
Право

Соглашение по Siri: кто имеет право и как подать иск

Как установить GIF как фото профиля Facebook
Социальные сети

Как установить GIF как фото профиля Facebook

Как исправить Error Code: Centipede в Destiny 2
Игры

Как исправить Error Code: Centipede в Destiny 2

Как скачать изображения из Google Docs
Инструкции

Как скачать изображения из Google Docs

Сохранить Snapchat Memories бесплатно
Социальные сети

Сохранить Snapchat Memories бесплатно