Sikkerhetskopier og oppgraderinger

Hva du skal sikkerhetskopiere, hvordan du gjenoppretter det på en ny vert, hvordan du oppgraderer, og hvordan du flytter en Mattermost-tjener eller et enkelt samfunn til Antimatter.

Hva du skal sikkerhetskopiere

HvaMed stedets compose-filMed et utgavearkivMed .deb- eller .rpm-pakken
Databasen: meldinger, brukere, samfunn, kanaler og, med stedets compose-fil, konfigurasjonenvolumet antimatter_postgres, via pg_dumpdin PostgreSQL-databasedin PostgreSQL-database
Opplastede filer, bilder og installerte appervolumet antimatter_files (S3-opplagringen)FileSettings.Directory, ./data/ som standard/var/lib/antimatter
Konfigurasjonsfilen(i databasen)config/config.json/etc/antimatter/config/config.json
GIF-er og klistermerkervolumet antimatter_gifsdatakatalogen til GIF-tjenesten/var/lib/gifs-server
Hemmeligheter.env (og compose.override.yaml)din miljøfil/etc/antimatter/antimatter.env, /etc/gifs-server
AI-krypteringsnøkkelen, som krypterer nøklene for modelltilkoblingeneAM_AI_ENCRYPTION_KEY i .env (anbefalt), eller filen ai-encryption.key i volumet antimatter_dataAM_AI_ENCRYPTION_KEY, eller data/ai-encryption.keyAM_AI_ENCRYPTION_KEY i antimatter.env, eller /var/lib/antimatter/data/ai-encryption.key

Uten AI-krypteringsnøkkelen kan en gjenopprettet server ikke lese API-nøklene for modelltilkoblingene, og hver nøkkel må skrives inn på nytt. Oppbevar en kopi av nøkkelen separat fra database-sikkerhetskopiene, slik at én stjålet sikkerhetskopier ikke inneholder begge. Se Krypteringsnøkkelen.

Databasen og filene hører sammen: sikkerhetskopier dem samtidig, og hold kopiene unna tjeneren. Volumnavnene starter med compose-prosjektnavnet, antimatter (docker volume ls viser dem).

Sikkerhetskopier

Fra katalogen til compose.yaml. Hvis du stopper Antimatter først, får du en fullstendig konsistent kopi; en sikkerhetskopi tatt mens den kjører er vanligvis i orden, men filer som lastes opp under sikkerhetskopieringen kan mangle.

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"

Hvis du ikke har satt AM_AI_ENCRYPTION_KEY, ligger serverens nøkkelfil i data-volumet, som løkken ovenfor lagrer sammen med filene. Det er bedre å legge innholdet i .env, som Krypteringsnøkkelen forklarer, og oppbevare en kopi separat fra database-sikkerhetskopiene.

Kjør den fra cron for daglige sikkerhetskopier, og kopier backups/-katalogen til en annen maskin. Hold kopiene av .env like sikre som tjeneren: de inneholder passordene.

Hvis du i stedet vil kopiere de opplastede filene objekt for objekt (for eksempel til en annen S3-opplagring), bruk AWS-kommandolinjeverktøyet til bucket-tjenesten:

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

Med et utgavearkiv, sikkerhetskopier databasen med pg_dump -Fc, og data/- og config/-mappene med dine vanlige verktøy (data/ inneholder AI-nøkkelfilen). Med pakkene, sikkerhetskopier databasen på samme måte, samt /etc/antimatter, /var/lib/antimatter, /etc/gifs-server og /var/lib/gifs-server.

Gjenopprett på en ny vert

Legg compose.yaml, den lagrede .env-filen og sikkerhetskopiene i en ny katalog, deretter:

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

Bruk samme .env: lagringen og databasen må beholde passordene de hadde, og modelltilkoblingene trenger samme AI-krypteringsnøkkel. Hvis den nye verten har en annen adresse, oppdater SITE_URL (og DOMAIN).

Test sikkerhetskopiene ved å gjenopprette dem på en annen maskin fra tid til annen.

Oppgrader

