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_CONFIG como 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.json ao lado do diretório bin/ (/antimatter/config/config.json na 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çãoVariável
ServiceSettings.SiteURLAM_SERVICESETTINGS_SITEURL
SqlSettings.DataSourceAM_SQLSETTINGS_DATASOURCE
EmailSettings.SMTPServerAM_EMAILSETTINGS_SMTPSERVER
PrivacySettings.EnableUserBlockingAM_PRIVACYSETTINGS_ENABLEUSERBLOCKING
  • Configurações de verdadeiro e falso aceitam true ou false; 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 com amctl em vez disso (veja abaixo).
  • Configurações antigas do Mattermost usam o prefixo MM_, por exemplo MM_SQLSETTINGS_DATASOURCE. Ainda funciona como um alias legado. Quando ambos estão definidos, a variável AM_ 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.

The System Console, with its sidebar of sections on the left and the SAML 2.0 settings page on the right.
O Console do Sistema. A barra lateral agrupa as páginas em seções, como Relatórios, Gerenciamento de Usuários e Ambiente.

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.

Para uma empresa, defina como Ambiente de trabalho antes de criar a primeira comunidade ou antes de atualizar um servidor existente para a versão 0.9.0: a atualização atribui a cada comunidade existente o valor que a configuração possui naquele momento (veja Atualização para a versão 0.9.0).

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
Qualquer pessoa que possa usar o soquete ou executar 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

ComandoO que faz
amctl config get ServiceSettings.SiteURLExibe uma configuração.
amctl config set TeamSettings.EnableOpenServer falseAltera uma configuração. Configurações de lista aceitam vários valores.
amctl config patch settings.jsonMescla um arquivo JSON de configurações na configuração atual.
amctl config showExibe toda a configuração como JSON.
amctl config editAbre a configuração no seu editor ($EDITOR).
amctl config resetRedefine as configurações para os valores padrão.
amctl config reloadRecarrega 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:

DestinoConfiguraçõesPadrõ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.logArquivo 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.