Còpies de seguretat i actualitzacions

Què cal fer còpia de seguretat, com restaurar-lo en un nou host, com actualitzar-lo i com traslladar un servidor de Mattermost o una comunitat individual a Antimatter.

Què cal fer còpia de seguretat

QuèAmb el fitxer compose del llocAmb un arxiu de publicacióAmb el paquet .deb o .rpm
La base de dades: missatges, usuaris, comunitats, canals i, amb el fitxer compose del lloc, la configuracióvolum antimatter_postgres, mitjançant pg_dumpla teva base de dades PostgreSQLla teva base de dades PostgreSQL
Fitxers penjats, imatges i aplicacions instal·ladesvolum antimatter_files (l'emmagatzematge S3)FileSettings.Directory, per defecte ./data//var/lib/antimatter
El fitxer de configuració(a la base de dades)config/config.json/etc/antimatter/config/config.json
GIF i adhesiusvolum antimatter_gifsel directori de dades del servei de GIF/var/lib/gifs-server
Segrets.env (i compose.override.yaml)el teu fitxer d'entorn/etc/antimatter/antimatter.env, /etc/gifs-server
La clau de xifratge de l'IA, que xifra les claus de les connexions de modelsAM_AI_ENCRYPTION_KEY a .env (recomanat), o el fitxer ai-encryption.key al volum antimatter_dataAM_AI_ENCRYPTION_KEY, o data/ai-encryption.keyAM_AI_ENCRYPTION_KEY a antimatter.env, o /var/lib/antimatter/data/ai-encryption.key

Sense la clau de xifratge de l'IA, un servidor restaurat no pot llegir les claus d'API de les seves connexions de models, i cal escriure-les de nou una per una. Mantén una còpia de la clau separada de les còpies de seguretat de la base de dades, perquè una còpia robada no contingui les dues coses. Consulta La clau de xifratge.

La base de dades i els fitxers van junts: fes-ne còpia de seguretat al mateix temps i mantén còpies fora del servidor. Els noms dels volums comencen pel nom del projecte compose, antimatter (docker volume ls els llista).

Còpia de seguretat

Des del directori de compose.yaml. Aturar Antimatter primer dóna una còpia completament coherent; una còpia feta mentre funciona sol anar bé, però els fitxers penjats durant la còpia poden estar-ne absents.

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"

Si no has establert AM_AI_ENCRYPTION_KEY, el fitxer de clau del servidor es troba al volum data, que el cicle anterior desa amb els fitxers. És millor posar-ne el contingut a .env, com explica La clau de xifratge, i mantenir-ne una còpia separada de les còpies de seguretat de la base de dades.

Executa-la des de cron per a còpies diàries i copia el directori backups/ a una altra màquina. Mantén les còpies de .env tan segures com el servidor: contenen les seves contrasenyes.

Per copiar els fitxers penjats objecte per objecte (per exemple, a un altre emmagatzematge S3), utilitza l'eina de línia d'ordres d'AWS del servei bucket:

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

Amb un arxiu de publicació, fes una còpia de seguretat de la base de dades amb pg_dump -Fc, i dels directoris data/ i config/ amb les teves eines habituals (data/ conté el fitxer de la clau de l'IA). Amb els paquets, fes la còpia de seguretat de la base de dades de la mateixa manera, i de /etc/antimatter, /var/lib/antimatter, /etc/gifs-server i /var/lib/gifs-server.

Restauració en un nou host

Posa compose.yaml, el .env desat i les còpies de seguretat en un directori nou, i després:

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

Fes servir el mateix .env: l'emmagatzematge i la base de dades han de mantenir les contrasenyes que tenien, i les connexions de models necessiten la mateixa clau de xifratge de l'IA. Si l'amfitrió nou té una altra adreça, actualitza SITE_URL (i DOMAIN).

Prova les teves còpies de seguretat restablint-les en una altra màquina de tant en tant.

Actualització

Els fitxers Compose descarregats abans del 17 d'octubre de 2026 no tenien un volum data: el fitxer de la clau de l'IA estava al contenidor. Abans d'utilitzar el nou compose.yaml, i si .env no té AM_AI_ENCRYPTION_KEY, desa la clau que ha creat el servidor: echo "AM_AI_ENCRYPTION_KEY=$(docker compose exec -T antimatter cat /antimatter/data/ai-encryption.key)" >> .env. Si la comanda no troba cap fitxer, cap connexió de model ha desat encara una clau.
  1. Fes una còpia de seguretat.
  2. Canvia l'etiqueta de la imatge a .env (ANTIMATTER_IMAGE), si en fixes una, com es recomana.
  3. Treu-la i reinicia:
    docker compose pull
    docker compose up -d
    docker compose logs -f antimatter

En arrencar, el servidor actualitza l’esquema de la base de dades (pots seguir-ho al registre; en un servidor gran pot trigar diversos minuts) i instal·la les versions més recents de les aplicacions empaquetades a la imatge. Amb un arxiu de publicació: atura el servidor, substitueix-ho tot excepte config/, data/, logs/, plugins/ i client/plugins/ pel contingut del nou arxiu, i torna a arrencar-lo. Amb el paquet .deb o .rpm, instal·la el nou paquet tal com s’explica a Actualitza un paquet.

Les actualitzacions només es fan endavant. Un cop un servidor més nou ha actualitzat la base de dades, una versió anterior no pot utilitzar-la: per tornar enrere, restaura la còpia de seguretat feta abans de l'actualització. El mateix aplica per tornar de antimatter-next a antimatter.

Versions

El servidor d’Antimatter informa de la versió de la línia Mattermost en què es basa (actualment 12.0.0). Les publicacions a GitHub, amb els seus arxius i paquets, tenen els seus propis números de versió, en la sèrie 0.9.0 durant la beta: antimatter version la mostra com a Número de compilació. Les imatges es reconstrueixen des de les branques main: antimatter-next cada nit (etiquetes nightly-<YYYYMMDD>), i ambdues imatges en cada canvi (etiquetes sha-<commit>). Fixa’t en una d’aquestes etiquetes, actualitza de manera conscient i guarda l’anterior apuntada perquè sàpigues amb quin còpia de seguretat coincideix.

Versions principals de PostgreSQL

El fitxer compose utilitza postgres:17-alpine. Antimatter necessita PostgreSQL 15 o superior. Una versió principal nova de PostgreSQL no pot llegir el directori de dades de l'anterior: per passar-hi, fes un volcat de la base de dades, arrenca la versió nova en un volum nou i restaura-hi el volcat.

Actualització a la 0.9.0

La primera arrencada de la versió 0.9.0 (o d’una imatge construïda a partir del 17 d’octubre de 2026) fa uns quants canvis únics a les dades. Cadascun s’executa una sola vegada i queda registrat a la base de dades. Aquests canvis porten el que quedava en un valor predeterminat antic al nou, i deixen intacte el que un administrador hagi triat. Pots seguir-los al registre.

Si Antimatter és per a una empresa o organització, configura Tipus de les noves comunitats a Espai de treball abans de fer l'actualització: AM_TEAMSETTINGS_DEFAULTCOMMUNITYKIND=workplace. L'actualització assigna a cada comunitat el tipus que tingui aquesta configuració en aquell moment, i les trucades estan desactivades per defecte als canals de les comunitats de tipus Gremi. Consulta Gremi o espai de treball.
QuèEl canvi
Tipus de comunitatCada comunitat té un tipus, Gremi o Espai de treball: el valor de Tipus de les noves comunitats (TeamSettings.DefaultCommunityKind) en el primer inici. Si ja s'ha definit un tipus, es manté. Els administradors de la comunitat poden canviar el tipus de la seva comunitat després, a Configuració de l’equip › General.
Qui arxiva els canalsEls membres dels canals ja no arxivin els canals als quals pertanyen: ho fan els administradors de la comunitat. En un espai de treball, els administradors del canal (qui el va crear i aquells als quals va fer administradors) també l'arxiven. Això canvia els rols de l'esquema del sistema; els esquemes de permisos que un administrador del sistema va crear per a algunes comunitats es deixen com estan.
El rol Moderators de les predefinicions de disposicióEl rol Moderators que les comunitats van rebre d'una predefinició de disposició rep Treu persones, que cal per expulsar i treure persones. Només canvien els rols que encara són exactament com els va crear la predefinició; un rol que algú va editar es deixa tal com és.
Rols amb AdministradorUn rol de comunitat amb l'intercanvi Administrador activat ara té tot el que els administradors de la comunitat poden fer, com diu l'intercanvi, i no només la configuració de la comunitat.
El límit de membresMàxim de membres per comunitat (TeamSettings.MaxUsersPerTeam) passa de 50, l'antic valor per defecte, a 0 (sense límit). Qualsevol altre valor es manté, i també un límit establert amb AM_TEAMSETTINGS_MAXUSERSPERTEAM.
Connexions de modelsEls administradors del sistema reben la gestió de les connexions de models, i els administradors de la comunitat (i els rols amb Administrador) la de les de la seva comunitat. Els serveis d'IA de l'aplicació Agents es converteixen en connexions de models de tot el servidor, vegeu més avall.
Town Square passa a ser GeneralEl canal per defecte de cada comunitat canvia de nom de town-square (Town Square) a general (General). Manté el seu ID, membres, missatges i configuració, i un nom de visualització que els administradors van triar. Els enllaços antics i les consultes per town-square encara hi porten. Una comunitat que ja té un canal anomenat general, fins i tot arxivat, manté el seu town-square com a canal per defecte, i el mateix passa amb una comunitat el town-square de la qual està arxivat: el registre els nomena, i els seus administradors poden canviar el nom dels canals.
PreferitsLa categoria de la barra lateral Favorites de tothom canvia de nom a Preferits, com ara diu la interfície. Les categories que la gent va crear amb aquest nom es deixen tal com són.

Els serveis de l'aplicació Agents

L'actualització copia cada servei d'IA de l'aplicació Agents en una connexió de model a nivell de servidor, compartida amb totes les comunitats i utilitzable per tothom excepte els convidats (activa També els convidats per permetre-ho). Les claus es xifren durant el procés, per la qual cosa el servidor necessita la seva clau de xifratge d'IA: en un clúster amb fitxers a S3, configura primer AM_AI_ENCRYPTION_KEY; si no, la còpia esperarà al següent inici. Després, revisa Consola del sistema › IA › Connexions de models:

  • Cada connexió conserva el seu identificador de servei, de manera que els agents de l'aplicació i la traducció automàtica configurada per a un servei d'Agents encara el troben.
  • Els serveis d'OpenAI, compatibles amb OpenAI, Anthropic, Mistral, Cohere i Gemini es converteixen en connexions al seu endpoint compatible amb OpenAI (o Anthropic). Un servei d'Azure es converteix en una connexió a l'endpoint compatible amb OpenAI del recurs: proveu-ho.
  • Els serveis d'AWS Bedrock, Google Vertex AI i Cohere North, i els tipus desconeguts, es marquen com a Cal atenció, amb el motiu. Les credencials del núvol no es copien: apunteu-les a l'endpoint compatible amb OpenAI del proveïdor o a una passarel·la com LiteLLM, i després deseu.
  • El servei d'incrustacions es converteix en el model Incrustacions de la connexió amb la mateixa adreça i clau, o en una connexió pròpia. El servei de transcripció rep el model whisper-1.
  • Quan la reescriptura i els resums encara no tenen connexió, reben el servei i el model de l'agent per defecte de l'aplicació.

Els agents de l'aplicació Agents

Després dels serveis, l'actualització converteix cada agent de l'aplicació Agents (ara l'aplicació de xat d'IA) en un agent a nivell de servidor, al mateix compte: la seva connexió (la que es va copiar del seu servei), el model, les instruccions, el raonament, els torns d'eines i qui el pot utilitzar. El servidor respon per aquests agents. Si l'aplicació limitava un agent d'una manera que els agents del servidor no expressen (els canals on responia, les llistes de bloqueig, l'accés basat en atributs), l'agent es restringeix als membres d'aquells canals, o a ningú, i es marca com a requerint atenció, igual que un agent el servei del qual no es va convertir en una connexió. Revisa'ls a Consola del sistema › IA › Connexions de models. La resta de configuracions de l'aplicació es deixen com estaven.

Altres canvis de valors per defecte

  • Trucades: el Mode de prova està desactivat i Activa el vídeo està activat per defecte. Una opció desada a la configuració es manté. Les trucades també segueixen el tipus de comunitat (vegeu Trucades i veu).
  • Posar missatges a la part superior és per als administradors del canal, els administradors de la comunitat i els moderadors (amb Gestiona els missatges); els membres d'un missatge directe o de grup encara poden fer-ho.
  • Els canals arxivats poden rebre nous membres, que llegeixen el seu historial. Ningú no publica, reacciona ni canvia res en ells.

Migració des de Mattermost

Antimatter utilitza l'esquema de base de dades de Mattermost i hi afegeix les seves pròpies taules, de manera que pot prendre el relleu de la base de dades PostgreSQL i els fitxers d'un servidor de Mattermost. Prova-ho primer en una còpia:

  1. Fes una còpia de seguretat de la base de dades de Mattermost, el seu emmagatzematge de fitxers (data/ o balde S3) i config.json, i després atura Mattermost.
  2. Restaura la base de dades a PostgreSQL d'Antimatter, o apuntes Antimatter a una còpia d'aquesta (AM_SQLSETTINGS_DATASOURCE).
  3. Copia els fitxers a l'emmagatzematge d'Antimatter, mantenint-ne les rutes: al balde antimatter amb una eina S3, o a data/ amb un arxiu de publicació.
  4. Reutilitza la teva configuració: copia config.json, o mou-lo a la base de dades amb amctl --local config migrate (vegeu Configuració). Les teves variables d'entorn MM_ continuen funcionant; canvia-les per AM_ quan et convé.
  5. Inicia Antimatter i segueix el registre mentre actualitza la base de dades. Després, consulta Consola del sistema › Connectors › Gestió de plugins. Antimatter instal·la les seves pròpies versions de Trucades, xat d'IA i les integracions quan són més noves que la versió instal·lada, i també de les Guies d'actuació i els Taulers (Kanban) si el servidor de Mattermost ja en tenia algun d'instal·lat (cap d'ells ja no s'inclou en un servidor nou: consulta Aplicacions incloses). Si Mattermost tenia una versió més nova d'alguna d'elles, elimina aquesta aplicació i reinicia Antimatter perquè s'instal·li la seva pròpia versió.
  6. Configura de nou les notificacions push amb el teu propi proxy de notificacions: Antimatter mai envia notificacions als serveis de notificacions push de Mattermost, ja sigui de proves o allotjats, que només les lliuren a les pròpies aplicacions de Mattermost. Fins que no canvis el Servidor de notificacions push, el servidor no envia cap notificació push (vegeu Notificacions push).

Antimatter no contacta amb cap servei operat per Mattermost, Inc. (vegeu Connexions amb serveis externs), fins i tot si la teva configuració encara en menciona un:

  • un serveidor de notificacions push de Mattermost es manté a la configuració però mai s'utilitza;
  • S'han buidat les adreces de Mattermost per al Marketplace d'aplicacions (URL del Marketplace) i per als avisos de producte;
  • els enllaços de descàrrega de l'aplicació que eren els valors per defecte de Mattermost (Enllaç de la pàgina de descàrrega d'aplicacions d'Antimatter, Enllaç de descàrrega de l'aplicació d'Android i Enllaç per descarregar l’aplicació per iOS) es substitueixen per les pàgines de descàrrega de les aplicacions d'Antimatter a GitHub; els enllaços que heu establert vosaltres es mantenen;
  • l'aplicació de Reunió ràpida utilitza el servidor STUN públic de Cloudflare en lloc del de Mattermost, sense canviar la configuració desada (vegeu Reunió ràpida);
  • s'han eliminat la comprovació d'actualitzacions de seguretat i la informació d'errors, així com la seva configuració a la Consola del sistema (Activa les alertes de seguretat, Activa el diagnòstic i la informació d'errors) i la pàgina Avisos.

