Konfigurace

Kde Antimatter ukládá svá nastavení, tři způsoby, jak je změnit (systémová konzole, proměnné prostředí, amctl) a kam se zapisují protokoly.

Kde se nacházejí nastavení

Každé nastavení serveru má název složený z sekce a klíče, např. ServiceSettings.SiteURL nebo EmailSettings.SMTPServer. Společně tvoří jednu konfiguraci, která je uložena na jednom z dvou míst:

  • V databázi. Soubor compose webu nastaví AM_CONFIG na URL připojení k PostgreSQL, takže je konfigurace řádkem v databázi a kontejner nic neukládá na disk. Více serverů sdílejících jednu databázi sdílí i svou konfiguraci.
  • V souboru. Bez AM_CONFIG čte server config/config.json vedle svého adresáře bin/ (v Docker obrazu /antimatter/config/config.json). Takto fungují instalační archivy a produkční compose soubory antimatter-docker, stejně jako balíčky .deb a .rpm, jejichž soubor je /etc/antimatter/config/config.json. Tento soubor nechte čitelný pouze uživatelem serveru: obsahuje hesla a klíče.

AM_CONFIG (nebo parametr --config příkazu antimatter) přijímá buď cestu k souboru, nebo URL postgres://. Nastavení, která neudáte, nabudou výchozí hodnoty.

Pokud chcete přenést existující konfiguraci ze souboru do databáze, spusťte na serveru tento příkaz a poté spustte server s AM_CONFIG nastaveným na stejnou URL:

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

Proměnné prostředí

Jakékoliv nastavení lze zadat i jako proměnnou prostředí. Proměnné mají přednost před uloženou konfigurací, což je vhodné pro to, co patří ke nasazení: databáze, URL webu, úložiště souborů, porty.

Pravidlo pro pojmenování

Napište AM_, pak sekci, pak klíč, velkými písmeny a oddělené podtržítky. Slova uvnitř názvu sekce nebo klíče se nenechávají oddělená:

NastaveníProměnná
ServiceSettings.SiteURLAM_SERVICESETTINGS_SITEURL
SqlSettings.DataSourceAM_SQLSETTINGS_DATASOURCE
EmailSettings.SMTPServerAM_EMAILSETTINGS_SMTPSERVER
PrivacySettings.EnableUserBlockingAM_PRIVACYSETTINGS_ENABLEUSERBLOCKING
  • Nastavení typu pravda/nepravda přijímají true nebo false; čísla jsou obyčejná čísla.
  • Nastavení typu seznam přijímá hodnoty oddělené mezerami, např. AM_SERVICESETTINGS_TRUSTEDPROXYIPHEADER="X-Forwarded-For X-Real-IP".
  • Nastavení, která jsou objekty, přijímají JSON. Jedinou takovou proměnnou pro aplikace je AM_PLUGINSETTINGS_PLUGINS a nahrazuje nastavení všech aplikací najednou: nastavení aplikací nastavte raději v systémové konzoli nebo pomocí amctl (viz níže).
  • Starší instalace Mattermost používají předponu MM_, například MM_SQLSETTINGS_DATASOURCE. Stále funguje jako starší alias. Pokud jsou nastaveny obě, má přednost proměnná AM_.

Nastavení zadané proměnnou je v Systémové konzoli uzamčené, s poznámkou „Toto nastavení bylo provedeno pomocí proměnného prostředí. Nelze ho změnit přes Systémovou konzoli.“ Není zapisováno do uloženého nastavení: odeberte proměnnou a znovu se použije uložená hodnota.

S Docker Compose

Přidejte proměnné pod environment: služby antimatter, nebo do souboru compose.override.yaml vedle compose.yaml (Compose ho načte automaticky a přežije aktualizace staženého souboru):

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

Změny použijte příkazem docker compose up -d, který kontejner znovu vytvoří.

Proměnné čtené aplikacemi

Některé proměnné nejsou nastavení a nemají pole v Systémové konzoli: AM_CONFIG (kde se konfigurace nachází) a AM_AI_ENCRYPTION_KEY a AM_AI_ENCRYPTION_PREVIOUS_KEYS, klíč, který šifruje API klíče připojení k modelům (viz AI).

Některé aplikace čtou vlastní proměnné, nastavené na službě antimatter: aplikace Hovory čte AM_CALLS_* (viz Hovory a hlas), a aplikace GIF čte AM_GIFS_SERVICE_URL, AM_GIFS_API_KEY a AM_GIFS_UPLOAD_KEY (viz Integrované aplikace).

Systémová konzole

Systémová konzole je administrativní oblast webové aplikace pro systémové administrátory. Otevřete ji kliknutím na svůj obrázek nahoře na liště aplikace a výběrem Systémová konzole, nebo přejděte na https://chat.example.com/admin_console. Její boční panel obsahuje pole Najít nastavení, které vyhledává na všech stránkách.

The System Console, with its sidebar of sections on the left and the SAML 2.0 settings page on the right.
Systémová konzole. Boční panel řadí stránky do sekcí, jako jsou Statistiky, Správa uživatelů a Prostředí.

