Sikkerhedskopiering og opgradering

Hvad der skal sikkerhedskopieres, hvordan det gendannes på en ny vært, hvordan der opgraderes og hvordan en Mattermost-server eller et enkelt community flyttes til Antimatter.

Hvad der skal sikkerhedskopieres

HvadMed sitets compose-filMed et release-arkivMed .deb- eller .rpm-pakken
Databasen: beskeder, brugere, communities, kanaler og, med sitets compose-fil, konfigurationenvolumen antimatter_postgres, via pg_dumpdin PostgreSQL-databasedin PostgreSQL-database
Uploadede filer, billeder og installerede appsvolumen antimatter_files (S3-opbevaringen)FileSettings.Directory, ./data/ som standard/var/lib/antimatter
Konfigurationsfilen(i databasen)config/config.json/etc/antimatter/config/config.json
GIF'er og stickersvolumen antimatter_gifsGIF-tjenestens datamappe/var/lib/gifs-server
Hemmeligheder.env (og compose.override.yaml)din miljøfil/etc/antimatter/antimatter.env, /etc/gifs-server
AI-krypteringsnøglen, som krypterer nøglerne for modelforbindelserAM_AI_ENCRYPTION_KEY i .env (anbefalet), eller filen ai-encryption.key i volumen antimatter_dataAM_AI_ENCRYPTION_KEY eller data/ai-encryption.keyAM_AI_ENCRYPTION_KEY i antimatter.env eller /var/lib/antimatter/data/ai-encryption.key

Uden AI-krypteringsnøglen kan en gendannet server ikke læse API-nøglerne for dens modelforbindelser, og hver nøgle skal indtastes igen. Gem en kopi af nøglen adskilt fra databasebackups, så en stjålet backup ikke indeholder begge dele. Se Krypteringsnøglen.

Databasen og filerne hører sammen: sikkerhedskopiér dem på samme tidspunkt, og opbevar kopierne på en anden plads end serveren. Volumennavne starter med compose-projektets navn, antimatter (docker volume ls viser dem).

Sikkerhedskopiér

Fra mappen med compose.yaml. Hvis du stopper Antimatter først, får du en fuldt konsistent kopi; en sikkerhedskopi taget, mens det kører, er normalt i orden, men filer uploadet under sikkerhedskopieringen 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 angivet AM_AI_ENCRYPTION_KEY, findes serverens nøgelfil i data-volumen, som loopet ovenfor gemmer sammen med filerne. Det er bedre at indsætte indholdet i .env, som Krypteringsnøglen forklarer, og gemme en kopi af det adskilt fra databasebackups.

Kør det fra cron til daglige sikkerhedskopier, og kopiér backups/-mappen til en anden maskine. Opbevar kopierne af .env lige så sikkert som serveren: de indeholder dens adgangskoder.

Hvis du i stedet vil kopiere de uploadede filer objekt for objekt (f.eks. til en anden S3-opbevaring), skal du bruge AWS-kommandolinjeværktøjet for 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 release-arkiv, så back up databasen med pg_dump -Fc, og data/- og config/-mapparne med dine sædvanlige værktøjer (data/ indeholder AI-nøgelfilen). Med pakkerne, så back up databasen på samme måde, og /etc/antimatter, /var/lib/antimatter, /etc/gifs-server og /var/lib/gifs-server.

Gendan på en ny vært

Læg compose.yaml, den gemte .env og sikkerhedskopiene i en ny mappe, og derefter:

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

Brug den samme .env: opbevaringen og databasen skal beholde de adgangskoder, de havde, og modelforbindelserne har brug for den samme AI-krypteringsnøgle. Hvis den nye vært har en anden adresse, så opdater SITE_URL (og DOMAIN).

Test dine sikkerhedskopier ved at gendanne dem på en anden maskine fra tid til anden.

Opgrader

Compose-filer downloadet før 17. oktober 2026 havde ingen data-volumen: AI-nøgelfilen var i containeren. Før du bruger den nye compose.yaml, og hvis .env ikke har AM_AI_ENCRYPTION_KEY, så gem den nøgle, serveren har oprettet: echo "AM_AI_ENCRYPTION_KEY=$(docker compose exec -T antimatter cat /antimatter/data/ai-encryption.key)" >> .env. Hvis kommandoen ikke finder nogen fil, har ingen modelforbindelse gemt en nøgle endnu.
  1. Tag en sikkerhedskopi.
  2. Skift billedtaget i .env (ANTIMATTER_IMAGE), hvis du fastlåser et, som anbefalet.
  3. Træk og genstart:
    docker compose pull
    docker compose up -d
    docker compose logs -f antimatter

