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

Краткое руководство по развёртыванию 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
Совет: храните резервные копии дампов базы командой 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.
Шаг 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
Совет: используйте 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 в интерфейсе.
Далее: создание команды, доступ в System Console для администрирования и завершение настройки.
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‑сертификаты, настроить бэкапы и мониторинг.
Ресурсы
Похожие материалы

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

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

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

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

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