Configurație

Unde își păstrează Antimatter setările, cele trei moduri de a le modifica (Consola de sistem, variabile de mediu, amctl) și unde se găsesc jurnalele.

Unde se află setările

Fiecare setare de server are un nume format dintr-o secțiune și o cheie, de exemplu ServiceSettings.SiteURL sau EmailSettings.SMTPServer. Împreună, ele formează o configurație, stocată în unul dintre două locuri:

  • În baza de date. Fișierul de compunere al site-ului setează AM_CONFIG la URL-ul de conexiune PostgreSQL, astfel încât configurația este o linie în baza de date, iar containerul nu păstrează nimic pe disc. Mai multe servere care împart aceeași bază de date își împart și configurația.
  • Într-un fișier. Fără AM_CONFIG, serverul citește config/config.json din vecinătatea directorului bin/ (/antimatter/config/config.json în imaginea Docker). Arhiva de lansare și fișierele de compozare de producție din antimatter-docker funcționează astfel, la fel și pachetele .deb și .rpm, a căror fișier este /etc/antimatter/config/config.json. Păstrați acest fișier lizibil doar de către utilizatorul serverului: conține parole și chei.

AM_CONFIG (sau opțiunea --config a comenzii antimatter) acceptă fie un drum de fișier, fie un URL postgres://. Setările pe care le omiteți preiau valoarea implicită.

Pentru a muta o configurație existentă dintr-un fișier în baza de date, rulați aceasta pe server, apoi porniți serverul cu AM_CONFIG setat la același URL:

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

Variabile de mediu

Orice setare poate fi, de asemenea, furnizată ca variabilă de mediu. Variabilele au prioritate față de configurația stocată, ceea ce le face potrivite pentru ceea ce aparține implementării: baza de date, URL-ul site-ului, stocarea fișierelor, porturile.

Regula de denumire

Scrieți AM_, apoi secțiunea, apoi cheia, cu litere mari și separate prin liniuțe de subliniere. Cuvintele din interiorul numelui unei secțiuni sau al unei chei nu sunt separate:

SetareVariabilă
ServiceSettings.SiteURLAM_SERVICESETTINGS_SITEURL
SqlSettings.DataSourceAM_SQLSETTINGS_DATASOURCE
EmailSettings.SMTPServerAM_EMAILSETTINGS_SMTPSERVER
PrivacySettings.EnableUserBlockingAM_PRIVACYSETTINGS_ENABLEUSERBLOCKING
  • Setările de tip adevărat/fals preiau true sau false; numerele sunt numere simple.
  • Setările de tip listă preiau valorile separate prin spații, de exemplu AM_SERVICESETTINGS_TRUSTEDPROXYIPHEADER="X-Forwarded-For X-Real-IP".
  • Setările care sunt obiecte preiau JSON. Singura astfel de variabilă pentru aplicații este AM_PLUGINSETTINGS_PLUGINS, și ea înlocuiește setările orice aplicație în același timp: setați setările aplicațiilor în Consola de sistem sau cu amctl în schimb (a se vedea mai jos).
  • Configurațiile Mattermost mai vechi folosesc prefixul MM_, de exemplu MM_SQLSETTINGS_DATASOURCE. Funcționează încă ca alias de moștenire. Dacă ambele sunt setate, variabila AM_ are prioritate.

O setare dată de o variabilă este blocată în Consola de sistem, cu nota „Această setare a fost configurată printr-o variabilă de mediu. Nu poate fi modificată prin Consola de sistem.” Nu este scrisă în configurația stocată: eliminați variabila și valoarea stocată se aplică din nou.

Cu Docker Compose

Adăugați variabilele sub environment: al serviciului antimatter, sau într-un compose.override.yaml lângă compose.yaml (Compose îl citește automat și rămâne intact la actualizările fișierului descărcat):

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

Aplicați modificările cu docker compose up -d, care recreează containerul.

Variabilele citite de aplicații

Câteva variabile nu sunt setări și nu au un câmp în Consola de sistem: AM_CONFIG (locul în care se află configurația), precum și AM_AI_ENCRYPTION_KEY și AM_AI_ENCRYPTION_PREVIOUS_KEYS, cheia care criptează cheile API ale conexiunilor cu modelele (a se vedea AI).

