Configuração
Onde o Antimatter guarda as suas definições, as três formas de as alterar (Consola do sistema, variáveis de ambiente, amctl) e onde ficam os registos.
Onde ficam as definições
Cada definição do servidor tem um nome composto por uma secção e uma chave, como ServiceSettings.SiteURL ou EmailSettings.SMTPServer. Juntos, formam uma única configuração, guardada num de dois locais:
- Na base de dados. O ficheiro de composição do site define
AM_CONFIGcom o URL de ligação ao PostgreSQL, pelo que a configuração é uma linha na base de dados e o contentor não guarda nada no disco. Vários servidores que partilham a mesma base de dados também partilham a sua configuração. - Num ficheiro. Sem
AM_CONFIG, o servidor lêconfig/config.jsonjunto ao seu diretóriobin/(/antimatter/config/config.jsonna imagem Docker). O arquivo de libertação e os ficheiros de composição de produção do antimatter-docker funcionam desta forma, tal como os pacotes .deb e .rpm, cujo ficheiro é/etc/antimatter/config/config.json. Mantenha este ficheiro legível apenas pelo utilizador do servidor: contém palavras-passe e chaves.
AM_CONFIG (ou a opção --config do comando antimatter) aceita um caminho de ficheiro ou um URL postgres://. As definições que não especificar assumem o seu valor predefinido.
Para mover uma configuração existente de um ficheiro para a base de dados, execute o seguinte no servidor e, em seguida, inicie o servidor com AM_CONFIG definido com o mesmo URL:
amctl --local config migrate /opt/antimatter/config/config.json \
"postgres://antimatter:PASSWORD@localhost:5432/antimatter?sslmode=disable&connect_timeout=10"
Variáveis de ambiente
Qualquer definição também pode ser fornecida como variável de ambiente. As variáveis têm prioridade sobre a configuração guardada, o que as torna adequadas para o que pertence à implantação: a base de dados, o URL do site, o armazenamento de ficheiros, as portas.
Regra de nomenclatura
Escreva AM_, depois a secção, depois a chave, em maiúsculas e separadas por sublinhados. As palavras dentro de um nome de secção ou chave não são separadas:
| Definição | Variável |
|---|---|
ServiceSettings.SiteURL | AM_SERVICESETTINGS_SITEURL |
SqlSettings.DataSource | AM_SQLSETTINGS_DATASOURCE |
EmailSettings.SMTPServer | AM_EMAILSETTINGS_SMTPSERVER |
PrivacySettings.EnableUserBlocking | AM_PRIVACYSETTINGS_ENABLEUSERBLOCKING |
- As definições de verdadeiro e falso tomam
trueoufalse; os números são números simples. - As definições de lista tomam os seus valores separados por espaços, por exemplo
AM_SERVICESETTINGS_TRUSTEDPROXYIPHEADER="X-Forwarded-For X-Real-IP". - As definições que são objetos tomam JSON. A única variável deste tipo para aplicações é
AM_PLUGINSETTINGS_PLUGINS, e substitui as definições de todas as aplicações de uma vez: defina as definições das aplicações na Consola do sistema ou comamctl(ver abaixo). - As configurações antigas do Mattermost usam o prefixo
MM_, por exemploMM_SQLSETTINGS_DATASOURCE. Continua a funcionar como um alias de legado. Quando ambos estão definidos, a variávelAM_tem prioridade.
Uma definição dada por uma variável fica bloqueada no Consola do sistema, com a nota "Esta definição foi configurada através de uma variável de ambiente. Não pode ser alterada através do Consola do sistema." Não é gravada na configuração armazenada: remova a variável e o valor armazenado volta a aplicar-se.
Com Docker Compose
Adicione variáveis sob environment: do serviço antimatter, ou num compose.override.yaml ao lado do compose.yaml (o Compose lê-o automaticamente, e ele sobrevive a atualizações do ficheiro descarregado):
services:
antimatter:
environment:
AM_EMAILSETTINGS_SMTPSERVER: smtp.example.com
AM_EMAILSETTINGS_SMTPPORT: "587"
AM_LOGSETTINGS_CONSOLELEVEL: INFO
Aplique as alterações com docker compose up -d, que recria o contentor.
Variáveis lidas pelas aplicações
Algumas variáveis não são definições e não têm campo na Consola do sistema: AM_CONFIG (onde está a configuração), e AM_AI_ENCRYPTION_KEY e AM_AI_ENCRYPTION_PREVIOUS_KEYS, a chave que cifra as chaves de API das ligações de modelos (ver IA).
Algumas aplicações leem as suas próprias variáveis, definidas no serviço antimatter: a aplicação de Chamadas lê AM_CALLS_* (ver Chamadas e voz), e a aplicação de GIFs lê AM_GIFS_SERVICE_URL, AM_GIFS_API_KEY e AM_GIFS_UPLOAD_KEY (ver Aplicações incluídas).
O Consola do sistema
A Consola do sistema é a área de administração da aplicação web, destinada a administradores de sistema. Para a abrir, clique na sua imagem no topo da barra lateral da aplicação e escolha Consola do sistema, ou aceda a https://chat.example.com/admin_console. A sua barra lateral tem uma caixa Procurar definições que pesquisa em todas as páginas.