Její sekce jsou:

  • Reporty: statistiky a serverové logy.
  • Správa uživatelů: uživatelé, skupiny, komunity (zobrazované jako Tým), kanály, oprávnění a delegovaná správa.
  • Systémové atributy: vlastní profilové atributy a přístup na základě atributů.
  • Prostředí: webový server, databáze, úložiště souborů, proxy pro obrázky, SMTP, push oznámení, omezování rychlosti, protokolování, délka relací, monitorování výkonu.
  • Konfigurace webu: branding, uživatelé a týmy, oznámení, příspěvky, sdílení souborů a další chování na úrovni celého serveru.
  • Autentizace: registrace, přihlášení e-mailem a heslem, MFA, AD/LDAP, SAML 2.0, OAuth 2.0, OpenID Connect a přístup hostů.
  • AI: připojení k modelům a vestavěné AI funkce (přepis, shrnutí, automatický překlad, převod textu na řeč). Viz AI.
  • Pluginy: správa aplikací a nastavení každé nainstalované aplikace.
  • Integrace: webhooks, příkazy s lomítkem, botové účty, GIF, převod textu na řeč, CORS.
  • Shoda s předpisy: uchovávání dat, export a monitorování pro shodu s předpisy, auditní logování, vlastní podmínky služby.
  • Experimentální: funkce, které se mohou měnit.

V tomto průvodci je nastavení uvedeno jako jeho cesta v Systémové konzoli, poté jeho popisek a nakonfigurační klíč, například Systémová konzole › Konfigurace webu › Uživatelé a týmy › Povolit ignorování, blokování a žádosti o zprávy (PrivacySettings.EnableUserBlocking).

Většina změn se projeví ihned po kliknutí na Uložit. Některé (adresa naslouchání, některá nastavení databáze a mezipaměti) vyžadují restart a stránka to uvádí.

Cech nebo pracovní prostor

Každá komunita má typ, který určuje některá její výchozí nastavení:

  • Cech pro veřejnou nebo zájmovou komunitu: hovory v jejích kanálech jsou vypnuty (lidé komunikují v hlasových kanálech) a kanály mohou archivovat pouze administrátoři a role, které spravují kanály.
  • Pracovní prostor pro firmu nebo organizaci: hovory v jejích kanálech jsou zapnuty a kanály archivují administrátoři kanálu (ten, kdo ho vytvořil, a ti, které určil za administrátory).

Systémová konzole › Konfigurace webu › Uživatelé a týmy › Typ nových komunit (TeamSettings.DefaultCommunityKind, AM_TEAMSETTINGS_DEFAULTCOMMUNITYKIND) určuje typ komunit vytvářených od tohoto okamžiku dále: Cech (výchozí hodnota) nebo Pracovní prostor; nastavení stále ukládá a čte starší hodnoty community a workplace. Předvolba rozvržení zvolená při vytváření komunity nastaví její vlastní typ. Administrátoři každé komunity mohou její typ později změnit v Nastavení týmu › Obecné. Nové cechy zařadí všechny členy do všech kanálů (TeamSettings.AllChannelsMembershipForNewTeams) je výchozí pouze pro nové cechy: pracovní prostory nikdy nezačínají tímto způsobem (viz Všichni ve všech kanálech).

Pro firmu nastavte Pracovní prostor před vytvořením první komunity nebo před aktualizací existujícího serveru na verzi 0.9.0: aktualizace přiřadí každé existující komunitě hodnotu, kterou má nastavení v daném okamžiku (viz Aktualizace na verzi 0.9.0).

Zprávy spálené po přečtení

Lidé mohou posílat zprávy, které jsou smazány určitou dobu poté, co je každý čtenář otevře (viz Zprávy se spálením po čtení). Nastavení najdete v Systémová konzole › Konfigurace webu › Příspěvky v sekci Zprávy se spálením po čtení:

NastaveníKlíč a proměnnáVýchozí
Povolit zprávy typu „spálit po přečtení“ServiceSettings.EnableBurnOnRead, AM_SERVICESETTINGS_ENABLEBURNONREADzapnuto
Doba trvání zprávy „spálit po přečtení“: jak dlouho zpráva existuje po jejím otevření, pokud odesílatel nezvolil žádnou dobuServiceSettings.BurnOnReadDurationSeconds, AM_SERVICESETTINGS_BURNONREADDURATIONSECONDS600 (10 minut)
Nejdelší doba, kterou mohou odesílatelé zvolit: od 1 hodiny do 7 dnů; delší volba je zkrácena na tuto hodnotuServiceSettings.BurnOnReadMaximumDurationSeconds, AM_SERVICESETTINGS_BURNONREADMAXIMUMDURATIONSECONDS86400 (1 den)
Maximální doba existence zpráv typu Burn-on-Read: zpráva je smazána tuto dobu po odeslání, i když ji ještě ne všichni přečetliServiceSettings.BurnOnReadMaximumTimeToLiveSeconds, AM_SERVICESETTINGS_BURNONREADMAXIMUMTIMETOLIVESECONDS604800 (7 dní)

