App integrate
Le immagini Docker di Antimatter includono un set di app (plugin, nella Console di Sistema). Questa pagina le elenca, indica quali sono attive dopo l'installazione e illustra le impostazioni che ciascuna richiede da parte di un amministratore.
Le app integrate
Le app sono elencate come Plugin nella Console di Sistema. Sono presenti nell'immagine (in /antimatter/prepackaged_plugins), firmate con la chiave di firma delle app Antimatter, quindi si installano senza una connessione a Internet.
L'archivio di rilascio e i pacchetti .deb e .rpm includono meno app: consulta App nei pacchetti e nell'archivio.
| App | ID app | Immagine | Attiva dopo l'installazione |
|---|---|---|---|
| Agenti (IA) | mattermost-ai | entrambe | sì |
| Chiamate | com.mattermost.calls | entrambe | sì |
| Kanban | focalboard | entrambe | sì |
| Playbook | playbooks | entrambe | sì |
| GitHub | github | entrambe | no |
| GitLab | com.github.manland.mattermost-plugin-gitlab | entrambe | no |
| Jira | jira | entrambe | no |
| Metriche | com.mattermost.mattermost-plugin-metrics | entrambe | no |
| Canali vocali | com.antimatterchat.voice-channels | antimatter-next | sì |
| Sondaggi | com.antimatterchat.polls | antimatter-next | sì |
| Note | com.antimatterchat.notes | antimatter-next | sì |
| Lavagna | com.antimatterchat.whiteboard | antimatter-next | sì |
| Posta | com.antimatterchat.mail | antimatter-next | sì |
| Calendario | com.antimatterchat.calendar | antimatter-next | sì |
| GIF | com.antimatterchat.gifs | antimatter-next | sì |
| Meme | memes | antimatter-next | no |
| Da fare | com.mattermost.plugin-todo | antimatter-next | no |
Le app attive di default vengono installate ad ogni avvio, se non lo sono già, oppure aggiornate se l'immagine contiene una versione più recente. Se si disattiva un'app, resta disattivata: il valore predefinito si applica solo alle app non ancora menzionate nella configurazione. Le app che mantengono il proprio ID Mattermost (Agenti, Chiamate, Kanban, Playbook e le integrazioni) sono build di Antimatter.
Attivare, disattivare e configurare le app
Vai a Console di Sistema › Plugins › Gestione plugin. Sotto Plugin installati, ogni app ha Attiva o Disattiva, Impostazioni e Rimuovi, e mostra il suo stato (In esecuzione, Non in esecuzione, Avvio non riuscito…). Ogni app con impostazioni ha anche una propria pagina sotto Console di Sistema › Plugins.
Le app integrate disattivate di default vengono installate dalla copia inclusa nell'immagine: clicca sulla tua immagine in alto nella barra delle app e scegli Marketplace delle app (nell'interfaccia classica, si trova nel menu del prodotto), trova l'app e clicca Installa, quindi attivala nella Gestione plugin. Dalla riga di comando:
docker compose exec antimatter amctl --local plugin marketplace install github
docker compose exec antimatter amctl --local plugin enable github
Altri comandi: amctl plugin list, amctl plugin disable <id>, amctl plugin delete <id>.
Attivare le app tramite la configurazione
Le app attive sono definite dall'impostazione PluginSettings.PluginStates, una mappa di ID app. Puoi unire voci in essa con amctl; con Attiva automaticamente plugin precompilati attivo (impostazione predefinita), un'app integrata attivata viene installata al successivo avvio:
docker compose exec -T antimatter amctl --local config patch /dev/stdin <<'EOF'
{"PluginSettings": {"PluginStates": {"com.mattermost.plugin-todo": {"Enable": true}}}}
EOF
docker compose restart antimatter
Questo è anche il modo per installare Da fare, che non è offerto nella finestra di dialogo del Marketplace. La variabile AM_PLUGINSETTINGS_PLUGINSTATES funziona anch'essa, ma sostituisce l'intera mappa: elenca tutte le app che desideri attive.
Impostazioni delle app
Le impostazioni delle app sono memorizzate in PluginSettings.Plugins.<app id>, con chiavi in minuscolo. Modificali nella pagina Console di Sistema dell'app, oppure con amctl config patch come mostrato in Configurazione. AM_PLUGINSETTINGS_PLUGINS sostituisce le impostazioni di tutte le app in una volta sola e le blocca, quindi evitalo.
GIF
L'app GIF aggiunge una scheda per GIF e adesivi al selettore delle emoji, supportata dal servizio GIF di Antimatter (gifs-server), che utilizza l'API di Tenor. Il file di configurazione del sito esegue il servizio e configura l'app tramite variabili. Le sue impostazioni, in Console di Sistema › Plugins › GIF:
| Impostazione | Variabile (valore di fallback) | Predefinito | Funzione |
|---|---|---|---|
| URL del servizio GIF | AM_GIFS_SERVICE_URL | vuoto | La base API del servizio, ad esempio http://gifs:8080/v2. Le GIF sono disattivate mentre è vuoto. |
| Chiave API | AM_GIFS_API_KEY | vuoto | Una delle AM_GIFS_API_KEYS del servizio. |
| Chiave di caricamento | AM_GIFS_UPLOAD_KEY | vuoto | Uno dei AM_GIFS_UPLOAD_KEYS del servizio. Permette alle persone di aggiungere GIF e adesivi dal selettore e di eliminare quelli aggiunti in questo modo. Se vuoto, il caricamento è disattivato. |
| Chi può aggiungere GIF e sticker | Amministratori di sistema | Amministratori di sistema o Tutti. Gli ospiti non possono mai farlo, come per le emoji personalizzate. Ciò che le persone aggiungono è disponibile a tutti; la persona che l'ha aggiunto e gli amministratori di sistema possono eliminarlo. | |
| Abilita sticker | on | Mostra la scheda sticker. | |
| Filtro dei contenuti | medium | high, medium, low o off. | |
| Servire i media tramite Antimatter | on | I browser caricano le GIF da Antimatter, che le recupera dal servizio. Tienilo attivo quando il servizio è solo sulla rete interna. | |
| URL dei media | il /media/ del servizio | Dove si trovano i media, quando serviti direttamente. | |
| Dimensione della cache (MB) | 64 MB | Cache in memoria dell'app. |
Per questa app, le variabili sono solo valori di fallback: un valore impostato nella Console di Sistema ha la priorità su di esse. Se il selettore GIF resta vuoto, controlla l'URL del servizio e la chiave API in quella pagina.
Mentre l'app GIF è configurata, la sua scheda sostituisce il selettore Giphy integrato (Console di Sistema › Integrazioni › GIF (Beta) › Attiva il selettore delle GIF, ServiceSettings.EnableGifPicker).
Il servizio GIF
Il servizio conserva tutto nella sua directory dati (/data, il volume gifs): un indice di ricerca e i media. Le sue principali variabili:
| Variabile | Predefinito | Funzione |
|---|---|---|
AM_GIFS_API_KEYS | nessuna | Chiavi API separate da virgola. Senza una chiave, l'API è aperta a chiunque ci acceda. Più chiavi permettono di ruotarle. |
AM_GIFS_UPLOAD_KEYS | nessuna | Chiavi autorizzate a caricare e a eliminare ciò che è stato caricato. Nessun caricamento senza una chiave. |
AM_GIFS_RATE_LIMIT | 20 | Richieste al secondo per client (chiave API e indirizzo); 0 le disattiva. Il file compose imposta 0, perché tutte le richieste di Antimatter condividono una sola chiave e un solo indirizzo. |
AM_GIFS_LISTEN | :8080 | Indirizzo di ascolto. |
AM_GIFS_PUBLIC_URL | dalle richieste | URL esterno, se esponi il servizio. |
AM_GIFS_TRUST_PROXY | false | Fidati delle intestazioni X-Forwarded-*, solo dietro un proxy. |
AM_GIFS_UPLOAD_MAX_MB | 16 | Dimensione massima del file caricato. |
Per importare in blocco i tuoi GIF, usa un manifest da una directory montata in un container monouso:
docker compose run --rm -v "$PWD/my-gifs:/import:ro" gifs import -manifest /import/manifest.json
Per reimportare gli sticker iniziali dopo un aggiornamento: docker compose run --rm gifs stickers. Il formato del manifest e gli altri comandi sono nel README di gifs-server.
Posta e Calendario
Posta e Calendario collegano ogni persona alla propria casella di posta (IMAP e SMTP) e al proprio calendario (CalDAV). Le persone inseriscono server e password nell'app; le password sono memorizzate in forma cifrata. Non configuri i server di posta o calendario per loro, ma decidi a cosa possono collegarsi:
| App | Impostazione | Predefinito | Funzione |
|---|---|---|---|
| Posta, Calendario | Consenti server di posta su reti private, Consenti server di calendario su reti private (AllowPrivateNetworks) | disattivato | Disattivato, il server rifiuta i collegamenti a indirizzi loopback, privati e link-local, in modo che le app non possano essere usate per raggiungere la rete interna. Attivalo se il tuo server di posta o calendario è su un indirizzo privato. |
| Posta, Calendario | Consenti connessioni non crittografate (AllowInsecureConnections) | disattivato | Disattivato, le connessioni devono usare TLS (Posta: TLS o STARTTLS; Calendario: HTTPS). |
| Posta | Intervallo di verifica dei non letti (minuti) (UnreadCheckMinutes) | 2 minuti | Con quale frequenza vengono verificati i conteggi dei non letti quando il server di posta non può inviarli in push. |
| Posta | Dimensione massima dei messaggi (MB) (MaxMessageSizeMB) | 25 MB | Limite di dimensione dei messaggi inviati e letti. |
| Calendario | Invia promemoria (EnableReminders) | on | Il bot Calendario invia un messaggio diretto prima degli eventi (10 minuti prima, per gli eventi senza allarme proprio). |
Per consentire alle persone di accedere alle caselle di posta Gmail o Microsoft 365 con il proprio account invece di una password, crea un client OAuth e compila i campi Google o Microsoft dell'app Posta:
- Google: un client OAuth Web con la Gmail API e lo scope
https://mail.google.com/. - Microsoft: un'app Entra ID con i permessi delegati
IMAP.AccessAsUser.All,SMTP.Send,offline_access,openid,emaileprofile. Il tenant ècommondi default. - In entrambi i casi, l'URI di reindirizzamento è
https://chat.example.com/plugins/com.antimatterchat.mail/oauth/callback(l'URL del tuo sito).
Kanban, Note, Lavagna, Sondaggi e Playbook
- Kanban (
focalboard) si apre nel pannello laterale accanto alla conversazione, come i Playbook. I vecchi collegamenti alle pagine/kanban/…e/boards/…aprono la stessa bacheca o scheda in una community. La sua unica impostazione, Attiva bacheche condivise pubblicamente (EnablePublicSharedBoards, disattivata), consente agli editor della bacheca di condividerla con chiunque abbia il collegamento, senza effettuare l'accesso. - Note e Sondaggi non dispongono di impostazioni.
- Lavagna: gli amministratori di sistema possono caricare librerie di forme (file Excalidraw
.excalidrawlib, fino a 5 MB ciascuna) per l'intero server nella pagina delle impostazioni. Gli amministratori della community gestiscono le librerie della propria community. - Playbook si apre nel pannello laterale. I vecchi collegamenti alle pagine
/playbooks/…aprono la stessa esecuzione o playbook in una community. Dispone di alcune impostazioni, per lo più funzionalità sperimentali; i valori predefiniti sono adatti alla maggior parte dei server. - Meme: Chi può aggiungere modelli di meme: Tutti (valore predefinito), Amministratori di sistema o Nessuno (modelli personalizzati disattivati), che impedisce l'aggiunta di nuovi modelli mantenendo utilizzabili quelli già presenti. Gli ospiti non possono mai aggiungere modelli. La persona che ha aggiunto un modello e gli amministratori di sistema possono eliminarlo.
- Da fare non dispone di impostazioni di server.
GitHub, GitLab e Jira
Queste app collegano Antimatter al tuo host di codice e al tracker delle issue. Ogni app richiede un'applicazione OAuth sul lato opposto e un webhook che punti ad Antimatter. Abilita l'app, quindi esegui il suo comando di configurazione in qualsiasi canale, che ti guiderà passo dopo passo: /github setup, /gitlab setup o /jira setup.
| App | URL di reindirizzamento OAuth | URL del webhook |
|---|---|---|
| GitHub | https://chat.example.com/plugins/github/oauth/complete | https://chat.example.com/plugins/github/webhook |
| GitLab | https://chat.example.com/plugins/com.github.manland.mattermost-plugin-gitlab/oauth/complete | https://chat.example.com/plugins/com.github.manland.mattermost-plugin-gitlab/webhook |
| Jira | /jira instance install server <url> o /jira instance install cloud-oauth <url>; /jira webhook visualizza gli URL dei webhook. | |
Le app GitHub e GitLab generano il segreto del webhook e la chiave di crittografia al primo salvataggio. L'app GitHub può essere limitata alle organizzazioni (GithubOrg) e l'app GitLab a un gruppo (GitlabGroup); per GitHub Enterprise o un GitLab self-hosted, imposta il suo URL di base.
Metriche
L'app Metrics raccoglie le metriche di prestazioni del server in un piccolo database di serie temporali all'interno di Antimatter, consentendoti di scaricarle o di includerle in un pacchetto di supporto senza dover eseguire Prometheus. All'avvio, attiva il punto di accesso alle metriche del server (MetricsSettings.Enable). Consulta Operazioni.
Installazione di altre app
Antimatter esegue le app Mattermost (plugin). Tre modi per aggiungerne una:
- Da un marketplace remoto. Attiva marketplace remoto (
PluginSettings.EnableRemoteMarketplace) è disattivato per impostazione predefinita e URL marketplace (PluginSettings.MarketplaceURL) è vuoto: Antimatter non utilizza il marketplace di Mattermost e ne ignora l'indirizzo se una configurazione derivata da Mattermost lo contiene ancora. Per elencare le app di un server marketplace di cui ti fidi, attiva l'impostazione e imposta il relativo URL. Le build di marketplace delle app incluse in Antimatter (Calls, Playbook, Kanban e altre) sono nascoste, in modo che non possano sostituire quelle di Antimatter: Consenti build di Marketplace per i plugin di Antimatter (PluginSettings.AllowMarketplaceToReplaceAntimatterPlugins) è disattivato per impostazione predefinita. - Caricando un bundle (
.tar.gz). I caricamenti sono disabilitati di default e non dispongono di un interruttore nella Console di Sistema: impostaAM_PLUGINSETTINGS_ENABLEUPLOADS=true, quindi usa Carica Plugin nella Gestione Plugin, oppureamctl --local plugin add app.tar.gz. - Dal URL:
amctl plugin install-url <url>, anche con i caricamenti abilitati.
Antimatter verifica le firme delle app rispetto alle chiavi di cui si fida: la chiave di Antimatter, la chiave con cui Mattermost, Inc. firma le sue app pubblicate (in modo che un'app di Mattermost scaricata manualmente possa essere installata) e qualsiasi chiave aggiunta in PluginSettings.SignaturePublicKeyFiles. Con Richiedi firma plugin (PluginSettings.RequirePluginSignature, disattivato per impostazione predefinita) attivato, le app non firmate vengono rifiutate e i caricamenti vengono disabilitati.
Alcune app create per le edizioni a pagamento di Mattermost verificano autonomamente la presenza di una licenza Mattermost e si rifiutano di essere eseguite; Antimatter non finge di averne una per loro.