Compose-filer lastet ned før 17. oktober 2026 hadde ingen data-volum: AI-nøkkelfilen var i containeren. Før du bruker den nye compose.yaml, og hvis .env ikke har AM_AI_ENCRYPTION_KEY, lagre nøkkelen serveren har laget: echo "AM_AI_ENCRYPTION_KEY=$(docker compose exec -T antimatter cat /antimatter/data/ai-encryption.key)" >> .env. Hvis kommandoen ikke finner noen fil, har ingen modelltilkobling ennå lagret en nøkkel.
  1. Ta en sikkerhetskopi.
  2. Endre bildeetiketten i .env (ANTIMATTER_IMAGE), hvis du fester en, som anbefalt.
  3. Hent og start på nytt:
    docker compose pull
    docker compose up -d
    docker compose logs -f antimatter

Ved oppstart oppgraderer serveren databasestrukturen (du kan følge med i loggen; en stor server kan ta flere minutter) og installerer de nyere versjonene av de medfølgende appene fra bildet. Med et utgavearkiv: stopp serveren, erstatt alt unntatt config/, data/, logs/, plugins/ og client/plugins/ med innholdet i det nye arkivet, og start den på nytt. Med .deb- eller .rpm-pakken, installer den nye pakken som Oppgradering av en pakke forklarer.

Oppgraderinger går kun fremover. Når en nyere server har oppgradert databasen, kan en eldre versjon ikke lenger bruke den: for å gå tilbake, gjenopprett sikkerhetskopien som ble tatt før oppgraderingen. Det samme gjelder å gå tilbake fra antimatter-next til antimatter.

Versjoner

Antimatters server rapporterer versjonen av Mattermost-linjen den er basert på (for tiden 12.0.0). Utgavene på GitHub, med arkivene og pakkene sine, har egne versjonsnummer, i 0.9.0-serien under betaen: antimatter version viser det som Byggenummer. Bildene bygges på nytt fra main-greinene: antimatter-next hver natt (tags nightly-<YYYYMMDD>), og begge bildene ved hver endring (tags sha-<commit>). Fest deg til én av disse tags, oppgrader med hensikt, og merk deg den forrige tagen slik at du vet hvilken sikkerhetskopi som hører til den.

PostgreSQL-hovedversjoner

Compose-filen bruker postgres:17-alpine. Antimatter krever PostgreSQL 15 eller nyere. En ny hovedversjon av PostgreSQL kan ikke lese datakataloget til den forrige: for å flytte til en ny, dump databasen, start den nye versjonen på et nytt volum og gjenopprett dumpen der.

Oppgradering til 0.9.0

Første oppstart av versjon 0.9.0 (eller av et bilde bygget fra 17. oktober 2026) gjør noen engangsendringer i dataene. Hver kjører én gang, og blir logget i databasen. De bringer det som var igjen på et gammelt standardvalg til det nye, og lar i fred det en administrator valgte. Følg dem i loggen.

