Konfiguracja

Gdzie Antimatter przechowuje ustawienia, trzy sposoby ich zmiany (Konsola systemu, zmienne środowiskowe, amctl) oraz lokalizacja dzienników.

Lokalizacja ustawień

Każde ustawienie serwera ma nazwę składającą się z sekcji i klucza, np. ServiceSettings.SiteURL lub EmailSettings.SMTPServer. Razem tworzą one konfigurację, przechowywaną w jednym z dwóch miejsc:

  • W bazie danych. Plik compose witryny ustawia AM_CONFIG na adres URL połączenia z PostgreSQL, dzięki czemu konfiguracja jest wierszem w bazie danych, a kontener nie przechowuje niczego na dysku. Kilka serwerów współdzielących jedną bazę danych współdzieli również swoją konfigurację.
  • W pliku. Bez AM_CONFIG serwer odczytuje config/config.json znajdujący się obok katalogu bin/ (w obrazie Docker to /antimatter/config/config.json). Tak działają archiwa wydawnicze oraz produkcyjne pliki compose z antimatter-docker, a także pakiety .deb i .rpm, których plik znajduje się pod /etc/antimatter/config/config.json. Upewnij się, że ten plik jest czytelny wyłącznie dla użytkownika serwera: zawiera hasła i klucze.

AM_CONFIG (lub flaga --config polecenia antimatter) akceptuje ścieżkę do pliku lub adres URL postgres://. Ustawienia, których nie podasz, przyjmą wartość domyślną.

Aby przenieść istniejącą konfigurację z pliku do bazy danych, uruchom na serwerze poniższe polecenie, a następnie uruchom serwer z ustawioną zmienną AM_CONFIG na ten sam adres URL:

amctl --local config migrate /opt/antimatter/config/config.json \
    "postgres://antimatter:PASSWORD@localhost:5432/antimatter?sslmode=disable&connect_timeout=10"

Zmienne środowiskowe

Każde ustawienie można również podać jako zmienną środowiskową. Zmienne mają pierwszeństwo przed zapisaną konfiguracją, co czyni je idealnymi do elementów należących do wdrożenia: bazy danych, adresu URL witryny, magazynu plików i portów.

Zasady nazewnictwa

Napisz AM_, następnie sekcję, a następnie klucz, wielkimi literami, oddzielone podkreśleniami. Słowa wewnątrz nazwy sekcji lub klucza nie są oddzielane:

UstawienieZmienna
ServiceSettings.SiteURLAM_SERVICESETTINGS_SITEURL
SqlSettings.DataSourceAM_SQLSETTINGS_DATASOURCE
EmailSettings.SMTPServerAM_EMAILSETTINGS_SMTPSERVER
PrivacySettings.EnableUserBlockingAM_PRIVACYSETTINGS_ENABLEUSERBLOCKING
  • Ustawienia typu prawda/fałsz przyjmują true lub false; liczby to zwykłe liczby.
  • Ustawienia listowe przyjmują wartości oddzielone spacjami, np. AM_SERVICESETTINGS_TRUSTEDPROXYIPHEADER="X-Forwarded-For X-Real-IP".
  • Ustawienia będące obiektami przyjmują JSON. Jedyną taką zmienną dla aplikacji jest AM_PLUGINSETTINGS_PLUGINS, która zastępuje ustawienia wszystkich aplikacji naraz: ustawiaj konfigurację aplikacji w Konsoli systemu lub za pomocą amctl (patrz niżej).
  • Starsze instalacje Mattermosta używają prefiksu MM_, na przykład MM_SQLSETTINGS_DATASOURCE. Nadal działa jako alias legacy. Jeśli ustawione są obie zmienne, ma pierwszeństwo zmienna AM_.

Ustawienie zdefiniowane przez zmienną jest zablokowane w Konsoli systemu, z adnotacją „To ustawienie zostało skonfigurowane za pomocą zmiennej środowiskowej. Nie można go zmienić w Konsoli systemu.” Nie jest zapisywane w trwałej konfiguracji: po usunięciu zmiennej znów obowiązuje zapisana wartość.

Z Docker Compose

Dodaj zmienne w sekcji environment: usługi antimatter lub w pliku compose.override.yaml obok compose.yaml (Compose odczytuje go automatycznie, a on przetrwa aktualizacje pobranego pliku):

services:
  antimatter:
    environment:
      AM_EMAILSETTINGS_SMTPSERVER: smtp.example.com
      AM_EMAILSETTINGS_SMTPPORT: "587"
      AM_LOGSETTINGS_CONSOLELEVEL: INFO

Zastosuj zmiany poleceniem docker compose up -d, które tworzy kontener od nowa.