Ved start opgraderer serveren databaseens schema (du kan følge med i loggen; en stor server kan tage flere minutter) og installerer de nyere versioner af de medfølgende apps fra billedet. Med et release-arkiv: stop serveren, udskift alt undtagen config/, data/, logs/, plugins/ og client/plugins/ med det nye arkivs indhold, og start den igen. Med .deb- eller .rpm-pakken, installer den nye pakke, som Opgradering af en pakke forklarer.

Opgraderinger kan kun ske fremad. Når en nyere server har opgraderet databasen, kan en ældre version ikke bruge den: for at gå tilbage skal du gendanne den backup, der blev taget før opgraderingen. Det samme gælder, hvis du går fra antimatter-next tilbage til antimatter.

Versioner

Antimatters server rapporterer versionen af Mattermost-linjen, den er baseret på (i øjeblikket 12.0.0). Releases på GitHub, med deres arkiver og pakker, har deres egne versionsnumre, i 0.9.0-serien under beta: antimatter version viser det som Bygnummer. Billederne genopbygges fra main-grene: antimatter-next hver nat (tags nightly-<YYYYMMDD>), og begge billeder ved hver ændring (tags sha-<commit>). Fastgør ét af disse tags, opgrader bevidst, og hold det forrige tag noteret, så du ved, hvilken backup der hører til det.

PostgreSQL-hovedversioner

Compose-filen bruger postgres:17-alpine. Antimatter kræver PostgreSQL 15 eller nyere. En ny hovedversion af PostgreSQL kan ikke læse den forrige versions datamappe: for at skifte til en ny version skal du dumpe databasen, starte den nye version på et nyt volumen og gendanne dumpen i den.

Opgradering til 0.9.0

Den første start af version 0.9.0 (eller af et billede bygget fra 17. oktober 2026) foretager nogle engangsændringer i dataene. Hver køres én gang og registreres i databasen. De bringer det, der blev efterladt med et gammelt standardværdi, til den nye, og rører ikke det, en administrator valgte. Følg dem i loggen.

Hvis Antimatter bruges af en virksomhed eller organisation, skal du angive Type af nye fællesskaber til Arbejdsområde før opgraderingen: AM_TEAMSETTINGS_DEFAULTCOMMUNITYKIND=workplace. Opgraderingen tildeler hvert fællesskab den type, denne indstilling har på det tidspunkt, og opkald er som standard slået fra i kanaler i fællesskaber af typen Guild. Se Guild eller arbejdsområde.
HvadÆndringen
Typer af fællesskabHvert fællesskab får en type, Guild eller Arbejdsområde: værdien af Type af nye fællesskaber (TeamSettings.DefaultCommunityKind) ved første opstart. En allerede angivet type bevares. Administratorer for fællesskaber kan ændre deres fællesskabs type bagefter under Teamindstillinger › Generelt.
Hvem arkiverer kanalerKanalmedlemmer arkiverer ikke længere de kanaler, de er i; det gør administratorer for fællesskaber. I et arbejdsområde kan kanalens administratorer (den, der oprettede den, og dem, de har gjort til administratorer) også arkivere den. Dette ændrer rollerne i systemskemaet; de tilladelsesskemaer, som en systemadministrator har oprettet for visse fællesskaber, lades være, som de er.
Rollen Moderatorer i layoutforudindstillingerneRollen Moderatorer, som teams har fået fra en layoutforudindstilling, får Fjern personer, som er nødvendigt for at udelukke og fjerne personer. Kun roller, der stadig er præcis som forudindstillingen oprettede dem, ændres; en rolle, som nogen har redigeret, forbliver uændret.
Roller med AdministratorEn teamrolle med Administrator-indstillingen aktiveret indeholder nu alt det, som teamets administratorer kan gøre, som indstillingen angiver, og ikke kun teamets indstillinger.
Begrænsning for medlemmerMaks. medlemmer pr. team (TeamSettings.MaxUsersPerTeam) ændres fra 50, den gamle standardværdi, til 0 (ingen begrænsning). Eventuelle andre værdier bevares, ligesom en begrænsning, der er sat med AM_TEAMSETTINGS_MAXUSERSPERTEAM.
ModelforbindelserSystemadministratorer får styring af modelforbindelser, og teamadministratorer (og roller med Administrator) får styring af deres teams egne. AI-tjenesterne i Agents-appen bliver serveromfattende modelforbindelser, se nedenfor.
Town Square bliver GeneralHver teams standardkanal omdøbes fra town-square (Town Square) til general (General). Den beholder sin ID, medlemmer, beskeder og indstillinger, samt et visningsnavn, som administratorer har valgt. Gamle links og opslag med town-square fører stadig til den. Et team, der allerede har en kanal med navnet general, også hvis den er arkiveret, beholder sin town-square som standardkanal, ligesom et team, hvis town-square er arkiveret: Loggen nævner dem, og deres administratorer kan omdøbe kanalerne.
FavoritterAlle brugeres sidebjælkekategori Favorites omdøbes til Favourites, da grænsefladen nu viser det. Kategorier, som brugere har oprettet med det navn, forbliver uændrede.

