Konfiguration

Hvor Antimatter opbevarer sine indstillinger, de tre måder at ændre dem på (Systemkonsol, miljøvariabler, amctl) og hvor logfilerne befinder sig.

Hvor indstillingerne befinder sig

Hver serverindstilling har et navn bestående af en sektion og en nøgle, f.eks. ServiceSettings.SiteURL eller EmailSettings.SMTPServer. Tilsammen udgør de én konfiguration, der opbevares ét af to steder:

  • I databasen. Saitets compose-fil sætter AM_CONFIG til PostgreSQL-forbindelses-URL'en, så konfigurationen er en række i databasen, og containeren opbevarer intet på disken. Flere servere, der deler én database, deler også deres konfiguration.
  • I en fil. Uden AM_CONFIG læser serveren config/config.json ved siden af sin bin/-mappe (/antimatter/config/config.json i Docker-billedet). Releasearkivet og produktionscompose-filerne i antimatter-docker fungerer på denne måde, ligesom .deb- og .rpm-pakkerne, hvis fil er /etc/antimatter/config/config.json. Sørg for, at denne fil kun kan læses af serverens bruger: Den indeholder adgangskoder og nøgler.

AM_CONFIG (eller --config-flagget for antimatter-kommandoen) accepterer enten en filsti eller en postgres://-URL. Indstillinger, du udelader, får deres standardværdi.

For at flytte en eksisterende konfiguration fra en fil til databasen, kør dette på serveren, og start derefter serveren med AM_CONFIG sat til samme URL:

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

Miljøvariabler

Enhver indstilling kan også angives som en miljøvariabel. Variablerne har forrang over den opbevarede konfiguration, hvilket gør dem velegnede til det, der hører til udrulningen: databasen, saitet URL, filopbevaringen og portene.

Navngivningsregel

Skriv AM_, derefter sektionen, derefter nøglen, med store bogstaver og adskilt med understreger. Ordene inden for en sektion eller nøglenavn adskilles ikke:

IndstillingVariabel
ServiceSettings.SiteURLAM_SERVICESETTINGS_SITEURL
SqlSettings.DataSourceAM_SQLSETTINGS_DATASOURCE
EmailSettings.SMTPServerAM_EMAILSETTINGS_SMTPSERVER
PrivacySettings.EnableUserBlockingAM_PRIVACYSETTINGS_ENABLEUSERBLOCKING
  • Indstillinger for sandt og falsk tager true eller false; tal er almindelige tal.
  • Listeindstillinger tager deres værdier adskilt med mellemrum, f.eks. AM_SERVICESETTINGS_TRUSTEDPROXYIPHEADER="X-Forwarded-For X-Real-IP".
  • Indstillinger, der er objekter, tager JSON. Den eneste sådan variabel for apps er AM_PLUGINSETTINGS_PLUGINS, og den erstatter indstillingerne for alle apps på én gang: Sæt app-indstillinger i Systemkonsolen eller med amctl i stedet (se nedenfor).
  • Ældre Mattermost-installationer bruger MM_-præfikset, for eksempel MM_SQLSETTINGS_DATASOURCE. Det fungerer stadig som et legacy alias. Hvis begge er sat, vinder AM_-variablen.

En indstilling, der er angivet via en variabel, er låst i Systemkonsolen med bemærkningen "Denne indstilling er blevet sat via en miljøvariabel. Den kan ikke ændres via Systemkonsolen." Den skrives ikke til den gemte konfiguration: fjern variabelen, og den gemte værdi gælder igen.

Med Docker Compose

Tilføj variabler under environment: for antimatter-tjenesten, eller i en compose.override.yaml ved siden af compose.yaml (Compose læser den automatisk, og den overlever opdateringer af den downloadede fil):

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

Anvend ændringerne med docker compose up -d, som genopretter containeren.

Variabler læst af apps

Nogle få variabler er ikke indstillinger og har ingen felt i Systemkonsolen: AM_CONFIG (hvor konfigurationen befinder sig) samt AM_AI_ENCRYPTION_KEY og AM_AI_ENCRYPTION_PREVIOUS_KEYS, som er nøglen, der krypterer API-nøglerne for modelforbindelser (se AI).

Nogle apps læser deres egne variabler, som er sat på antimatter-tjenesten: Calls-appen læser AM_CALLS_* (se Opkald og lyd), og GIFs-appen læser AM_GIFS_SERVICE_URL, AM_GIFS_API_KEY og AM_GIFS_UPLOAD_KEY (se Indbyggede apps).

Systemkonsolen

Systemkonsolen er administrationsområdet i webappen, beregnet til systemadministratorer. For at åbne den, klikker du på dit billede øverst i appens sidebjælke og vælger Systemkonsol, eller du går til https://chat.example.com/admin_console. Dens sidebjælke har et Find indstillinger-felt, der søger på alle sider.

