Säkerhetskopior och uppgraderingar
Vad som ska säkerhetskopieras, hur man återställer det på en ny värd, hur man gör en uppgradering och hur man flyttar en Mattermost-server eller en enskild community till Antimatter.
Vad som ska säkerhetskopieras
| Vad | Med sajtens compose-fil | Med ett release-arkiv | Med .deb- eller .rpm-paketet |
|---|---|---|---|
| Databasen: meddelanden, användare, communities, kanaler och, med sajtens compose-fil, konfigurationen | volymen antimatter_postgres, via pg_dump | din PostgreSQL-databas | din PostgreSQL-databas |
| Uppladdade filer, bilder och installerade appar | volymen antimatter_files (S3-lagringen) | FileSettings.Directory, ./data/ som standard | /var/lib/antimatter |
| Konfigurationsfilen | (i databasen) | config/config.json | /etc/antimatter/config/config.json |
| GIF:er och klistermärken | volymen antimatter_gifs | GIF-tjänstens datamapp | /var/lib/gifs-server |
| Secrets | .env (och compose.override.yaml) | din miljöfil | /etc/antimatter/antimatter.env, /etc/gifs-server |
| AI-krypteringsnyckeln, som krypterar nycklarna för modellanslutningar | AM_AI_ENCRYPTION_KEY i .env (rekommenderas), eller filen ai-encryption.key i volymen 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 |
Utan AI-krypteringsnyckeln kan en återställd server inte läsa API-nycklarna för sina modellanslutningar, och varje nyckel måste skrivas in på nytt. Spara en kopia av nyckeln separat från databasbackuperna, så att en stulen backup inte innehåller båda. Se Krypteringsnyckeln.
Databasen och filerna hör ihop: säkerhetskopiera dem samtidigt och förvaria kopiorna utanför servern. Volymnamnen börjar med compose-projektets namn, antimatter (docker volume ls listar dem).
Säkerhetskopiera
Från mappen där compose.yaml finns. Om du stänger av Antimatter först får du en helt konsistent kopia; en säkerhetskopia som tas medan det körs är oftast i ordning, men filer som laddas upp under säkerhetskopieringen kan saknas i den.
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"
Om du inte har satt AM_AI_ENCRYPTION_KEY finns serverns nyckelfil i volymen data, som ovanstående loop sparar tillsammans med filerna. Bättre är att lägga dess innehåll i .env som Krypteringsnyckeln förklarar, och spara en kopia av det separat från databasbackuperna.
Kör den från cron för dagliga säkerhetskopior och kopiera backups/-mappen till en annan maskin. Förvaria kopiorna av .env lika säkert som servern: de innehåller dess lösenord.
Om du istället vill kopiera de uppladdade filerna objekt för objekt (till exempel till en annan S3-lagring), använd AWS-kommandotoljaten för tjänsten bucket:
docker compose run --rm -v "$PWD/backups/files:/backup" bucket \
"aws --endpoint-url http://files:9000 s3 sync s3://antimatter /backup"
Med ett releasearkiv, backa upp databasen med pg_dump -Fc, och katalogerna data/ och config/ med dina vanliga verktyg (data/ innehåller AI-nyckelfilen). Med paketen, backa upp databasen på samma sätt, samt /etc/antimatter, /var/lib/antimatter, /etc/gifs-server och /var/lib/gifs-server.
Återställ på en ny värd
Lägg compose.yaml, den sparade .env-filen och säkerhets kopiorna i en ny mapp, och sedan:
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
Använd samma .env: lagringen och databasen måste behålla de lösenord de hade, och modellanslutningarna behöver samma AI-krypteringsnyckel. Om den nya värden har en annan adress, uppdatera SITE_URL (och DOMAIN).
Testa dina säkerhetskopior genom att återställa dem på en annan maskin från tid till annan.
Uppgradera
data-volym: AI-nyckelfilen fanns i containern. Innan du använder den nya compose.yaml, och om .env inte har AM_AI_ENCRYPTION_KEY, spara nyckeln som servern skapade: echo "AM_AI_ENCRYPTION_KEY=$(docker compose exec -T antimatter cat /antimatter/data/ai-encryption.key)" >> .env. Om kommandot inte hittar någon fil har ingen modellanslutning sparat en nyckel än.- Ta en säkerhetskopia.
- Ändra bildtaggen i
.env(ANTIMATTER_IMAGE), om du fäster en, som rekommenderas. - Hämta och starta om:
docker compose pull docker compose up -d docker compose logs -f antimatter
Vid start uppgraderar servern databasschemat (följ det i loggen; en stor server kan ta flera minuter) och installerar de nyare versionerna av de medföljande apparna från bilden. Med ett releasearkiv: stoppa servern, byt ut allt utom config/, data/, logs/, plugins/ och client/plugins/ mot innehållet i det nya arkivet, och starta den igen. Med .deb- eller .rpm-paketet, installera det nya paketet enligt beskrivningen i Uppgradera ett paket.
antimatter-next tillbaka till antimatter.Versioner
Antimatters server rapporterar versionen av Mattermost-linjen den är baserad på (för närvarande 12.0.0). Releasearna på GitHub, med sina arkiv och paket, har egna versionsnummer, i 0.9.0-serien under betan: antimatter version visar det som Byggnationsnummer. Bilderna byggs om från main-grenarna: antimatter-next varje natt (taggar nightly-<YYYYMMDD>), och båda bilderna vid varje ändring (taggar sha-<commit>). Fäst en av dessa taggar, uppgradera avsiktligt, och håll den tidigare taggen noterad så att du vet vilken backup som hör till den.
PostgreSQL:s huvudversioner
Compose-filen använder postgres:17-alpine. Antimatter kräver PostgreSQL 15 eller nyare. En ny huvudversion av PostgreSQL kan inte läsa den föregående versionens datamapp: för att flytta till en, dumpa databasen, starta den nya versionen på en ny volym och återställ dumpen i den.
Uppgradering till 0.9.0
Den första starten av version 0.9.0 (eller av en bild byggd från 17 oktober 2026) gör några engångsändringar i datan. Varje ändring körs en gång och registreras i databasen. De tar det som stod kvar på ett gammalt standardvärde och uppdaterar det till det nya, och lämnar orört det en administratör har valt. Följ dem i loggen.
AM_TEAMSETTINGS_DEFAULTCOMMUNITYKIND=workplace. Uppgraderingen ger varje community den typ som inställningen har vid det tillfället, och samtal är avstängda som standard i kanalerna för community av typen Community. Se Arbetsplats eller community.| Vad | Ändringen |
|---|---|
| Communitytyper | Varje community får en typ, Community eller Arbetsplats: värdet på Typ av nya community (TeamSettings.DefaultCommunityKind) vid den första starten. En typ som redan är inställd bevaras. Communityadministratörer kan ändra typen för sitt community senare, i Teaminställningar › Kanaler › Typ av community. |
| Vem arkiverar kanaler | Kanalmedlemmar arkiverar inte längre de kanaler de är med i: det gör community-administratörerna. På en arbetsyta är det kanalens administratörer (den som skapade den och de de gjort till administratörer) som arkiverar den. Detta ändrar rollerna i systemskemat; behörighetsscheman som en systemadministratör har skapat för vissa communities förblir oförändrade. |
| Rollen Moderatorer i layoutmallarna | Rollen Moderators som communities fick från en layoutmall får Ta bort personer, vilket behövs för att tidsbegränsa och ta bort dem. Endast roller som fortfarande är exakt som mallen skapade dem ändras; en roll som någon har redigerat förblir oförändrad. |
| Roller med Administratör | En community-roll med växeln Administratör på har nu allt som communityns administratörer kan göra, som växeln anger, inte bara communityns inställningar. |
| Medlemsgränsen | Max Members Per Community (TeamSettings.MaxUsersPerTeam) ändras från 50, det gamla standardvärdet, till 0 (ingen gräns). Alla andra värden bevaras, liksom en gräns som satts med AM_TEAMSETTINGS_MAXUSERSPERTEAM. |
| Modellanslutningar | Systemadministratörer får hanteringen av modellanslutningar, och community-administratörer (och roller med Administratör) får hanteringen av sin communitys egna. AI-tjänsterna i appen Agents blir serveromfattande modellanslutningar, se nedan. |
| Town Square blir General | Varje communitys standardkanal byter namn från town-square (Town Square) till general (General). Den behåller sin ID, medlemmar, meddelanden och inställningar, samt ett visningsnamn som administratörerna valt. Gamla länkar och sökningar efter town-square leder fortfarande dit. En community som redan har en kanal med namnet general, även om den är arkiverad, behåller sin town-square som standardkanal, liksom en community vars town-square är arkiverad: loggen nämner dem, och deras administratörer kan byta namn på kanalerna. |
| Favoriter | Allas favoritkategori i sidofältet byter namn till Favoriter, som gränssnittet nu visar. Kategorier som personer har skapat med det namnet förblir oförändrade. |
Appen Agents tjänster
Uppgraderingen kopierar varje AI-tjänst i appen Agents till en serverbrett modellanslutning som delas med alla communityer och kan användas av alla utom gäster (aktivera Även gäster för att tillåta detta). Nycklarna krypteras under transport, så servern behöver sitt AI-krypteringsnyckel: på en kluster med filer i S3, ställ in AM_AI_ENCRYPTION_KEY först, annars väntar kopieringen på nästa start. Kontrollera sedan Systemkonsol › AI › Modellanslutningar:
- Varje anslutning behåller ID:t för sin tjänst, så appens agenter och en automatisk översättning inställd på en Agents-tjänst hittar den fortfarande.
- OpenAI-, OpenAI-kompatibla, Anthropic-, Mistral-, Cohere- och Gemini-tjänster blir anslutningar till deras OpenAI-kompatibla (eller Anthropic) slutpunkt. En Azure-tjänst blir en anslutning till resursens OpenAI-kompatibla slutpunkt: testa den.
- AWS Bedrock-, Google Vertex AI- och Cohere North-tjänster, samt okända typer, markeras som Behöver åtgärd, med anledningen. Deras molnautentiseringsuppgifter kopieras inte: peka dem mot leverantörens OpenAI-kompatibla slutpunkt eller en gateway som LiteLLM, och spara sedan.
- Embedding-tjänsten blir Embeddings-modellen för anslutningen med samma adress och nyckel, eller en egen anslutning. Transkriptionstjänsten får modellen
whisper-1. - När omskrivningar och sammanfattningar ännu inte har en anslutning, får de appens standardagents tjänst och modell.
Appen Agents egna inställningar och data förblir oförändrade: dess agenter fortsätter att använda dess tjänster.
Andra ändringar av standardinställningar
- Samtal: Testläge är av och Aktivera video är på som standard. Ett val som sparats i konfigurationen behålls. Samtal följer också communityens typ (se Samtal och röst).
- Att fästa meddelanden ovanpå är för kanalens administratörer, communityens administratörer och moderatorer (med Hantera meddelanden); medlemmar i ett direkt- eller gruppmeddelande kan fortfarande göra det.
- Arkiverade kanaler kan ta emot nya medlemmar, som läser deras historik. Ingen skriver, reagerar eller ändrar något i dem.
Flytta från Mattermost
Antimatter använder Mattermosts databasschema och lägger till egna tabeller, så det kan ta över en Mattermost-servers PostgreSQL-databas och filer. Testa det först på en kopia:
- Säkerhetskopiera Mattermost-databasen, dess filförvaring (
data/eller S3-bucket) ochconfig.json, och stoppa sedan Mattermost. - Återställ databasen i Antimatters PostgreSQL, eller peka Antimatter mot en kopia av den (
AM_SQLSETTINGS_DATASOURCE). - Kopiera filerna till Antimatters förvaring, med deras sökvägar bevarade: till
antimatter-bucketen med ett S3-verktyg, eller tilldata/med ett releasearkiv. - Återanvänd dina inställningar: kopiera
config.json, eller flytta den till databasen medamctl --local config migrate(se Konfiguration). DinaMM_-miljövariabler fortsätter att fungera; byt namn på dem tillAM_när det passar. - Starta Antimatter och följ loggen medan den uppgraderar databasen. Kontrollera sedan Systemkonsol › Plugin › Pluginadministration. Antimatter installerar egna versioner av Samtal, Playbooks, Kanban (Tavlor), Agents och integreringar när de är nyare än den installerade versionen. Om Mattermost hade en nyare version av någon av dem, ta bort den appen och starta om Antimatter så att dess egen version installeras.
- Konfigurera push-aviseringar igen med din egen push-proxy: Antimatter skickar aldrig aviseringar till Mattermosts push-tjänster, oavsett om de är test- eller hostade, eftersom de endast levereras till Mattermosts egna appar. Så länge du inte ändrar Push Notification Server, skickar servern inga push-aviseringar (se Push-aviseringar).
Antimatter kontaktar inga tjänster som drivs av Mattermost, Inc. (se Anslutningar till externa tjänster), även om din konfiguration fortfarande anger sådana:
- en push-aviseringsserver hos Mattermost finns kvar i inställningarna men används aldrig;
- Mattermosts adresser för appmarknaden (Marketplace URL) och för produktmeddelanden rensas;
- nedladdningslänkar som var Mattermosts standard (Antimatter Apps Download Page Link, Nedladdningslänk för Android-app och Nedladdningslänk för iOS app) ersätts av nedladdningssidorna för Antimatters appar på GitHub; länkar du har ställt in själv behålls;
- apparna Samtal använder Cloudflares publika STUN-server i stället för Mattermosts, utan att ändra den sparade inställningen (se Samtal);
- säkerhetsuppdateringskontrollen och kraschrapporteringen är borta, liksom deras inställningar i Systemkonsolen (Enable Security Alerts, Enable Diagnostics and Error Reporting) och sidan Meddelanden.
Socketen för lokalt läge är nu /var/tmp/antimatter_local.socket; amctl försöker också med den gamla /var/tmp/mattermost_local.socket. Mattermost stöder endast PostgreSQL i sina senaste versioner, och Antimatter gör detsamma: flytta en MySQL-databas till PostgreSQL först. Att gå tillbaka till Mattermost efter att Antimatter har uppgraderat databasen innebär att du måste återställa din Mattermost-säkerhetskopia.
Exportera och importera data
Formatet för massexport flyttar data mellan servrar: hela servern, vissa team eller vissa kanaler, med bilagor, profilbilder och anpassade emojier om du önskar.
# 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ölj jobben med amctl export job list och amctl import job list. För export av en community eller kanal krävs --imported-users: active när personerna flyttar till den här servern, inactive när du importerar till en server där de redan har konton, så att konton som skapats från osäkra matchningar förblir inaktiva tills en administratör har granskat dem. --destination-team-name importerar till en befintlig community. Exporter och importer sparas på serverns lagringsplats (ExportSettings.Directory, ImportSettings.Directory) i 30 dagar som standard.
På själva servern gör antimatter export bulk och antimatter import bulk --apply samma sak från filer, utan API:et.