El socket del mode local ara és /var/tmp/antimatter_local.socket; amctl també intenta el vell /var/tmp/mattermost_local.socket. Mattermost només admet PostgreSQL en les seves versions recents, i Antimatter també: primer, mou la base de dades de MySQL a PostgreSQL. Tornar a Mattermost després que Antimatter hagi actualitzat la base de dades implica restaurar la còpia de seguretat de Mattermost.

Exporta i importa dades

El format d'exportació massiva mou dades entre servidors: el servidor sencer, algunes comunitats o alguns canals, amb adjunts, fotos de perfil i emojis personalitzats si els vols.

# 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

Vigila les tasques amb amctl export job list i amctl import job list. Per a una exportació o importació de comunitat o canal, cal --imported-users: active quan les persones es traslladen a aquest servidor, i inactive quan s'importi en un servidor on ja tinguin comptes, de manera que els comptes creats a partir de coincidències incertes romanguin inactius fins que un administrador els verifiqui. --destination-team-name importa en una comunitat existent. Les exportacions i importacions es conserven a l'emmagatzematge del servidor (ExportSettings.Directory, ImportSettings.Directory) durant 30 dies per defecte.

Al mateix servidor, antimatter export bulk i antimatter import bulk --apply fan el mateix a partir de fitxers, sense utilitzar l'API.

La línia d'un canal a l'exportació inclou el seu tipus i configuració (am_type, am_mode, am_root_posts i, en el cas dels fòrums, am_forum_view); una línia sense aquests camps s'importa com un canal de xat de text pla. La línia d'una publicació arrel en un canal de fòrum necessita props.am_thread_title, el títol del seu tema; sense aquest camp, la importació falla en aquesta línia.