Конфигурация
Где Antimatter хранит свои параметры, три способа их изменения (системная консоль, переменные окружения, amctl) и куда пишутся журналы.
Где хранятся параметры
Каждый параметр сервера имеет имя, состоящее из раздела и ключа, например ServiceSettings.SiteURL или EmailSettings.SMTPServer. Вместе они образуют одну конфигурацию, которая хранится в одном из двух мест:
- В базе данных. Файл compose сайта устанавливает
AM_CONFIGв URL подключения к PostgreSQL, поэтому конфигурация представляет собой строку в базе данных, а контейнер ничего не сохраняет на диске. Несколько серверов, использующих одну базу данных, также разделяют свою конфигурацию. - В файле. Если переменная
AM_CONFIGне задана, сервер читает файлconfig/config.json, расположенный рядом с каталогомbin/(в Docker-образе это/antimatter/config/config.json). Именно так работают архивы релизов и файлы compose для продакшена в antimatter-docker, а также пакеты .deb и .rpm, где файл находится по пути/etc/antimatter/config/config.json. Обеспечьте, чтобы этот файл мог читать только пользователь сервера: в нём хранятся пароли и ключи.
AM_CONFIG (или флаг --config команды antimatter) принимает либо путь к файлу, либо URL postgres://. Для параметров, которые вы не указали, используются значения по умолчанию.
Чтобы перенести существующую конфигурацию из файла в базу данных, выполните это на сервере, а затем запустите сервер с AM_CONFIG, установленным в тот же URL:
amctl --local config migrate /opt/antimatter/config/config.json \
"postgres://antimatter:PASSWORD@localhost:5432/antimatter?sslmode=disable&connect_timeout=10"
Переменные окружения
Любой параметр также можно задать с помощью переменной окружения. Переменные имеют приоритет над сохраненной конфигурацией, что делает их идеальными для того, что относится к развертыванию: база данных, URL сайта, файловое хранилище, порты.
Правило именования
Напишите AM_, затем раздел, затем ключ, заглавными буквами и разделенными подчеркиваниями. Слова внутри имени раздела или ключа не разделяются:
| Параметр | Переменная |
|---|---|
ServiceSettings.SiteURL | AM_SERVICESETTINGS_SITEURL |
SqlSettings.DataSource | AM_SQLSETTINGS_DATASOURCE |
EmailSettings.SMTPServer | AM_EMAILSETTINGS_SMTPSERVER |
PrivacySettings.EnableUserBlocking | AM_PRIVACYSETTINGS_ENABLEUSERBLOCKING |
- Для параметров true и false используются значения
trueилиfalse; числа — обычные числа. - Для списочных параметров значения разделяются пробелами, например
AM_SERVICESETTINGS_TRUSTEDPROXYIPHEADER="X-Forwarded-For X-Real-IP". - Параметры, являющиеся объектами, принимают JSON. Единственной такой переменной для приложений является
AM_PLUGINSETTINGS_PLUGINS, и она заменяет параметры всех приложений сразу: вместо этого задавайте параметры приложений в системной консоли или с помощьюamctl(см. ниже). - В старых установках Mattermost используется префикс
MM_, напримерMM_SQLSETTINGS_DATASOURCE. Он по-прежнему работает как устаревший псевдоним. Если заданы обе переменные, переменнаяAM_имеет приоритет.
Параметр, заданный переменной, блокируется в Системной консоли с примечанием «Этот параметр задан переменной окружения. Его нельзя изменить через Системную консоль». Он не записывается в сохранённую конфигурацию: если удалить переменную, снова вступит в силу сохранённое значение.
С Docker Compose
Добавьте переменные в блок environment: сервиса antimatter или в файл compose.override.yaml рядом с compose.yaml (Compose читает его автоматически, и он сохраняется после обновления загруженного файла):
services:
antimatter:
environment:
AM_EMAILSETTINGS_SMTPSERVER: smtp.example.com
AM_EMAILSETTINGS_SMTPPORT: "587"
AM_LOGSETTINGS_CONSOLELEVEL: INFO
Примените изменения командой docker compose up -d, которая пересоздаёт контейнер.
Переменные, используемые приложениями
Некоторые переменные не являются настройками и не имеют соответствующих полей в Системной консоли: AM_CONFIG (путь к конфигурации), а также AM_AI_ENCRYPTION_KEY и AM_AI_ENCRYPTION_PREVIOUS_KEYS — ключи, используемые для шифрования API-ключей подключений к моделям (см. ИИ).
Некоторые приложения читают собственные переменные, заданные для сервиса antimatter: приложение Calls читает AM_CALLS_* (см. Звонки и голосовые каналы), а приложение GIFs читает AM_GIFS_SERVICE_URL, AM_GIFS_API_KEY и AM_GIFS_UPLOAD_KEY (см. Встроенные приложения).
Системная консоль
Системная консоль — это административная область веб-приложения, предназначенная для системных администраторов. Чтобы открыть её, нажмите на свой аватар в верхней части боковой панели приложения и выберите пункт Системная консоль, либо перейдите по адресу https://chat.example.com/admin_console. В боковой панели консоли есть поле Поиск, которое позволяет искать по всем страницам.