Câteva aplicații își citesc propriile variabile, setate pe serviciul antimatter: aplicația Calls citește AM_CALLS_* (a se vedea Apeluri și voce), iar aplicația GIFs citește AM_GIFS_SERVICE_URL, AM_GIFS_API_KEY și AM_GIFS_UPLOAD_KEY (a se vedea Aplicații incluse).

Consola de sistem

Consola de sistem este zona de administrare a aplicației web, destinată administratorilor de sistem. Pentru a o deschide, faceți clic pe fotografia dvs. din partea de sus a barei laterale a aplicației și selectați Consola de sistem, sau accesați https://chat.example.com/admin_console. Bara sa laterală conține un câmp Găsiți setări care caută în toate paginile.

The System Console, with its sidebar of sections on the left and the SAML 2.0 settings page on the right.
Consola de sistem. Bara laterală grupează paginile în secțiuni precum Raportare, Gestionare utilizatori și Mediu.

Secțiunile sale sunt:

  • Raportarea: statistici și jurnalele serverului.
  • Gestionarea utilizatorilor: utilizatori, grupuri, comunități (listate ca Echipă), canale, permisiuni și administrare delegată.
  • Atribute de sistem: atribute de profil personalizate și acces bazat pe atribute.
  • Mediu: server web, bază de date, stocare fișiere, proxy de imagini, SMTP, notificări push, limitare de rată, jurnalizare, durată sesiuni, monitorizare performanță.
  • Configurarea site-ului: branding, utilizatori și echipe, notificări, mesaje, partajarea fișierelor și alte comportamente la nivel de server.
  • Autentificare: înregistrare, autentificare prin e-mail și parolă, MFA, AD/LDAP, SAML 2.0, OAuth 2.0, OpenID Connect și acces pentru oaspeți.
  • AI: conexiuni cu modele și funcțiile AI integrate (rescriere, rezumate, traducere automată, text în vorbire). A se vedea AI.
  • Plugin-uri: gestionarea aplicațiilor și setările fiecărei aplicații instalate.
  • Integrări: webhooks, comenzi cu slash, conturi de bot, GIFs, text în vorbire, CORS.
  • Conformitate: reținerea datelor, export și monitorizare pentru conformitate, jurnal de audit, condiții de utilizare personalizate.
  • Experimental: funcții care se pot modifica.

În acest ghid, o setare este notată prin calea sa în Consola de sistem, apoi eticheta sa, apoi cheia de configurare, de exemplu Consola de sistem › Configurarea site-ului › Utilizatori și echipe › Activați ignorarea, blocarea și cererile de mesaj (PrivacySettings.EnableUserBlocking).

Majoritatea modificărilor se aplică imediat ce faceți clic pe Salvează. Câteva (adresa de ascultare, unele setări de bază de date și de cache) necesită o repornire, iar pagina indică acest lucru.

Mediu de lucru sau comunitate

Fiecare comunitate are un tip, care stabilește unele dintre valorile implicite:

  • Comunitate, pentru o comunitate publică sau de hobby: apelurile sunt dezactivate în canalele sale (utilizatorii comunică în canale vocale), iar doar administratorii săi și rolurile care gestionează canalele pot arhiva canale.
  • Mediu de lucru, pentru o companie sau o organizație: apelurile sunt activate în canalele sale, iar administratorii unui canal (cel care l-a creat și cei pe care i-a numit administratori) pot, de asemenea, să-l arhiveze.

Consola de sistem › Configurația site-ului › Utilizatori și echipe › Tipul comunităților noi (TeamSettings.DefaultCommunityKind, AM_TEAMSETTINGS_DEFAULTCOMMUNITYKIND) este tipul comunităților create de atunci încolo: community (implicit) sau workplace. Un preset de aspect ales la crearea unei comunități stabilește propriul tip. Administratorii fiecărei comunități pot modifica tipul acesteia ulterior, în Setările echipei › Canale › Tipul comunității.