Agents-appens tjenester

Opgraderingen kopierer hver AI-tjeneste fra Agents-appen til en serverdækkende modelforbindelse, som deles med alle fællesskaber og kan bruges af alle undtagen gæster (aktiver Gæster også for at give dem adgang). Nøglerne krypteres undervejs, så serveren skal bruge sin AI-krypteringsnøgle: på en klynge, hvor filerne er i S3, skal du angive AM_AI_ENCRYPTION_KEY først, ellers venter kopieringen til næste opstart. Tjek derefter Systemkonsol › AI › Modelforbindelser:

  • Hver forbindelse beholder ID'et for sin tjeneste, så appens agenter og en automatisk oversættelse, der er sat til en Agents-tjeneste, stadig kan finde den.
  • OpenAI-, OpenAI-kompatible, Anthropic-, Mistral-, Cohere- og Gemini-tjenester bliver til forbindelser til deres OpenAI-kompatible (eller Anthropic) endepunkt. En Azure-tjeneste bliver til en forbindelse til ressourcens OpenAI-kompatible endepunkt: test den.
  • AWS Bedrock-, Google Vertex AI- og Cohere North-tjenester samt ukendte typer markeres som Krav om opmærksomhed med årsagen. Deres cloud-kredentiaaler kopieres ikke: peg dem på leverandørens OpenAI-kompatible endepunkt eller en gateway som LiteLLM, og gem derefter.
  • Embedding-tjenesten bliver til Embeddings-modellen for forbindelsen med samme adresse og nøgle, eller en forbindelse i sig selv. Transkriptionstjenesten får whisper-1-modellen.
  • Når omskrivning og resuméer endnu ikke har en forbindelse, får de appens standardagents tjeneste og model.

Agenterne i Agents-appen

Efter tjenesterne omdanner opgraderingen hver agent i Agents-appen (nu AI-chat-appen) til en serverdækkende agent på den samme konto: dens forbindelse (den, der blev kopieret fra dens tjeneste), model, instruktioner, ræsonnement, værktøjsrundeh og hvem der må bruge den. Serveren besvarer derefter disse agenter. Hvis appen begrænsede en agent på en måde, som serverens agenter ikke udtrykker (de kanaler, hvor den svarede, bloklister, attributbaseret adgang), indsnævres agenten til medlemmerne af disse kanaler, eller til ingen, og markeres som kræver opmærksomhed, ligesom en agent, hvis tjeneste ikke blev til en forbindelse. Tjek dem under Systemkonsol › AI › Modelforbindelser. Appens øvrige indstillinger lades være, som de var.

Andre ændringer af standardindstillinger

  • Opkald: Testtilstand er slukket, og Aktivér video er tændt som standard. Et valg, der er gemt i konfigurationen, bevares. Opkald følger også fællesskabets type (se Opkald og lyd).
  • At fastgøre beskeder er for kanalens administratorer, fællesskabets administratorer og moderatorer (med Administrer beskeder); medlemmer af en direkte eller gruppebesked kan stadig.
  • Arkiverede kanaler kan få nye medlemmer, der læser deres historik. Ingen poster, reagerer eller ændrer noget i dem.

Flytning fra Mattermost

