Backups e atualizações

O que fazer backup, como restaurá-lo em um novo host, como atualizar e como migrar um servidor Mattermost ou uma única comunidade para o Antimatter.

O que fazer backup

O quêCom o arquivo compose do siteCom um arquivo de releaseCom o pacote .deb ou .rpm
O banco de dados: mensagens, usuários, comunidades, canais e, com o arquivo compose do site, a configuraçãovolume antimatter_postgres, por meio de pg_dumpseu banco de dados PostgreSQLseu banco de dados PostgreSQL
Arquivos enviados, imagens e aplicativos instaladosvolume antimatter_files (o armazenamento S3)FileSettings.Directory, ./data/ por padrão/var/lib/antimatter
O arquivo de configuração(no banco de dados)config/config.json/etc/antimatter/config/config.json
GIFs e figurinhasvolume antimatter_gifso diretório de dados do serviço de GIFs/var/lib/gifs-server
Segredos.env (e compose.override.yaml)seu arquivo de ambiente/etc/antimatter/antimatter.env, /etc/gifs-server
A chave de criptografia de IA, que criptografa as chaves das conexões de modelosAM_AI_ENCRYPTION_KEY em .env (recomendado), ou o arquivo ai-encryption.key no volume antimatter_dataAM_AI_ENCRYPTION_KEY, ou data/ai-encryption.keyAM_AI_ENCRYPTION_KEY em antimatter.env, ou /var/lib/antimatter/data/ai-encryption.key

Sem a chave de criptografia de IA, um servidor restaurado não consegue ler as chaves de API das suas conexões de modelos, e cada uma delas precisa ser digitada novamente. Mantenha uma cópia da chave separada dos backups do banco de dados, para que um backup roubado não contenha ambos. Veja A chave de criptografia.

O banco de dados e os arquivos pertencem juntos: faça backup deles ao mesmo tempo e mantenha cópias fora do servidor. Os nomes dos volumes começam com o nome do projeto compose, antimatter (docker volume ls lista-os).

Fazer backup

A partir do diretório de compose.yaml. Parar o Antimatter primeiro garante uma cópia totalmente consistente; um backup feito enquanto ele está em execução geralmente é suficiente, mas os arquivos enviados durante o backup podem estar ausentes dele.

stamp=$(date +%Y%m%d-%H%M%S)
mkdir -p backups
docker compose stop antimatter
# Database
docker compose exec -T postgres pg_dump -U antimatter -d antimatter -Fc \
    > "backups/antimatter-db-$stamp.dump"
# File storage, GIF service and the data directory (the AI key file)
for v in files gifs data; do
    docker run --rm -v "antimatter_$v:/data:ro" -v "$PWD/backups:/backup" \
        alpine tar -czf "/backup/antimatter-$v-$stamp.tar.gz" -C /data .
done
docker compose start antimatter
# Secrets
cp .env "backups/env-$stamp"

Se você não configurou AM_AI_ENCRYPTION_KEY, o arquivo de chave do servidor está no volume data, que o loop acima salva com os arquivos. Melhor, coloque seu conteúdo em .env como A chave de criptografia explica, e mantenha uma cópia dele separada dos backups do banco de dados.

Execute-o via cron para backups diários e copie o diretório backups/ para outra máquina. Mantenha as cópias de .env tão seguras quanto o servidor: elas contêm suas senhas.

Para copiar os arquivos enviados objeto por objeto (por exemplo, para outro armazenamento S3), use a ferramenta de linha de comando da AWS do serviço bucket:

docker compose run --rm -v "$PWD/backups/files:/backup" bucket \
    "aws --endpoint-url http://files:9000 s3 sync s3://antimatter /backup"

Com um arquivo de versão, faça o backup do banco de dados com pg_dump -Fc, e dos diretórios data/ e config/ com suas ferramentas habituais (data/ contém o arquivo de chave de IA). Com os pacotes, faça o backup do banco de dados da mesma forma, e de /etc/antimatter, /var/lib/antimatter, /etc/gifs-server e /var/lib/gifs-server.

Restaurar em um novo host

Coloque compose.yaml, o .env salvo e os backups em um novo diretório, então:

stamp=20261016-030000          # the backup to restore
docker compose create           # creates the volumes, starts nothing
docker compose up -d postgres
docker compose exec -T postgres pg_restore -U antimatter -d antimatter --no-owner \
    < "backups/antimatter-db-$stamp.dump"