Pentru o companie, setați-l la Mediu de lucru înainte de a crea prima comunitate sau înainte de a actualiza un server existent la 0.9.0: actualizarea atribuie fiecărei comunități existente valoarea pe care o are setarea în acel moment (a se vedea Actualizarea la 0.9.0).

Instrumentul de linie de comandă amctl

amctl gestionează un server din linia de comandă: utilizatori, comunități, canale, aplicații, configurare, joburi și altele. Se comunică cu serverul în una dintre două moduri.

Mod local, pe server

Modul local permite amctl să comunice cu serverul printr-un soclu Unix, fără autentificare. Este activat în imaginea Docker și în pachetele .deb și .rpm. Pe un server instalat dintr-un arhivă, activați-l cu ServiceSettings.EnableLocalMode (AM_SERVICESETTINGS_ENABLELOCALMODE=true). Soclul este implicit /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
Oricine poate folosi soclul, sau poate rula docker compose exec pe gazdă, are drepturi complete de administrator de sistem.

Remote, cu un cont

De pe orice mașină, autentificați-vă cu un cont de administrator de sistem (sau cu un token de acces personal), apoi rulați comenzi către acel server:

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

Comenzi de configurare

ComandăCe face
amctl config get ServiceSettings.SiteURLAfișează o singură setare.
amctl config set TeamSettings.EnableOpenServer falseModifică o singură setare. Setările de tip listă acceptă mai multe valori.
amctl config patch settings.jsonÎmbină un fișier JSON cu setări în configurare.
amctl config showAfișează întreaga configurare ca JSON.
amctl config editDeschide configurarea în editorul dumneavoastră ($EDITOR).
amctl config resetResetează setările la valorile implicite.
amctl config reloadRecarcă configurarea din locația de stocare, după o modificare făcută în afara serverului.

Setările aplicațiilor se află sub PluginSettings.Plugins.<app id>, cu chei în litere mici. De exemplu, pentru a configura URL-ul și cheia de serviciu pentru aplicația GIFs de pe gazda 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

Alte comenzi utile: amctl user create, amctl user deactivate, amctl team create, amctl plugin list, amctl plugin enable, amctl system supportpacket și amctl logs. Rulează amctl help <command> pentru a vedea opțiunile fiecăreia.

Jurnale

Serverul scrie jurnalul în două locații, fiecare cu propriul nivel (DEBUG, INFO, WARN sau ERROR), configurat în Consola de sistem › Mediu › Jurnalizare (loguri):

DestinațieSetăriValori implicite
Consola (ieșirea standard)Ieșiri de ieșire la consola (LogSettings.EnableConsole), Consola nivel jurnal (LogSettings.ConsoleLevel), Înregistrează consola de ieșire ca JSON (LogSettings.ConsoleJson)activat, DEBUG, JSON
Un fișier, antimatter.logIeșiri în fișier (LogSettings.EnableFile), Nivel jurnal de fișiere (LogSettings.FileLevel), Director de jurnal de fișiere (LogSettings.FileLocation)activat, INFO, directorul logs/ alăturat lui bin/

Fișierele de jurnal sunt rotite la 100 MB, iar cele vechi sunt comprimate.

Fișierul de compunere al site-ului dezactivează jurnalizarea în fișier (AM_LOGSETTINGS_ENABLEFILE=false), astfel încât jurnalele se găsesc doar în ieșirea containerului:

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

Nivelul consolei este implicit DEBUG, ceea ce este destul de detaliat. Pe un server aglomerat, setați AM_LOGSETTINGS_CONSOLELEVEL=INFO. Fișierul config.json din arhiva de eliberare și din pachete este deja setat la INFO. În cazul unei arhive de eliberare sub systemd, ieșirea consolei merge în jurnal (journalctl -u antimatter) și fișierul în /opt/antimatter/logs/antimatter.log. Pachetele dezactivează jurnalizarea în fișier, astfel încât jurnalele lor se găsesc doar în jurnal.

Când jurnalizarea în fișier este activată, administratorii de sistem pot citi și ultimele linii din jurnal în Consola de sistem › Raportarea › Loguri, sau cu amctl logs.