The System Console, with its sidebar of sections on the left and the SAML 2.0 settings page on the right.
Systemkonsolen. Sidebjælken grupperer siderne i sektioner som Rapportering, Brugeradministration og Miljø.

Dens sektioner er:

  • Rapportering: statistik og serverlogs.
  • Brugerstyring: brugere, grupper, fællesskaber (vist som Teams), kanaler, rettigheder og delegeret administration.
  • Systemattributter: brugerdefinerede profilattributter og attributbaseret adgang.
  • Miljø: webserver, database, filopbevaring, billedproxy, SMTP, pushnotifikationer, rate limiting, logning, sessionlængder og ydelsesovervågning.
  • Sitekonfiguration: branding, brugere og teams, notifikationer, indlæg, fildeling og andre serverbrede opførsler.
  • Autentificering: tilmelding, login med e-mail og adgangskode, MFA, AD/LDAP, SAML 2.0, OAuth 2.0, OpenID Connect og gæstetilgang.
  • AI: modelforbindelser og de indbyggede AI-funktioner (omskrivning, opsummeringer, automatisk oversættelse, tekst til tale). Se AI.
  • Plugins: appadministration og indstillingerne for hver installeret app.
  • Integrationer: webhooks, skråstregskommandoer, bot-konti, GIF'er, tekst til tale, CORS.
  • Overholdelse: dataopbevaring, compliance-eksport og -overvågning, auditlogning og brugerdefinerede servicevilkår.
  • Eksperimentel: funktioner, der kan ændres.

I denne guide skrives en indstilling som dens sti i Systemkonsollen, derefter dens etiket, og derefter dens konfigurationsnøgle, for eksempel Systemkonsol › Sitekonfiguration › Brugere og teams › Aktivér ignorering, blokering og beskedanmodninger (PrivacySettings.EnableUserBlocking).

De fleste ændringer træder i kraft, så snart du klikker på Gem. Nogle få (lytteadresse, visse database- og cacheindstillinger) kræver en genstart, og siden oplyser om dette.

Fællesskab eller arbejdsområde

Hvert fællesskab har en type, der sætter nogle af dets standardindstillinger:

  • Fællesskab, for et offentligt fællesskab eller hobbygruppe: Opkald er slået fra i kanalerne (man taler i lydkanaler), og kun administratorer og de roller, der administrerer kanaler, kan arkivere kanaler.
  • Arbejdsområde, for en virksomhed eller organisation: Opkald er slået til i kanalerne, og kanaladministratorer (dem, der oprettede kanalen, og dem, de har gjort til administratorer) kan også arkivere den.

Systemkonsol › Sitekonfiguration › Brugere og teams › Type af nye fællesskaber (TeamSettings.DefaultCommunityKind, AM_TEAMSETTINGS_DEFAULTCOMMUNITYKIND) er typen af de fællesskaber, der oprettes herefter: Fællesskab (standard) eller Arbejdsområde; indstillingen gemmer og læser stadig de ældre værdier community og workplace. En layoutforudindstilling, der vælges ved oprettelse af et fællesskab, sætter dets egen type. Administratorer for hvert fællesskab kan ændre dets type senere under Teamindstillinger › Generelt. Nye fællesskaber sætter alle i alle kanaler (TeamSettings.AllChannelsMembershipForNewTeams) er standard kun for nye fællesskaber: arbejdsområder starter aldrig på denne måde (se Alle i alle kanaler).

For en virksomhed skal du indstille det til Arbejdsområde, før du opretter det første fællesskab, eller før du opgraderer en eksisterende server til 0.9.0: opgraderingen giver alle eksisterende fællesskaber den værdi, som indstillingen har på det tidspunkt (se Opgradering til 0.9.0).

Beskeder, der brændes ved læsning

Brugere kan sende beskeder, der slettes et stykke tid efter, at hver læser har åbnet dem (se Beskeder, der slettes ved læsning). Indstillingerne findes i Systemkonsol › Sitekonfiguration › Indlæg under Beskeder, der slettes ved læsning:

IndstillingNøgle og variabelStandard
Aktivér brænd-ved-læsning-beskederServiceSettings.EnableBurnOnRead, AM_SERVICESETTINGS_ENABLEBURNONREADtil
Brænd-ved-læsning-varighed: hvor længe en besked er tilgængelig, efter at den er åbnet, hvis afsenderen ikke har valgt en varighedServiceSettings.BurnOnReadDurationSeconds, AM_SERVICESETTINGS_BURNONREADDURATIONSECONDS600 (10 minutter)
Længste varighed, afsendere kan vælge: fra 1 time til 7 dage; længere valg forkortes til denne værdiServiceSettings.BurnOnReadMaximumDurationSeconds, AM_SERVICESETTINGS_BURNONREADMAXIMUMDURATIONSECONDS86400 (1 dag)
Maksimal levetid for beskeder med funktionen 'Slet efter læsning': en besked slettes efter denne tid, siden den blev sendt, selvom ikke alle har læst denServiceSettings.BurnOnReadMaximumTimeToLiveSeconds, AM_SERVICESETTINGS_BURNONREADMAXIMUMTIMETOLIVESECONDS604800 (7 dage)

Den længste varighed kontrolleres igen, når en besked læses, så en sænkning af denne værdi forkorter også levetiden for allerede sendte beskeder.

The amctl command-line tool

amctl manages a server from the command line: users, communities, channels, apps, configuration, jobs and more. It talks to the server in one of two ways.

Local mode, on the server

Lokal tilstand gør det muligt for amctl at kommunikere med serveren via en Unix-socket uden at logge ind. Den er slået til i Docker-billedet og i .deb- og .rpm-pakkerne. På en server installeret fra et arkiv slår du den til med ServiceSettings.EnableLocalMode (AM_SERVICESETTINGS_ENABLELOCALMODE=true). Socketen er som standard /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
Anyone who can use the socket, or run docker compose exec on the host, has full system administrator rights.

Remote, with an account

From any machine, sign in with a system administrator account (or a personal access token), then run commands against that server:

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

Configuration commands

CommandHvad den gør
amctl config get ServiceSettings.SiteURLPrints one setting.
amctl config set TeamSettings.EnableOpenServer falseÆndrer én indstilling. Listeindstillinger tager én værdi eller flere.
amctl config patch settings.jsonMerges a JSON file of settings into the configuration.
amctl config showPrints the whole configuration as JSON.
amctl config editOpens the configuration in your editor ($EDITOR).
amctl config resetResets settings to their defaults.
amctl config reloadReloads the configuration from where it is stored, after a change made outside the server.

App settings live under PluginSettings.Plugins.<app id>, with keys in lower case. For example, to set the GIFs app's service URL and key from the Docker host:

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

Other useful commands: amctl user create, amctl user deactivate, amctl team create, amctl plugin list, amctl plugin enable, amctl system supportpacket and amctl logs. Run amctl help <command> for each one's options.

Logs

Serveren skriver sin log til to steder, hver med sit eget niveau (DEBUG, INFO, WARN eller ERROR), som indstilles i Systemkonsol › Miljø › Logning:

MålIndstillingerStandardværdier
Konsollen (standard output)Udskriv logs til konsollen (LogSettings.EnableConsole), Konsollogniveau (LogSettings.ConsoleLevel), Udskriv konsollogs som JSON (LogSettings.ConsoleJson)til, DEBUG, JSON
En fil, antimatter.logUdskriv log til fil (LogSettings.EnableFile), Fillogniveau (LogSettings.FileLevel), Fillogmappe (LogSettings.FileLocation)til, INFO, logs/-mappen ved siden af bin/

Logfiler roteres ved 100 MB, og de gamle komprimeres.

Webstedets compose-fil slår filloggen fra (AM_LOGSETTINGS_ENABLEFILE=false), så logfilerne kun findes i containerens output:

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

Konsolniveauet er som standard DEBUG, hvilket er detaljeret. På en travl server skal du sætte AM_LOGSETTINGS_CONSOLELEVEL=INFO. config.json i releasearkivet og i pakkerne er allerede sat til INFO. Med et releasearkiv under systemd sendes konsoloutput til journalen (journalctl -u antimatter), og filen til /opt/antimatter/logs/antimatter.log. Pakkerne slår fillogning fra, så deres logfiler kun findes i journalen.

Log- og revisionsfiler skal blive inde i logroden: AM_LOG_PATH (den ældre MM_LOG_PATH virker stadig), hvis den er angivet, ellers mappen logs. Dette håndhæves som standard: En Fillogmappe, avanceret logningsmål eller revisionslogsti uden for roden stopper serveren ved opstart, og afvises, når du gemmer konfigurationen. Slå håndhævelse fra med AM_FEATUREFLAGS_ENFORCELOGPATHROOT=false. Hvis AM_LOG_PATH er angivet, og Fillogmappe er tom, sendes logfiler til AM_LOG_PATH.

Når fillogning er slået til, kan systemadministratorer også læse loggen i Systemkonsol › Rapportering › Serverlogs: farvekodede niveauemblem, hurtige filtre efter niveau, en live-hale og tidsrækkeforudindstillinger fra 5 minutter til 24 timer, eller med amctl logs.