Hvis Antimatter er for en bedrift eller en organisasjon, sett Type av nye fellesskap til Arbeidsplass før du oppgraderer: AM_TEAMSETTINGS_DEFAULTCOMMUNITYKIND=workplace. Oppgraderingen gir hvert fellesskap typen denne innstillingen har på det tidspunktet, og samtaler er av som standard i kanalene i fellesskap av typen Fellesskap. Se Arbeidsplass eller fellesskap.
HvaEndringen
Typer av fellesskapHvert fellesskap får en type, Fellesskap eller Arbeidsplass: verdien av Type av nye fellesskap (TeamSettings.DefaultCommunityKind) ved første oppstart. En type som allerede er satt, beholdes. Fellesskapsadministratorer kan endre typen på sitt fellesskap senere, i Teaminnstillinger › Kanaler › Type av fellesskap.
Hvem arkiverer kanalerKanalmedlemmer arkiverer lenger kanaler de er med i: Det er teamadministratorer som gjør det. På et arbeidsplass-team er det kanalens administratorer (den som opprettet den, og de som ble gjort til administratorer) som arkiverer den. Dette endrer rollene i systemordningen, mens tillatelsesordninger som en systemadministrator har laget for visse teams, forblir uendret.
Moderator-rollen i layoutforhåndsinnstillingeneRollen Moderatorer som teams har fått fra en layoutforhåndsinnstilling, får Fjern personer, som er nødvendig for å utsette og fjerne personer. Bare roller som fortsatt er nøyaktig som forhåndsinnstillingen laget dem, endres. En rolle som noen har redigert, forblir uendret.
Roller med AdministratorEn teamrolle med Administrator-bryteren på, har nå alt som teamets administratorer kan gjøre, som bryteren sier, og ikke bare teamets innstillinger.
MedlemsgrensenMaks. medlemmer per team (TeamSettings.MaxUsersPerTeam) går fra 50, den gamle standardverdien, til 0 (ingen grense). Eventuelle andre verdier beholdes, og også en grense satt med AM_TEAMSETTINGS_MAXUSERSPERTEAM.
ModelltilkoblingerSystemadministratorer får administrasjon av modelltilkoblinger, og teamadministratorer (og roller med Administrator) får administrasjon av deres eget teams. AI-tjenestene i Agents-appen blir servervide modelltilkoblinger, se nedenfor.
Town Square blir GeneralStandardkanalen i hvert team blir omdøpt fra town-square (Town Square) til general (General). Den beholder sin ID, medlemmer, meldinger og innstillinger, samt et visningsnavn som administratorer har valgt. Gamle lenker og oppslag med town-square fører fortsatt til den. Et team som allerede har en kanal med navnet general, selv om den er arkivert, beholder town-square som standardkanal, og samme gjelder et team hvis town-square er arkivert: Loggen navngir dem, og deres administratorer kan omdøpe kanalene.
FavoritterAlle brukeres sidefeltkategori Favorites blir omdøpt til Favoritter, som grensesnittet nå viser. Kategorier som brukere har opprettet med det navnet, forblir uendret.

Tjenestene i Agents-appen

Oppgraderingen kopierer hver AI-tjeneste i Agents-appen til en modelltilkobling for hele serveren. Den deles med alle samfunn og kan brukes av alle bortsett fra gjester (slå på Gjester kan også for å tillate dette). Nøklene krypteres underveis, så serveren trenger en AI-krypteringsnøkkel: på en kluster med filer i S3, må du først sette AM_AI_ENCRYPTION_KEY, ellers venter kopieringen på neste oppstart. Deretter sjekker du Systemkonsoll › AI › Modelltilkoblinger:

  • Hver tilkobling beholder ID-en for tjenesten, slik at agentene i appen og en automatisk oversettelse som er satt til en Agents-tjeneste fortsatt finner den.
  • OpenAI-, OpenAI-kompatible, Anthropic-, Mistral-, Cohere- og Gemini-tjenester blir tilkoblinger til deres OpenAI-kompatible (eller Anthropic) endepunkt. En Azure-tjeneste blir en tilkobling til ressursens OpenAI-kompatible endepunkt: test den.
  • AWS Bedrock-, Google Vertex AI- og Cohere North-tjenester, samt ukjente typer, merkes som Krever oppfølging, med årsak. Deres skykredensialer kopieres ikke: peker du dem mot leverandørens OpenAI-kompatible endepunkt eller en gateway som LiteLLM, og lagre deretter.
  • Inkapslingstjenesten (embedding) blir Inkapsling-modellen for tilkoblingen med samme adresse og nøkkel, eller en egen tilkobling. Transkripsjonstjenesten får whisper-1-modellen.
  • Når omskrivning og oppsummeringer ennå ikke har en tilkobling, får de tjenesten og modellen til appens standardagent.

Agents-appens egne innstillinger og data forblir som de var: dens agenter fortsetter å bruke dens tjenester.

Andre endringer av standardinnstillinger

  • Samtaler: Testmodus er av og Slå på video er på som standard. Et valg som er lagret i konfigurasjonen beholdes. Samtaler følger også typen av samfunnet (se Samtaler og tale).
  • Å feste meldinger til toppen er for kanalens administratorer, samfunnets administratorer og moderatorer (med Administrer meldinger); medlemmer av en direktemelding eller gruppemelding kan fortsatt gjøre dette.
  • Arkiverte kanaler kan få nye medlemmer, som leser historikken. Ingen poster, reagerer eller endrer noe i dem.

