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_CONFIG com 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.json junto ao seu diretório bin/ (/antimatter/config/config.json na 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çãoVariável
ServiceSettings.SiteURLAM_SERVICESETTINGS_SITEURL
SqlSettings.DataSourceAM_SQLSETTINGS_DATASOURCE
EmailSettings.SMTPServerAM_EMAILSETTINGS_SMTPSERVER
PrivacySettings.EnableUserBlockingAM_PRIVACYSETTINGS_ENABLEUSERBLOCKING
  • As definições de verdadeiro e falso tomam true ou false; 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 com amctl (ver abaixo).
  • As configurações antigas do Mattermost usam o prefixo MM_, por exemplo MM_SQLSETTINGS_DATASOURCE. Continua a funcionar como um alias de legado. Quando ambos estão definidos, a variável AM_ 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.

The System Console, with its sidebar of sections on the left and the SAML 2.0 settings page on the right.
O Consola do sistema. A barra lateral agrupa as páginas em secções, como Relatórios, Gestão de Utilizadores e Ambiente.

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.

Para uma empresa, defina Local 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 todas as comunidades existentes o valor que a definição tem nesse momento (ver Atualização para a versão 0.9.0).

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
Qualquer pessoa que possa utilizar o socket, ou executar 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

ComandoO que faz
amctl config get ServiceSettings.SiteURLImprime uma definição.
amctl config set TeamSettings.EnableOpenServer falseAltera uma definição. As definições de lista aceitam vários valores.
amctl config patch settings.jsonFunde um ficheiro JSON de definições na configuração.
amctl config showImprime toda a configuração como JSON.
amctl config editAbre a configuração no seu editor ($EDITOR).
amctl config resetRepor as definições para os valores predefinidos.
amctl config reloadRecarrega 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:

DestinoDefiniçõesPredefiniçõ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.logSaí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.