As suas secções são:
- Relatórios: estatísticas e registos do servidor.
- Gestão de Utilizadores: utilizadores, grupos, comunidades (listadas como Equipas), canais, permissões e administração delegada.
- Atributos do Sistema: atributos de perfil personalizados e acesso baseado em atributos.
- Ambiente: servidor web, base de dados, armazenamento de ficheiros, proxy de imagens, SMTP, notificações push, limitação de taxa, registos, durações de sessão, monitorização de desempenho.
- Configuração do Site: marca, utilizadores e equipas, notificações, publicações, partilha de ficheiros e outros comportamentos em todo o servidor.
- Autenticação: registo, início de sessão por email e palavra-passe, MFA, AD/LDAP, SAML 2.0, OAuth 2.0, OpenID Connect e acesso de convidados.
- IA: ligações de modelos e as funcionalidades de IA integradas (reescrita, resumos, tradução automática, texto para fala). Ver IA.
- Plugins: gestão de aplicações e definições de cada aplicação instalada.
- Integrações: webhooks, comandos de barra, contas de bot, GIFs, texto para fala, CORS.
- Conformidade: retenção de dados, exportação e monitorização de conformidade, registo de auditoria, termos de serviço personalizados.
- Experimental: funcionalidades que podem mudar.
Neste guia, uma definição é indicada pelo seu caminho na Consola do sistema, depois pela sua etiqueta e, por fim, pela sua chave de configuração, por exemplo Consola do sistema › Configuração do site › Utilizadores e equipas › Ativar ignorar, bloquear e pedidos de mensagem (PrivacySettings.EnableUserBlocking).
A maioria das alterações é aplicada assim que clicar em Guardar. Algumas (o endereço de escuta, algumas definições de base de dados e de cache) necessitam de uma reinicialização, e a página indica-o.
Local de trabalho ou comunidade
Cada comunidade tem um tipo, que define algumas das suas predefinições:
- Comunidade, para uma comunidade pública ou de lazer: as chamadas estão desativadas nos seus canais (as pessoas conversam em canais de voz) e apenas os seus administradores, e as funções que gerem canais, arquivam canais.
- Local de trabalho, para uma empresa ou organização: as chamadas estão ativadas nos seus canais, e os administradores de um canal (quem o criou, e aqueles a quem deu o papel de administrador) também o arquivam.
Consola do sistema › Configuração do site › Utilizadores e equipas › Tipo de novas comunidades (TeamSettings.DefaultCommunityKind, AM_TEAMSETTINGS_DEFAULTCOMMUNITYKIND) é o tipo das comunidades criadas a partir de então: community (a predefinição) ou workplace. Uma predefinição de layout escolhida ao criar uma comunidade define o seu próprio tipo. Os administradores de cada comunidade podem alterar o seu tipo mais tarde, em Definições da equipa › Canais › Tipo de comunidade.
A ferramenta de linha de comandos amctl
amctl gere um servidor a partir da linha de comandos: utilizadores, comunidades, canais, aplicações, configuração, tarefas e mais. Comunica com o servidor de uma de duas formas.
Modo local, no servidor
O modo local permite que o amctl se comunique com o servidor através de um socket Unix, sem necessidade de iniciar sessão. Está ativado na imagem Docker e nos pacotes .deb e .rpm. Num servidor instalado a partir de um arquivo, ative-o com ServiceSettings.EnableLocalMode (AM_SERVICESETTINGS_ENABLELOCALMODE=true). O socket é, por omissão, /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
docker compose exec no host, tem direitos completos de administrador do sistema.Remoto, com uma conta
A partir de qualquer máquina, inicie sessão com uma conta de administrador do sistema (ou um token de acesso pessoal) e, em seguida, execute comandos nesse servidor:
amctl auth login https://chat.example.com --name prod --username admin
amctl system status
Comandos de configuração
| Comando | O que faz |
|---|---|
amctl config get ServiceSettings.SiteURL | Imprime uma definição. |
amctl config set TeamSettings.EnableOpenServer false | Altera uma definição. As definições de lista aceitam vários valores. |
amctl config patch settings.json | Funde um ficheiro JSON de definições na configuração. |
amctl config show | Imprime toda a configuração como JSON. |
amctl config edit | Abre a configuração no seu editor ($EDITOR). |
amctl config reset | Repor as definições para os valores predefinidos. |
amctl config reload | Recarrega a configuração a partir do local onde está armazenada, após uma alteração feita fora do servidor. |
As definições das aplicações estão sob PluginSettings.Plugins.<app id>, com chaves em minúsculas. Por exemplo, para definir o URL e a chave de serviço da aplicação GIFs a partir do host 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
Outros comandos úteis: amctl user create, amctl user deactivate, amctl team create, amctl plugin list, amctl plugin enable, amctl system supportpacket e amctl logs. Execute amctl help <command> para as opções de cada um.
Registos
O servidor escreve os registos em dois locais, cada um com o seu próprio nível (DEBUG, INFO, WARN ou ERROR), definido em Consola do sistema › Ambiente › Registos:
| Destino | Definições | Predefinições |
|---|---|---|
| A consola (saída padrão) | Saída dos registos para a consola (LogSettings.EnableConsole), Nível de Registo da Consola (LogSettings.ConsoleLevel), Saída dos registos da consola em JSON (LogSettings.ConsoleJson) | ativado, DEBUG, JSON |
Um ficheiro, antimatter.log | Saída dos registos para ficheiro (LogSettings.EnableFile), Nível de Registo de Ficheiro (LogSettings.FileLevel), Diretório de Registo de Ficheiro (LogSettings.FileLocation) | ativado, INFO, o diretório logs/ junto a bin/ |
Os ficheiros de registo de eventos são rotacionados a 100 MB e os antigos são comprimidos.
O ficheiro compose do site desativa o registo de eventos em ficheiro (AM_LOGSETTINGS_ENABLEFILE=false), pelo que os registos de eventos só estão na saída do contentor:
docker compose logs -f antimatter
docker compose logs --since 1h antimatter | grep -i error
O nível da consola é, por omissão, DEBUG, o que é detalhado. Num servidor com muito tráfego, defina AM_LOGSETTINGS_CONSOLELEVEL=INFO. O config.json do arquivo de lançamento e dos pacotes já o define como INFO. Com um arquivo de lançamento sob o systemd, a saída da consola vai para o journal (journalctl -u antimatter) e o ficheiro para /opt/antimatter/logs/antimatter.log. Os pacotes desativam a gravação de registos em ficheiro, pelo que os registos só existem no journal.
Quando a gravação de registos em ficheiro está ativa, os administradores do sistema também podem ler as linhas mais recentes dos registos em Consola do sistema › Relatórios › Registos do servidor, ou com amctl logs.