Configuração
Onde o Antimatter armazena suas configurações, as três formas de alterá-las (Console do Sistema, variáveis de ambiente, amctl) e onde ficam os logs.
Onde ficam as configurações
Cada configuração do servidor tem um nome composto por uma seção e uma chave, como ServiceSettings.SiteURL ou EmailSettings.SMTPServer. Juntos, eles formam uma única configuração, armazenada em um de dois locais:
- No banco de dados. O arquivo de composição do site define
AM_CONFIGcomo a URL de conexão do PostgreSQL, de modo que a configuração é uma linha no banco de dados e o contêiner não mantém nada no disco. Vários servidores que compartilham um único banco de dados também compartilham sua configuração. - Em um arquivo. Sem
AM_CONFIG, o servidor lêconfig/config.jsonao lado do diretóriobin/(/antimatter/config/config.jsonna imagem Docker). O arquivo de liberação e os arquivos de compose de produção do antimatter-docker funcionam assim, assim como os pacotes .deb e .rpm, cujo arquivo é/etc/antimatter/config/config.json. Mantenha este arquivo legível apenas pelo usuário do servidor: ele contém senhas e chaves.
AM_CONFIG (ou a flag --config do comando antimatter) aceita um caminho de arquivo ou uma URL postgres://. As configurações que você não especificar assumem seu valor padrão.
Para mover uma configuração existente de um arquivo para o banco de dados, execute o seguinte no servidor e, em seguida, inicie o servidor com AM_CONFIG definido para a mesma 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 configuração também pode ser fornecida como uma variável de ambiente. As variáveis têm prioridade sobre a configuração armazenada, o que as torna adequadas para o que pertence à implantação: o banco de dados, a URL do site, o armazenamento de arquivos, as portas.
Regra de nomenclatura
Escreva AM_, depois a seção, depois a chave, em letras maiúsculas e separadas por sublinhados. As palavras dentro de um nome de seção ou chave não são separadas:
| Configuração | Variável |
|---|---|
ServiceSettings.SiteURL | AM_SERVICESETTINGS_SITEURL |
SqlSettings.DataSource | AM_SQLSETTINGS_DATASOURCE |
EmailSettings.SMTPServer | AM_EMAILSETTINGS_SMTPSERVER |
PrivacySettings.EnableUserBlocking | AM_PRIVACYSETTINGS_ENABLEUSERBLOCKING |
- Configurações de verdadeiro e falso aceitam
trueoufalse; números são números simples. - Configurações de lista aceitam seus valores separados por espaços, por exemplo
AM_SERVICESETTINGS_TRUSTEDPROXYIPHEADER="X-Forwarded-For X-Real-IP". - Configurações que são objetos aceitam JSON. A única variável desse tipo para aplicativos é
AM_PLUGINSETTINGS_PLUGINS, e ela substitui as configurações de todos os aplicativos de uma vez: defina as configurações do aplicativo no Console do Sistema ou comamctlem vez disso (veja abaixo). - Configurações antigas do Mattermost usam o prefixo
MM_, por exemploMM_SQLSETTINGS_DATASOURCE. Ainda funciona como um alias legado. Quando ambos estão definidos, a variávelAM_tem prioridade.
Uma configuração definida por uma variável fica bloqueada no Console do Sistema, com a nota "Esta configuração foi definida por uma variável de ambiente. Não pode ser alterada pelo Console do Sistema." Ela não é gravada na configuração armazenada: remova a variável e o valor armazenado será aplicado novamente.
Com Docker Compose
Adicione as variáveis sob environment: do serviço antimatter, ou em um compose.override.yaml ao lado do compose.yaml (o Compose o lê automaticamente, e ele permanece após atualizações do arquivo baixado):
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 contêiner.
Variáveis lidas pelos aplicativos
Algumas variáveis não são configurações e não têm campo no Console do Sistema: AM_CONFIG (onde a configuração está), e AM_AI_ENCRYPTION_KEY e AM_AI_ENCRYPTION_PREVIOUS_KEYS, a chave que criptografa as chaves de API das conexões de modelos (veja IA).
Alguns aplicativos leem suas próprias variáveis, definidas no serviço antimatter: o aplicativo de Chamadas lê AM_CALLS_* (veja Chamadas e voz), e o aplicativo de GIFs lê AM_GIFS_SERVICE_URL, AM_GIFS_API_KEY e AM_GIFS_UPLOAD_KEY (veja Aplicativos incluídos).
O Console do Sistema
O Console do Sistema é a área de administração do aplicativo web, para administradores do sistema. Para abri-lo, clique na sua foto no topo da barra lateral do aplicativo e escolha Console do Sistema, ou acesse https://chat.example.com/admin_console. Sua barra lateral tem uma caixa Encontrar configurações que pesquisa todas as páginas.