Flytting fra Mattermost

Antimatter bruker Mattermosts databasestruktur og legger til sine egne tabeller, så den kan ta over en Mattermost-servers PostgreSQL-database og filer. Prøv det først på en kopi:

  1. Sikkerhetskopier Mattermost-databasen, filopplagringen (data/ eller S3-bucketen) og config.json, og stopp deretter Mattermost.
  2. Gjenopprett databasen i Antimatters PostgreSQL, eller pekk Antimatter mot en kopi av den (AM_SQLSETTINGS_DATASOURCE).
  3. Kopiér filene til Antimatters lagring, og behold stiene deres: til antimatter-bucketen med et S3-verktøy, eller til data/ med et utgavearkiv.
  4. Gjenbruk innstillingene dine: kopiér config.json, eller flytt den til databasen med amctl --local config migrate (se Konfigurasjon). Miljøvariablene dine med prefikset MM_ fortsetter å fungere; endre navnet til AM_ når det passer.
  5. Start Antimatter og følg loggen mens den oppgraderer databasen. Deretter sjekker du Systemkonsoll › Plugins › Pluginhåndtering. Antimatter installerer sine egne bygg av Calls, Playbooks, Kanban (Boards), Agents og integrasjonene når de er nyere enn den installerte versjonen. Hvis Mattermost hadde en nyere versjon av én av dem, fjerner du appen og starter Antimatter på nytt, slik at Antimatters eget bygg blir installert.
  6. Sett opp push-varsler på nytt med din egen push-proxy: Antimatter sender aldri varsler til Mattermosts push-tjenester, verken test- eller vertstjenester, som kun leverer til Mattermosts egne apper. Inntil du endrer Push-varselserver, sender serveren ingen push-varsler (se Push-varsler).

Antimatter kontakter ingen tjenester drevet av Mattermost, Inc. (se Connections to outside services), selv om konfigurasjonen din fortsatt nevner én:

  • en push-varselserver hos Mattermost beholdes i innstillingene, men brukes aldri;
  • Mattermosts adresser for appmarkedet (Markeds-URL) og for produktmeldinger blir tomme;
  • app-nedlastingslenkene som var Mattermosts standarder (Antimatter Apps Download Page Link, Android App Download Link og iOS App Download Link) erstattes av nedlastingsssidene for Antimatters apper på GitHub; lenker du har satt selv beholdes;
  • Calls-appen bruker Cloudflares offentlige STUN-server i stedet for Mattermosts, uten å endre den lagrede innstillingen (se Calls);
  • sjekken for sikkerhetsoppdateringer og rapportering av krassh er borte, og med dem også innstillingene i Systemkonsollen (Slå på sikkerhetsvarsel, Slå på diagnostikk og feilrapportering) og siden Meldinger.

Sokkelen for lokal modus er nå /var/tmp/antimatter_local.socket; amctl prøver også den gamle /var/tmp/mattermost_local.socket. Mattermost støtter kun PostgreSQL i sine nyere versjoner, og det gjør Antimatter også: flytt en MySQL-database til PostgreSQL først. Å gå tilbake til Mattermost etter at Antimatter har oppgradert databasen innebærer at du gjenoppretter sikkerhetskopien din av Mattermost.

Eksport og import av data

Formatet for masseeksport flytter data mellom servere: hele serveren, noen samfunn eller noen kanaler, med vedlegg, profilbilder og egne emoji hvis du ønsker det.

# 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

Følg jobbene med amctl export job list og amctl import job list. For eksport av et team eller en kanal er --imported-users påkrevd: active når personene flytter til denne serveren, inactive når du importerer til en server der de allerede har kontoer, slik at kontoer opprettet fra usikre treff forblir inaktive inntil en administrator har kontrollert dem. --destination-team-name importerer til et eksisterende team. Eksporter og importer beholdes på serverens lagringsplass (ExportSettings.Directory, ImportSettings.Directory) i 30 dager som standard.

På selve serveren gjør antimatter export bulk og antimatter import bulk --apply det samme fra filer, uten API-et.