Zmienne odczytywane przez aplikacje

Kilka zmiennych nie jest ustawieniami i nie ma odpowiednika w polach Konsoli systemu: AM_CONFIG (miejsce przechowywania konfiguracji) oraz AM_AI_ENCRYPTION_KEY i AM_AI_ENCRYPTION_PREVIOUS_KEYS, czyli klucz szyfrujący klucze API połączeń z modelami (patrz AI).

Niektóre aplikacje odczytują własne zmienne, ustawione w usłudze antimatter: aplikacja Calls odczytuje AM_CALLS_* (patrz Rozmowy i głos), a aplikacja GIFs odczytuje AM_GIFS_SERVICE_URL, AM_GIFS_API_KEY i AM_GIFS_UPLOAD_KEY (patrz Wbudowane aplikacje).

Konsola systemu

Konsola systemu to obszar administracyjny aplikacji internetowej, przeznaczony dla administratorów systemu. Aby ją otworzyć, kliknij swoje zdjęcie na górze paska aplikacji i wybierz Konsola systemu lub przejdź do https://chat.example.com/admin_console. Jej pasek boczny zawiera pole Wyszukaj ustawienia, które przeszukuje wszystkie strony.

The System Console, with its sidebar of sections on the left and the SAML 2.0 settings page on the right.
Konsola systemu. Pasek boczny grupuje strony w sekcje, takie jak Raportowanie, Zarządzanie użytkownikiem i Środowisko.

Jej sekcje to:

  • Raportowanie: statystyki i dzienniki serwera.
  • Zarządzanie użytkownikiem: użytkownicy, grupy, społeczności (wyświetlane jako zespoły), kanały, uprawnienia i delegowana administracja.
  • Atrybuty systemu: niestandardowe atrybuty profilu i dostęp oparty na atrybutach.
  • Środowisko: serwer webowy, baza danych, magazyn plików, proxy obrazów, SMTP, powiadomienia push, limitowanie przepustowości, logowanie, długość sesji, monitorowanie wydajności.
  • Konfiguracja strony: identyfikacja wizualna, użytkownicy i zespoły, powiadomienia, posty, udostępnianie plików i inne zachowania na poziomie serwera.
  • Autoryzacja: rejestracja, logowanie e-mailem i hasłem, MFA, AD/LDAP, SAML 2.0, OAuth 2.0, OpenID Connect i dostęp dla gości.
  • AI: połączenia z modelami i wbudowane funkcje AI (przepisywanie, podsumowania, automatyczne tłumaczenie, konwersja tekstu na mowę). Patrz AI.
  • Wtyczki: zarządzanie aplikacjami i ustawienia każdej zainstalowanej aplikacji.
  • Integracje: webhooki, polecenia z ukośnikiem, konta botów, GIFy, tekst do mowy, CORS.
  • Zgodność: przechowywanie danych, eksport zgodności i monitorowanie, dzienniki audytu, niestandardowe warunki świadczenia usług.
  • Eksperymentalne: funkcje, które mogą ulec zmianie.

W tym przewodniku ustawienie jest zapisane jako jego ścieżka w Konsoli systemu, a następnie jego etykieta, a następnie klucz konfiguracji, na przykład Konsola systemu › Konfiguracja strony › Użytkownicy i zespoły › Włącz ignorowanie, blokowanie i prośby o wiadomość (PrivacySettings.EnableUserBlocking).

Większość zmian ma zastosowanie od razu po kliknięciu Zapisz. Kilka (adres nasłuchiwania, niektóre ustawienia bazy danych i pamięci podręcznej) wymaga ponownego uruchomienia, a strona o tym informuje.

Miejsce pracy lub Społeczność

Każda Społeczność ma typ, który ustawia niektóre z jej wartości domyślnych:

  • Społeczność, dla publicznej lub hobbystycznej społeczności: rozmowy są wyłączone w jej kanałach (użytkownicy rozmawiają w kanałach głosowych), a kanały archiwizują tylko jej administratorzy oraz role zarządzające kanałami.
  • Miejsce pracy, dla firmy lub organizacji: rozmowy są włączone w jej kanałach, a kanały archiwizują również ich administratorzy (osoba, która je utworzyła, oraz osoby, którym nadano uprawnienia administratora).

Konsola systemu › Konfiguracja strony › Użytkownicy i zespoły › Typ nowych społeczności (TeamSettings.DefaultCommunityKind, AM_TEAMSETTINGS_DEFAULTCOMMUNITYKIND) to typ społeczności tworzonych od tej pory: community (domyślnie) lub workplace. Preset układu wybrany podczas tworzenia społeczności ustawia jej własny typ. Administratorzy każdej społeczności mogą później zmienić jej typ w Ustawienia zespołu › Kanały › Typ społeczności.