Nejdelší doba je znovu kontrolována při přečtení zprávy, takže její snížení zkrátí i již odeslané zprávy.

Příkazový řádek amctl

amctl spravuje server z příkazového řádku: uživatele, komunity, kanály, aplikace, konfiguraci, úkoly a další. Komunikuje se serverem jedním ze dvou způsobů.

Lokální režim, na serveru

Lokální režim umožňuje nástroji amctl komunikovat se serverem přes Unix socket bez nutnosti přihlášení. Je aktivní v Docker obrazu a v balíčcích .deb a .rpm. Na serveru nainstalovaném z archivu ho zapnete pomocí nastavení ServiceSettings.EnableLocalMode (AM_SERVICESETTINGS_ENABLELOCALMODE=true). Socket má výchozí umístění /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
Kdo má přístup k socketu nebo může na hostiteli spustit docker compose exec, má plná práva systémového administrátora.

Vzdáleně, s účtem

Z libovolného počítače se přihlaste účtem systémového administrátora (nebo osobním přístupovým tokem) a poté spouštějte příkazy pro daný server:

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

Příkazy pro konfiguraci

PříkazCo dělá
amctl config get ServiceSettings.SiteURLVypíše jedno nastavení.
amctl config set TeamSettings.EnableOpenServer falseZmění jedno nastavení. Seznamy nastavení přijímají jednu nebo více hodnot.
amctl config patch settings.jsonSloučí soubor JSON s nastaveními do konfigurace.
amctl config showVypíše celou konfiguraci jako JSON.
amctl config editOtevře konfiguraci ve vašem editoru ($EDITOR).
amctl config resetObnoví nastavení na výchozí hodnoty.
amctl config reloadZnovu načte konfiguraci z místa, kde je uložena, po změně provedené mimo server.

Nastavení aplikací se nacházejí pod PluginSettings.Plugins.<app id>, s klíči ve spodním písmu. Například pro nastavení adresy služby a klíče aplikace GIFs z Docker hostitele:

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

Další užitečné příkazy: amctl user create, amctl user deactivate, amctl team create, amctl plugin list, amctl plugin enable, amctl system supportpacket a amctl logs. Pro možnosti jednotlivých příkazů spusťte amctl help <command>.

Protokoly

Server zapisuje své logy do dvou míst, každé s vlastní úrovní (DEBUG, INFO, WARN nebo ERROR), která se nastavuje v Systémová konzole › Prostředí › Logování:

CílNastaveníVýchozí hodnoty
Konzole (standardní výstup)Vypisovat logy do konzole (LogSettings.EnableConsole), Úroveň konzolového deníku (LogSettings.ConsoleLevel), Vypisovat logy konzole jako JSON (LogSettings.ConsoleJson)zapnuto, DEBUG, JSON
Soubor, antimatter.logVýstup deníků do souboru (LogSettings.EnableFile), Úroveň souborového deníku (LogSettings.FileLevel), Adresář souborového deníku (LogSettings.FileLocation)zapnuto, INFO, adresář logs/ vedle bin/

Protokolové soubory se roztáčejí při 100 MB a starší se komprimují.

Soubor compose pro web vypíná protokolování do souboru (AM_LOGSETTINGS_ENABLEFILE=false), takže protokoly se nacházejí pouze ve výstupu kontejneru:

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

Úroveň konzole má výchozí hodnotu DEBUG, což je velmi podrobné. Na vytíženém serveru nastavte AM_LOGSETTINGS_CONSOLELEVEL=INFO. Soubor config.json v release archivu i v balíčcích tuto hodnotu již nastavuje na INFO. Při použití release archivu pod systemd se výstup konzole zapisuje do journalu (journalctl -u antimatter) a do souboru /opt/antimatter/logs/antimatter.log. Balíčky vypínají zapisování do souboru, takže jejich logy se nacházejí pouze v journalu.

Soubory logů a auditní soubory musí zůstat uvnitř kořenového adresáře pro logování: AM_LOG_PATH (starší MM_LOG_PATH stále funguje), pokud je nastaven, jinak složka logs. Toto je ve výchozím nastavení vynucováno: Adresář souborového deníku, cíl pokročilého logování nebo cesta k auditnímu logu mimo kořenový adresář zastaví server při spuštění a je odmítnuto při ukládání konfigurace. Vynucování vypnete pomocí AM_FEATUREFLAGS_ENFORCELOGPATHROOT=false. Pokud je nastaven AM_LOG_PATH a Adresář souborového deníku je ponechán prázdný, logy se ukládají do AM_LOG_PATH.

Když je logování do souborů zapnuto, mohou systémoví administrátoři číst logy také v Systémová konzole › Reporty › Serverové logy: barevně odlišené odznaky úrovní, rychlé filtry podle úrovně, živý náhled a předvolby časového rozsahu od 5 minut do 24 hodin, nebo pomocí amctl logs.