Suas seções são:
- Reportando: estatísticas e os logs do servidor.
- Gestão de Usuários: usuários, grupos, comunidades (listadas como Equipes), canais, permissões e administração delegada.
- Atributos do Sistema: atributos de perfil personalizados e acesso baseado em atributos.
- Ambiente: servidor web, banco de dados, armazenamento de arquivos, proxy de imagens, SMTP, notificações push, limitação de taxa, logs, duração de sessões e monitoramento de desempenho.
- Configuração do Site: identidade visual, usuários e equipes, notificações, publicações, compartilhamento de arquivos e outros comportamentos em escala de servidor.
- Autenticação: cadastro, login por e-mail e senha, MFA, AD/LDAP, SAML 2.0, OAuth 2.0, OpenID Connect e acesso de convidados.
- IA: conexões de modelos e os recursos de IA integrados (reescrita, resumos, tradução automática, texto para fala). Veja IA.
- Plugins: gerenciamento de aplicativos e as configurações de cada aplicativo instalado.
- Integrações: webhooks, comandos de barra, contas de bot, GIFs, texto para fala, CORS.
- Conformidade: retenção de dados, exportação e monitoramento de conformidade, registro de auditoria, termos de serviço personalizados.
- Experimental: recursos que podem mudar.
Neste guia, uma configuração é escrita como seu caminho no Console do Sistema, depois seu rótulo, depois sua chave de configuração, por exemplo Console do Sistema › Configuração do Site › Usuários e Equipes › Ativar ignorar, bloquear e solicitações de mensagem (PrivacySettings.EnableUserBlocking).
A maioria das alterações é aplicada assim que você clica em Salvar. Algumas (o endereço de escuta, algumas configurações de banco de dados e cache) exigem uma reinicialização, e a página informa isso.
Ambiente de trabalho ou comunidade
Cada comunidade tem um tipo, que define alguns de seus padrões:
- Comunidade, para uma comunidade pública ou de hobby: as chamadas estão desativadas em seus canais (as pessoas conversam em canais de voz), e apenas seus administradores, e as funções que gerenciam canais, arquivam canais.
- Ambiente de trabalho, para uma empresa ou organização: as chamadas estão ativadas em seus canais, e os administradores de um canal (quem o criou, e aqueles que eles tornaram administradores) também o arquivam.
Console do Sistema › Configuração do Site › Usuários e Equipes › Tipo de novas comunidades (TeamSettings.DefaultCommunityKind, AM_TEAMSETTINGS_DEFAULTCOMMUNITYKIND) é o tipo das comunidades criadas a partir de então: community (o padrão) ou workplace. Um preset de layout escolhido ao criar uma comunidade define seu próprio tipo. Os administradores de cada comunidade podem alterar seu tipo posteriormente, em Configurações da equipe › Canais › Tipo de comunidade.
A ferramenta de linha de comando amctl
amctl gerencia um servidor pela linha de comando: usuários, comunidades, canais, aplicativos, configuração, tarefas e mais. Ele se comunica com o servidor de uma das duas formas.
Modo local, no servidor
O modo local permite que o amctl se comunique com o servidor por meio de um socket Unix, sem necessidade de login. Ele está ativado na imagem Docker e nos pacotes .deb e .rpm. Em um servidor instalado a partir de um arquivo de distribuição, ative-o com ServiceSettings.EnableLocalMode (AM_SERVICESETTINGS_ENABLELOCALMODE=true). O socket padrã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, faça login com uma conta de administrador do sistema (ou um token de acesso pessoal) e, em seguida, execute comandos contra esse 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 | Exibe uma configuração. |
amctl config set TeamSettings.EnableOpenServer false | Altera uma configuração. Configurações de lista aceitam vários valores. |
amctl config patch settings.json | Mescla um arquivo JSON de configurações na configuração atual. |
amctl config show | Exibe toda a configuração como JSON. |
amctl config edit | Abre a configuração no seu editor ($EDITOR). |
amctl config reset | Redefine as configurações para os valores padrão. |
amctl config reload | Recarrega a configuração de onde ela está armazenada, após uma alteração feita fora do servidor. |
As configurações de aplicativos ficam em PluginSettings.Plugins.<app id>, com chaves em letras minúsculas. Por exemplo, para definir a URL de serviço e a chave do aplicativo 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 ver as opções de cada um.
Registros
O servidor grava seus logs em dois locais, cada um com seu próprio nível (DEBUG, INFO, WARN ou ERROR), configurado em Console do Sistema › Ambiente › Log:
| Destino | Configurações | Padrões |
|---|---|---|
| O console (saída padrão) | Log de saída para o console (LogSettings.EnableConsole), Nível de Log Console (LogSettings.ConsoleLevel), Logs do console de saída em JSON (LogSettings.ConsoleJson) | ativado, DEBUG, JSON |
Um arquivo, antimatter.log | Arquivo de logs de saída (LogSettings.EnableFile), Nível do Arquivo de Log (LogSettings.FileLevel), Diretório de Arquivo de Log (LogSettings.FileLocation) | ativado, INFO, o diretório logs/ ao lado de bin/ |
Os arquivos de log são rotacionados a cada 100 MB e os antigos são compactados.
O arquivo compose do site desativa o log para arquivo (AM_LOGSETTINGS_ENABLEFILE=false), de modo que os logs ficam apenas na saída do contêiner:
docker compose logs -f antimatter
docker compose logs --since 1h antimatter | grep -i error
O nível do console é DEBUG por padrão, o que gera muitas informações. Em um servidor com alta atividade, defina AM_LOGSETTINGS_CONSOLELEVEL=INFO. O arquivo config.json do arquivo de distribuição e dos pacotes já o define como INFO. Com um arquivo de distribuição sob o systemd, a saída do console vai para o journal (journalctl -u antimatter) e o arquivo para /opt/antimatter/logs/antimatter.log. Os pacotes desativam o registro em arquivo, de modo que seus logs ficam apenas no journal.
Quando o log de arquivo está ativado, os administradores do sistema também podem ler as linhas de log mais recentes em Console do Sistema › Reportando › Log do Servidor, ou com amctl logs.