for v in files gifs data; do
    docker run --rm -v "antimatter_$v:/data" -v "$PWD/backups:/backup" \
        alpine tar -xzf "/backup/antimatter-$v-$stamp.tar.gz" -C /data
done
docker compose up -d

Use o mesmo .env: o armazenamento e o banco de dados devem manter as senhas que tinham, e as conexões de modelos precisam da mesma chave de criptografia de IA. Se o novo host tiver outro endereço, atualize SITE_URL (e DOMAIN).

Teste seus backups restaurando-os em outra máquina de tempos em tempos.

Atualizar

Arquivos Compose baixados antes de 17 de outubro de 2026 não tinham um volume data: o arquivo de chave de IA estava no contêiner. Antes de usar o novo compose.yaml, e se .env não tiver AM_AI_ENCRYPTION_KEY, salve a chave que o servidor criou: echo "AM_AI_ENCRYPTION_KEY=$(docker compose exec -T antimatter cat /antimatter/data/ai-encryption.key)" >> .env. Se o comando não encontrar o arquivo, nenhuma conexão de modelo salvou uma chave ainda.
  1. Faça um backup.
  2. Altere a tag da imagem em .env (ANTIMATTER_IMAGE), se você fixar uma, como recomendado.
  3. Baixe e reinicie:
    docker compose pull
    docker compose up -d
    docker compose logs -f antimatter

Na inicialização, o servidor atualiza o esquema do banco de dados (acompanhe no log; um servidor grande pode levar vários minutos) e instala as versões mais recentes dos aplicativos incluídos na imagem. Com um arquivo de liberação: pare o servidor, substitua tudo, exceto config/, data/, logs/, plugins/ e client/plugins/, pelo conteúdo do novo arquivo e inicie-o novamente. Com o pacote .deb ou .rpm, instale o novo pacote conforme explicado em Atualizar um pacote.

As atualizações só podem ser feitas para frente. Uma vez que um servidor mais recente tenha atualizado o banco de dados, uma versão anterior não poderá usá-lo: para reverter, restaure o backup feito antes da atualização. O mesmo se aplica à mudança de antimatter-next de volta para antimatter.

Versões

O servidor do Antimatter relata a versão da linha Mattermost em que se baseia (atualmente 12.0.0). As liberações no GitHub, com seus arquivos e pacotes, têm seus próprios números de versão, na série 0.9.0 durante o beta: antimatter version o exibe como Número de Compilação. As imagens são reconstruídas a partir dos ramos main: antimatter-next todas as noites (tags nightly-<YYYYMMDD>) e ambas as imagens a cada alteração (tags sha-<commit>). Fixe uma dessas tags, atualize intencionalmente e mantenha a tag anterior anotada para saber com qual backup ela corresponde.

Versões principais do PostgreSQL

O arquivo compose usa postgres:17-alpine. O Antimatter requer PostgreSQL 15 ou mais recente. Uma nova versão principal do PostgreSQL não consegue ler o diretório de dados da versão anterior: para migrar, faça um despejo (dump) do banco de dados, inicie a nova versão em um novo volume e restaure o despejo nele.

Atualização para a 0.9.0

A primeira inicialização da versão 0.9.0 (ou de uma imagem construída a partir de 17 de outubro de 2026) faz algumas alterações únicas nos dados. Cada uma é executada uma vez e registrada no banco de dados. Elas trazem o que ficou com um padrão antigo para o novo e deixam intacto o que um administrador escolheu. Acompanhe-as no log.

