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
| Hva | Med stedets compose-fil | Med et utgavearkiv | Med .deb- eller .rpm-pakken |
|---|---|---|---|
| Databasen: meldinger, brukere, samfunn, kanaler og, med stedets compose-fil, konfigurasjonen | volumet antimatter_postgres, via pg_dump | din PostgreSQL-database | din PostgreSQL-database |
| Opplastede filer, bilder og installerte apper | volumet 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 klistermerker | volumet antimatter_gifs | datakatalogen 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 modelltilkoblingene | AM_AI_ENCRYPTION_KEY i .env (anbefalt), eller filen ai-encryption.key i volumet antimatter_data | AM_AI_ENCRYPTION_KEY, eller data/ai-encryption.key | AM_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
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.- Ta en sikkerhetskopi.
- Endre bildeetiketten i
.env(ANTIMATTER_IMAGE), hvis du fester en, som anbefalt. - 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.
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.
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.| Hva | Endringen |
|---|---|
| Typer av fellesskap | Hvert 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 kanaler | Kanalmedlemmer 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åndsinnstillingene | Rollen 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 Administrator | En teamrolle med Administrator-bryteren på, har nå alt som teamets administratorer kan gjøre, som bryteren sier, og ikke bare teamets innstillinger. |
| Medlemsgrensen | Maks. 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. |
| Modelltilkoblinger | Systemadministratorer 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 General | Standardkanalen 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. |
| Favoritter | Alle 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:
- Sikkerhetskopier Mattermost-databasen, filopplagringen (
data/eller S3-bucketen) ogconfig.json, og stopp deretter Mattermost. - Gjenopprett databasen i Antimatters PostgreSQL, eller pekk Antimatter mot en kopi av den (
AM_SQLSETTINGS_DATASOURCE). - Kopiér filene til Antimatters lagring, og behold stiene deres: til
antimatter-bucketen med et S3-verktøy, eller tildata/med et utgavearkiv. - Gjenbruk innstillingene dine: kopiér
config.json, eller flytt den til databasen medamctl --local config migrate(se Konfigurasjon). Miljøvariablene dine med prefiksetMM_fortsetter å fungere; endre navnet tilAM_når det passer. - 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.
- 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.