Налаштування

Де 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.SiteURLAM_SERVICESETTINGS_SITEURL
SqlSettings.DataSourceAM_SQLSETTINGS_DATASOURCE
EmailSettings.SMTPServerAM_EMAILSETTINGS_SMTPSERVER
PrivacySettings.EnableUserBlockingAM_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. У її бічній панелі є поле Знайти налаштування, яке шукає по всіх сторінках.

The System Console, with its sidebar of sections on the left and the SAML 2.0 settings page on the right.
Системна консоль. Бічна панель групує сторінки за розділами, наприклад Звітність, Керування користувачами та Середовище.

Її розділи:

  • Звітність: статистика та журнали сервера.
  • Керування користувачами: користувачі, групи, спільноти (перелічені як Команди), канали, дозволи та делеговане адміністрування.
  • Системні атрибути: користувацькі атрибути профілю та доступ на основі атрибутів.
  • Середовище: веб-сервер, база даних, сховище файлів, проксі-сервер зображень, SMTP, push-сповіщення, обмеження частоти, журналювання, тривалість сесій, моніторинг продуктивності.
  • Конфігурація сайту: брендування, користувачі та команди, сповіщення, публікації, спільне використання файлів та інші загальносерверні параметри.
  • Аутентифікація: реєстрація, вхід за електронною поштою та паролем, MFA, AD/LDAP, SAML 2.0, OAuth 2.0, OpenID Connect та доступ гостей.
  • Штучний інтелект: з’єднання з моделями та вбудовані функції ШІ (перефразування, зведення, автоматичний переклад, перетворення тексту на мовлення). Див. Штучний інтелект.
  • Плагіни: керування додатками та налаштування кожного встановленого додатка.
  • Інтеграції: вебхуки, команди зі скісною рискою, акаунти ботів, GIF, синтез мовлення, CORS.
  • Відповідність: зберігання даних, експорт для відповідності та моніторинг, журнал аудиту, власні умови надання послуг.
  • Експериментальний: функції, які можуть змінитися.

У цьому посібнику налаштування подаються у вигляді шляху в системній консолі, потім його мітки, а потім ключа конфігурації. Наприклад, Системна консоль › Конфігурація сайту › Користувачі та команди › Увімкнути ігнорування, блокування та запити на повідомлення (PrivacySettings.EnableUserBlocking).

Більшість змін застосовуються одразу після натискання Зберегти. Деякі (адреса прослуховування, деякі налаштування бази даних і кешу) потребують перезапуску, і про це сказано на сторінці.

Робоче середовище або спільнота

Кожна спільнота має тип, який визначає деякі її значення за замовчуванням:

  • Спільнота — для публічної або хобі-спільноти: дзвінки вимкнені в її каналах (люди спілкуються в голосових каналах), а архівувати канали можуть лише її адміністратори та ролі, що керують каналами.
  • Робоче середовище — для компанії або організації: дзвінки увімкнені в її каналах, а архівувати їх можуть також адміністратори каналу (той, хто його створив, і ті, кого він призначив адміністраторами).

Системна консоль › Конфігурація сайту › Користувачі та команди › Тип нових спільнот (TeamSettings.DefaultCommunityKind, AM_TEAMSETTINGS_DEFAULTCOMMUNITYKIND) — це тип спільнот, що створюватимуться з цього моменту: community (за замовчуванням) або workplace. Пресет макета, обраний під час створення спільноти, встановлює її власний тип. Адміністратори кожної спільноти можуть змінити її тип пізніше в Налаштування команди › Канали › Тип спільноти.

Для компанії встановіть значення Робоче середовище до створення першої спільноти або до оновлення наявного сервера до 0.9.0: під час оновлення кожна наявна спільнота отримає значення, яке має цей параметр у той момент (див. Оновлення до 0.9.0).

Інструмент командного рядка 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.