Se o Antimatter for para uma empresa ou organização, defina Tipo de novas comunidades como Ambiente de trabalho antes de atualizar: AM_TEAMSETTINGS_DEFAULTCOMMUNITYKIND=workplace. A atualização atribui a cada comunidade o tipo que esta configuração possui naquele momento, e as chamadas ficam desativadas por padrão nos canais de comunidades do tipo Comunidade. Consulte Ambiente de trabalho ou comunidade.
O quêA alteração
Tipos de comunidadeCada comunidade recebe um tipo, Comunidade ou Ambiente de trabalho: o valor de Tipo de novas comunidades (TeamSettings.DefaultCommunityKind) na primeira inicialização. Um tipo já definido é mantido. Os administradores da comunidade podem alterar o tipo da sua comunidade posteriormente, em Configurações da equipe › Canais › Tipo de comunidade.
Quem arquiva canaisOs membros dos canais não arquivam mais os canais nos quais estão: os administradores da comunidade fazem isso. Em um ambiente de trabalho, os administradores do canal (quem o criou e aqueles que foram promovidos a administradores) também o arquivam. Isso altera as funções do esquema do sistema; os esquemas de permissão criados por um administrador do sistema para algumas comunidades permanecem inalterados.
A função Moderadores dos modelos de layoutA função Moderadores que as comunidades obtiveram de um modelo de layout recebe Remover pessoas, o que é necessário para suspender e remover usuários. Apenas as funções que permanecem exatamente como o modelo as criou são alteradas; uma função editada por alguém permanece intacta.
Funções com AdministradorUma função de comunidade com a opção Administrador ativada agora possui todas as capacidades que os administradores da comunidade podem executar, conforme indicado pela opção, e não apenas as configurações da comunidade.
O limite de membrosMembros máximos por comunidade (TeamSettings.MaxUsersPerTeam) muda de 50, o padrão anterior, para 0 (sem limite). Qualquer outro valor é mantido, assim como um limite definido com AM_TEAMSETTINGS_MAXUSERSPERTEAM.
Conexões de modelosOs administradores do sistema obtêm a gestão das conexões de modelos, e os administradores da comunidade (e funções com Administrador) a gestão das conexões de modelos da própria comunidade. Os serviços de IA do aplicativo Agents se tornam conexões de modelos em nível de servidor, veja abaixo.
Town Square se torna GeneralO canal padrão de cada comunidade é renomeado de town-square (Town Square) para general (General). Ele mantém seu ID, membros, mensagens e configurações, bem como um nome de exibição escolhido pelos administradores. Links antigos e pesquisas por town-square ainda o levam a ele. Uma comunidade que já possui um canal chamado general, mesmo arquivado, mantém seu town-square como canal padrão, assim como uma comunidade cujo town-square está arquivado: o log os nomeia, e seus administradores podem renomear os canais.
FavoritosA categoria de barra lateral Favoritos de todos é renomeada para Favoritos, conforme agora indica a interface. As categorias criadas por pessoas com esse nome permanecem inalteradas.

Os serviços do aplicativo Agents

A atualização copia cada serviço de IA do aplicativo Agents para uma conexão de modelo em nível de servidor, compartilhada com todas as comunidades e disponível para todos, exceto convidados (ative Também para convidados para permitir o uso por eles). As chaves são criptografadas durante o processo, portanto o servidor precisa da sua chave de criptografia de IA: em um cluster com arquivos no S3, defina primeiro AM_AI_ENCRYPTION_KEY, ou a cópia ficará pendente até a próxima inicialização. Em seguida, verifique em Console do Sistema › IA › Conexões de modelos:

  • Cada conexão mantém o ID do seu serviço, de modo que os agentes do aplicativo e uma configuração de tradução automática vinculada a um serviço do Agents continuam a encontrá-lo.
  • Serviços do OpenAI, compatíveis com OpenAI, Anthropic, Mistral, Cohere e Gemini se tornam conexões com seus endpoints compatíveis com OpenAI (ou Anthropic). Um serviço do Azure se torna uma conexão com o endpoint compatível com OpenAI do recurso: teste-o.
  • Serviços do AWS Bedrock, Google Vertex AI e Cohere North, bem como tipos desconhecidos, são marcados como Requer atenção, com o motivo. As credenciais de nuvem não são copiadas: aponte-os para o endpoint compatível com OpenAI do provedor ou para um gateway como LiteLLM e, em seguida, salve.
  • O serviço de incorporação (embedding) se torna o modelo Incorporações da conexão com o mesmo endereço e chave, ou uma conexão própria. O serviço de transcrição recebe o modelo whisper-1.
  • Quando a reescrita e os resumos ainda não têm conexão, eles recebem o serviço e o modelo do agente padrão do aplicativo.

As configurações e os dados próprios do aplicativo Agents permanecem como estavam: seus agentes continuam usando seus serviços.

Outras alterações nos padrões

  • Chamadas: o Modo de teste está desativado e o Ativar vídeo está ativado por padrão. Uma escolha salva na configuração é mantida. As chamadas também seguem o tipo de comunidade (veja Chamadas e voz).
  • Fixar mensagens no topo é permitido para administradores do canal, administradores e moderadores da comunidade (com Gerenciar mensagens); membros de uma mensagem direta ou de grupo ainda podem fazê-lo.
  • Canais arquivados podem receber novos membros, que leem o histórico. Ninguém publica, reage ou altera nada neles.