W przypadku firmy ustaw to na Miejsce pracy przed utworzeniem pierwszej społeczności lub przed aktualizacją istniejącego serwera do wersji 0.9.0: aktualizacja nadaje każdej istniejącej społeczności wartość, jaką ustawienie ma w tym momencie (patrz Aktualizacja do 0.9.0).

Narzędzie wiersza poleceń amctl

amctl zarządza serwerem z wiersza poleceń: użytkownicy, społeczności, kanały, aplikacje, konfiguracja, zadania i wiele więcej. Komunikuje się z serwerem na jeden z dwóch sposobów.

Tryb lokalny, na serwerze

Tryb lokalny pozwala amctl komunikować się z serwerem przez gniazdo Unix, bez logowania. Jest on włączony w obrazie Docker oraz w pakietach .deb i .rpm. Na serwerze zainstalowanym z archiwum włącz go za pomocą ServiceSettings.EnableLocalMode (AM_SERVICESETTINGS_ENABLELOCALMODE=true). Gniazdo domyślnie znajduje się pod /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
Każdy, kto może użyć gniazda lub uruchomić docker compose exec na hoście, ma pełne uprawnienia administratora systemu.

Zdalnie, z kontem

Z dowolnej maszyny, zaloguj się na konto administratora systemu (lub osobisty token dostępu), a następnie wykonaj polecenia na tym serwerze:

amctl auth login https://chat.example.com --name prod --username admin
amctl system status

Polecenia konfiguracji

PolecenieOpis
amctl config get ServiceSettings.SiteURLWyświetla jedno ustawienie.
amctl config set TeamSettings.EnableOpenServer falseZmienia jedno ustawienie. Ustawienia listy przyjmują kilka wartości.
amctl config patch settings.jsonScal plik JSON z ustawieniami z konfiguracją.
amctl config showWyświetla całą konfigurację jako JSON.
amctl config editOtwiera konfigurację w edytorze ($EDITOR).
amctl config resetResetuje ustawienia do wartości domyślnych.
amctl config reloadPrzeładowuje konfigurację z miejsca, w którym jest przechowywana, po zmianie wykonanej poza serwerem.

Ustawienia aplikacji znajdują się pod PluginSettings.Plugins.<app id>, z kluczami w małych literach. Na przykład, aby ustawić adres URL usługi i klucz aplikacji GIFs z hosta 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

Inne przydatne polecenia: amctl user create, amctl user deactivate, amctl team create, amctl plugin list, amctl plugin enable, amctl system supportpacket i amctl logs. Uruchom amctl help <command> dla opcji każdego z nich.

Dzienniki

Serwer zapisuje logi w dwóch miejscach, każde z własnym poziomem (DEBUG, INFO, WARN lub ERROR), konfigurowanym w Konsola systemu › Środowisko › Ustawienia logów:

Miejsce zapisuUstawieniaDomyślne wartości
Konsola (standardowe wyjście)Wysyłaj logi do konsoli (LogSettings.EnableConsole), Poziom logowania konsoli (LogSettings.ConsoleLevel), Wyprowadź logi konsoli jako JSON (LogSettings.ConsoleJson)włączone, DEBUG, JSON
Plik, antimatter.logWypisuje logi do pliku (LogSettings.EnableFile), Poziom Pliku Logów (LogSettings.FileLevel), Katalog z plikami logów (LogSettings.FileLocation)włączone, INFO, katalog logs/ obok bin/

Pliki logów są rotowane przy rozmiarze 100 MB, a starsze są kompresowane.

Plik compose witryny wyłącza logowanie do pliku (AM_LOGSETTINGS_ENABLEFILE=false), więc logi są dostępne wyłącznie w wyjściu kontenera:

docker compose logs -f antimatter
docker compose logs --since 1h antimatter | grep -i error

Poziom konsoli domyślnie wynosi DEBUG, co jest bardzo szczegółowe. Na zajętym serwerze ustaw AM_LOGSETTINGS_CONSOLELEVEL=INFO. Plik config.json w archiwum wydania oraz w pakietach jest już ustawiony na INFO. W przypadku archiwum wydania pod systemd, wyjście konsoli trafia do dziennika (journalctl -u antimatter), a do pliku /opt/antimatter/logs/antimatter.log. Pakiety wyłączają logowanie do pliku, więc ich logi znajdują się wyłącznie w dzienniku.

Gdy logowanie do pliku jest włączone, administratorzy systemu mogą również odczytać najnowsze linie logów w Konsola systemu › Raportowanie › Logi serwera lub za pomocą polecenia amctl logs.