Разделы консоли:
- Отчеты: статистика и журналы сервера.
- Управление пользователями: пользователи, группы, сообщества (перечислены как Команды), каналы, разрешения и делегированное администрирование.
- Системные атрибуты: пользовательские атрибуты профиля и доступ на основе атрибутов.
- Окружение: веб-сервер, база данных, файловое хранилище, прокси изображений, SMTP, push-уведомления, ограничение частоты запросов, ведение журналов, длительность сессий, мониторинг производительности.
- Настройки сайта: фирменный стиль, пользователи и команды, уведомления, сообщения, обмен файлами и другие параметры, влияющие на весь сервер.
- Аутентификация: регистрация, вход по электронной почте и паролю, MFA, AD/LDAP, SAML 2.0, OAuth 2.0, OpenID Connect и доступ для гостей.
- ИИ: подключения к моделям и встроенные функции ИИ (перефразирование, краткие изложения, автоматический перевод, синтез речи). Подробнее см. ИИ.
- Плагины: управление приложениями и параметры каждого установленного приложения.
- Интеграции: вебхуки, команды с косой чертой, аккаунты ботов, GIF, синтез речи, CORS.
- Комплаенс: хранение данных, экспорт и мониторинг комплаенса, журналы аудита, пользовательские условия использования.
- Экспериментальные: функции, которые могут измениться.
В этом руководстве параметр указывается как его путь в Системной консоли, затем его метка, а затем ключ конфигурации. Например, Системная консоль › Настройки сайта › Пользователи и команды › Включить игнорирование, блокировку и запросы сообщений (PrivacySettings.EnableUserBlocking).
Большинство изменений вступают в силу сразу после нажатия кнопки Сохранить. Для некоторых (адрес прослушивания, некоторые настройки базы данных и кэша) требуется перезапуск, и об этом указывается на странице.
Компания или сообщество
У каждого сообщества есть тип, который определяет некоторые значения по умолчанию:
- Сообщество — для публичных или хобби-сообществ: звонки в каналах отключены (общение происходит в голосовых каналах), а архивировать каналы могут только администраторы сообщества и роли, управляющие каналами.
- Компания — для корпораций или организаций: звонки в каналах включены, а архивировать канал могут его администраторы (создатель канала и те, кого он назначил администраторами).
Системная консоль › Настройки сайта › Пользователи и команды › Тип новых сообществ (TeamSettings.DefaultCommunityKind, AM_TEAMSETTINGS_DEFAULTCOMMUNITYKIND) определяет тип сообществ, создаваемых с этого момента: community (по умолчанию) или workplace. Предустановка макета, выбранная при создании сообщества, задаёт его собственный тип. Администраторы каждого сообщества могут изменить его тип позже в разделе Параметры сообщества › Каналы › Тип сообщества.
Утилита командной строки amctl
amctl управляет сервером из командной строки: пользователи, сообщества, каналы, приложения, конфигурация, задания и многое другое. Она взаимодействует с сервером одним из двух способов.
Локальный режим, на сервере
Локальный режим позволяет amctl взаимодействовать с сервером через Unix-сокет без входа в систему. Он включён в Docker-образе, а также в пакетах .deb и .rpm. На сервере, установленном из архива, включите его с помощью ServiceSettings.EnableLocalMode (AM_SERVICESETTINGS_ENABLELOCALMODE=true). По умолчанию сокет находится в /var/tmp/antimatter_local.socket (ServiceSettings.LocalModeSocketLocation).
# with Docker Compose
docker compose exec antimatter amctl --local system status
# with a release archive
sudo -u antimatter /opt/antimatter/bin/amctl --local system status
# with the .deb or .rpm package
sudo -u antimatter amctl --local system status
docker compose exec на хосте, получает полные права системного администратора.Удаленный, с учетной записью
С любого компьютера войдите с учетной записью системного администратора (или с помощью персонального токена доступа), а затем выполняйте команды для этого сервера:
amctl auth login https://chat.example.com --name prod --username admin
amctl system status
Команды конфигурации
| Команда | Назначение |
|---|---|
amctl config get ServiceSettings.SiteURL | Выводит один параметр. |
amctl config set TeamSettings.EnableOpenServer false | Изменяет один параметр. Параметры списка принимают несколько значений. |
amctl config patch settings.json | Сливает файл JSON с параметрами в конфигурацию. |
amctl config show | Выводит всю конфигурацию в формате JSON. |
amctl config edit | Открывает конфигурацию в вашем редакторе ($EDITOR). |
amctl config reset | Сбрасывает параметры к значениям по умолчанию. |
amctl config reload | Перезагружает конфигурацию из места хранения после изменений, сделанных вне сервера. |
Настройки приложений находятся в PluginSettings.Plugins.<app id>, с ключами в нижнем регистре. Например, чтобы установить URL и ключ службы приложения GIFs с Docker-хоста:
docker compose exec -T antimatter amctl --local config patch /dev/stdin <<'EOF'
{"PluginSettings": {"Plugins": {"com.antimatterchat.gifs": {
"serviceurl": "http://gifs:8080/v2",
"apikey": "the GIFS_API_KEY of your .env"
}}}}
EOF
Другие полезные команды: amctl user create, amctl user deactivate, amctl team create, amctl plugin list, amctl plugin enable, amctl system supportpacket и amctl logs. Для просмотра параметров каждой команды выполните amctl help <command>.
Журналы
Сервер записывает журнал в два места, каждое со своим уровнем (DEBUG, INFO, WARN или ERROR), который настраивается в Системная консоль › Окружение › Ведение журнала:
| Назначение | Параметры | Значения по умолчанию |
|---|---|---|
| Консоль (стандартный вывод) | Исходящие журналы в консоль (LogSettings.EnableConsole), Уровень логирования в консоли (LogSettings.ConsoleLevel), Выводит логи в консоль в JSON (LogSettings.ConsoleJson) | включено, DEBUG, JSON |
Файл antimatter.log | Исходящие журнали в файл (LogSettings.EnableFile), Файловый уровень логирования (LogSettings.FileLevel), Каталог с файлом журнала (LogSettings.FileLocation) | включено, INFO, каталог logs/ рядом с bin/ |
Файлы журнала ротируются при достижении 100 МБ, а старые архивируются.
Файл compose сайта отключает ведение журнала в файл (AM_LOGSETTINGS_ENABLEFILE=false), поэтому логи доступны только в выводе контейнера:
docker compose logs -f antimatter
docker compose logs --since 1h antimatter | grep -i error
Уровень записи в консоль по умолчанию установлен на DEBUG, что приводит к подробному выводу. На загруженном сервере установите AM_LOGSETTINGS_CONSOLELEVEL=INFO. В файле config.json из архива релиза и из пакетов это значение уже установлено на INFO. При использовании архива релиза под управлением systemd вывод в консоль направляется в журнал (journalctl -u antimatter), а в файл — в /opt/antimatter/logs/antimatter.log. В пакетах файловая запись отключена, поэтому их логи доступны только в журнале.
Если ведение журнала в файл включено, системные администраторы также могут просматривать последние записи журнала в Системная консоль › Отчеты › Журнал сервера или с помощью команды amctl logs.