Migração do Mattermost

O Antimatter usa o esquema de banco de dados do Mattermost e adiciona suas próprias tabelas, podendo assim assumir o banco de dados PostgreSQL e os arquivos de um servidor Mattermost. Tente primeiro em uma cópia:

  1. Faça backup do banco de dados do Mattermost, do armazenamento de arquivos (data/ ou bucket S3) e do config.json, e então pare o Mattermost.
  2. Restaure o banco de dados no PostgreSQL do Antimatter, ou aponte o Antimatter para uma cópia dele (AM_SQLSETTINGS_DATASOURCE).
  3. Copie os arquivos para o armazenamento do Antimatter, mantendo seus caminhos: para o bucket antimatter com uma ferramenta S3, ou para data/ com um arquivo de release.
  4. Reutilize suas configurações: copie o config.json ou mova-o para o banco de dados com amctl --local config migrate (veja Configurações). Suas variáveis de ambiente MM_ continuam funcionando; renomeie-as para AM_ quando for conveniente.
  5. Inicie o Antimatter e acompanhe o log enquanto ele atualiza o banco de dados. Em seguida, verifique Console do Sistema › Plugins › Gerenciamento de Plugins. O Antimatter instala suas próprias versões de Chamadas, Playbooks, Kanban (Quadros), Agentes e integrações quando estas são mais novas que a versão instalada. Se o Mattermost tiver uma versão mais nova de um deles, remova esse aplicativo e reinicie o Antimatter, para que sua própria versão seja instalada.
  6. Configure as notificações push novamente, com seu próprio proxy de push: o Antimatter nunca envia notificações para os serviços de push do Mattermost, de teste ou hospedados, que só entregam às aplicações próprias do Mattermost. Até que você altere o Servidor de Notificação Push, o servidor não envia notificações push (veja Notificações push).

O Antimatter não contata nenhum serviço operado pela Mattermost, Inc. (veja Conexões com serviços externos), mesmo quando sua configuração ainda menciona um:

  • um servidor de notificação push da Mattermost é mantido nas configurações, mas nunca é usado;
  • os endereços da Mattermost para o marketplace de aplicativos (URL do Marketplace) e para avisos de produto são esvaziados;
  • os links de download do aplicativo que eram os padrões do Mattermost (Link para a página de download de aplicativos Antimatter, Link para download do aplicativo Android e Link para download do aplicativo para iOS) são substituídos pelas páginas de download dos aplicativos do Antimatter no GitHub; links definidos por você são mantidos;
  • o aplicativo de Chamadas usa o servidor STUN público da Cloudflare em vez do da Mattermost, sem alterar a configuração salva (veja Chamadas);
  • a verificação de atualizações de segurança e o relatório de falhas foram removidos, assim como suas configurações no Console do Sistema (Ativar Alertas de Segurança, Ativar Diagnóstico e Relatório de Erros) e a página Avisos.

O socket do modo local agora é /var/tmp/antimatter_local.socket; o amctl também tenta o antigo /var/tmp/mattermost_local.socket. O Mattermost só suporta PostgreSQL em suas versões recentes, e o Antimatter também: primeiro, migre um banco de dados MySQL para PostgreSQL. Voltar ao Mattermost após o Antimatter ter atualizado o banco de dados significa restaurar seu backup do Mattermost.

Exportar e importar dados

O formato de exportação em lote move dados entre servidores: o servidor inteiro, algumas comunidades ou alguns canais, com anexos, fotos de perfil e emojis personalizados, se você quiser.

# on the source server
amctl export create --team-name design --include-profile-pictures
amctl export list
amctl export download <export file> design.zip
# on the destination server
amctl import upload design.zip
amctl import list available
amctl import process <uploaded file> --imported-users active

Acompanhe as tarefas com amctl export job list e amctl import job list. Para uma exportação de comunidade ou canal, --imported-users é obrigatório: active quando as pessoas se mudam para este servidor, inactive quando importando para um servidor onde elas já têm contas, para que as contas criadas a partir de correspondências incertas permaneçam desativadas até que um administrador as verifique. --destination-team-name importa para uma comunidade existente. As exportações e importações são mantidas no armazenamento do servidor (ExportSettings.Directory, ImportSettings.Directory) por 30 dias por padrão.

No próprio servidor, antimatter export bulk e antimatter import bulk --apply fazem o mesmo a partir de arquivos, sem a API.