Antimatter bruger Mattermosts databasemodel og tilføjer sine egne tabeller, så det kan overtage en Mattermost-servers PostgreSQL-database og filer. Prøv det først på en kopi:

  1. Tag backup af Mattermost-databasen, dens filopbevaring (data/ eller S3-bucket) og config.json, og stop derefter Mattermost.
  2. Gendan databasen i Antimatters PostgreSQL, eller peger Antimatter på en kopi af den (AM_SQLSETTINGS_DATASOURCE).
  3. Kopiér filerne til Antimatters opbevaring, mens du bevarer deres stier: til antimatter-bucketen med et S3-værktøj, eller til data/ med et release-arkiv.
  4. Genbrug dine indstillinger: kopiér config.json, eller flyt den til databasen med amctl --local config migrate (se Indstillinger). Dine MM_-miljøvariabler fortsætter med at fungere; omdøb dem til AM_, når det passer.
  5. Start Antimatter, og følg loggen, mens den opgraderer databasen. Tjek derefter Systemkonsol › Plugins › Plugin-håndtering. Antimatter installerer sine egne builds af Calls, AI chat og integrationerne, når de er nyere end den installerede version, samt af Playbooks og Kanban (Boards), hvis Mattermost-serveren allerede havde en af dem installeret (ingen af dem er længere bundtet på en ny server: se Bundled apps). Hvis Mattermost havde en nyere version af en af dem, skal du fjerne den app og genstarte Antimatter, så dens egen build bliver installeret.
  6. Opsæt push-notifikationer igen med din egen push-proxy: Antimatter sender aldrig notifikationer til Mattermosts push-tjenester, uanset om de er test- eller hostede, da de kun leveres til Mattermosts egne apps. Indtil du ændrer Push-notifikationsserver, sender serveren ingen push-notifikationer (se Push-notifikationer).

Antimatter kontakter ingen tjenester drevet af Mattermost, Inc. (se Forbindelser til eksterne tjenester), selvom din konfiguration stadig nævner én:

  • en push-notifikationsserver hos Mattermost opbevares i indstillingerne, men bruges aldrig;
  • Mattermosts adresser til app-markedet (Marketplace-URL) og til produktmeddelelser er tomme;
  • downloadlinks til apps, der var Mattermosts standardværdier (Antimatter Apps Download Page Link, Android-app downloadlink og iOS-app downloadlink), er erstattet af downloadsiderne for Antimatters apps på GitHub; links, du har sat selv, beholdes;
  • Calls-appen bruger Cloudflares offentlige STUN-server i stedet for Mattermosts, uden at ændre den gemte indstilling (se Calls);
  • sikkerhedsopdateringskontrol og crashrapportering er fjernet, og deres Systemkonsol-indstillinger (Enable Security Alerts, Enable Diagnostics and Error Reporting) samt Meddelelser-siden er også fjernet.

Sokkelen for lokal tilstand er nu /var/tmp/antimatter_local.socket; amctl forsøger også den gamle /var/tmp/mattermost_local.socket. Mattermost understøtter kun PostgreSQL i sine nyere versioner, og det samme gør Antimatter: flyt en MySQL-database til PostgreSQL først. At vende tilbage til Mattermost, efter at Antimatter har opgraderet databasen, betyder, at du skal gendanne dit Mattermost-backup.

Eksportér og importér data

Formatet for masseeksport flytter data mellem servere: hele serveren, nogle fællesskaber eller nogle kanaler, med vedhæftninger, profilbilleder og brugerdefinerede 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 en eksport af et community eller en kanal er --imported-users påkrævet: active, når personerne flyttes til denne server, og inactive, når der importeres til en server, hvor de allerede har konti, så konti oprettet fra usikre match forbliver deaktiveret, indtil en administrator har kontrolleret dem. --destination-team-name importerer til et eksisterende community. Eksport- og importfiler opbevares på serverens lager (ExportSettings.Directory, ImportSettings.Directory) i 30 dage som standard.

På selve serveren udfører antimatter export bulk og antimatter import bulk --apply det samme fra filer, uden at bruge API'et.

En kanals linje i eksporten indeholder dens type og indstillinger (am_type, am_mode, am_root_posts og, for fora, am_forum_view); en linje uden disse importeres som en almindelig tekstbaseret Chat-kanal. En linje for et rodopslag i en forumkanal kræver props.am_thread_title, som er titlen på dens emne; uden en titel fejler importen på den linje.