Налаштування
Де Antimatter зберігає свої налаштування, три способи їх зміни (системна консоль, змінні середовища, amctl) та місце зберігання журналів.
Де зберігаються налаштування
Кожне налаштування сервера має назву, що складається з розділу та ключа, наприклад ServiceSettings.SiteURL або EmailSettings.SMTPServer. Разом вони утворюють єдину конфігурацію, яка зберігається в одному з двох місць:
- У базі даних. Файл compose сайту встановлює
AM_CONFIGдо URL з’єднання з PostgreSQL, тому конфігурація є рядком у базі даних, а контейнер нічого не зберігає на диску. Кілька серверів, які використовують одну базу даних, також ділять конфігурацію. - У файлі. Без
AM_CONFIGсервер читаєconfig/config.jsonпоруч із каталогомbin/(/antimatter/config/config.jsonв образі Docker). Так працюють архів із релізом та продуктивні 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; числа — звичайні числа. - Налаштування списків приймають значення, розділені пробілами, наприклад
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. Пакети вимикають ведення журналу в файл, тому їхні журнали зберігаються лише в journal.
Якщо ведення журналу у файл увімкнено, системні адміністратори також можуть переглянути останні рядки журналу в Системна консоль › Звітність › Журнали серверу або за допомогою amctl logs.