Back-ups en upgrades

Wat u moet back-uppen, hoe u het herstelt op een nieuwe host, hoe u een upgrade uitvoert en hoe u een Mattermost-server of een enkele community verplaatst naar Antimatter.

Wat u moet back-uppen

WatMet het compose-bestand van de siteMet een releasearchiefMet het .deb- of .rpm-pakket
De database: berichten, gebruikers, communities, kanalen en, met het compose-bestand van de site, de configuratievolume antimatter_postgres, via pg_dumpuw PostgreSQL-databaseuw PostgreSQL-database
Geüploade bestanden, afbeeldingen en geïnstalleerde appsvolume antimatter_files (de S3-opslag)FileSettings.Directory, standaard ./data//var/lib/antimatter
Het configuratiebestand(in de database)config/config.json/etc/antimatter/config/config.json
GIF’s en stickersvolume antimatter_gifsde gegevensmap van de GIF-service/var/lib/gifs-server
Geheimen.env (en compose.override.yaml)uw omgevingsbestand/etc/antimatter/antimatter.env, /etc/gifs-server
De AI-versleutelingssleutel, die de sleutels van modelverbindingen versleuteltAM_AI_ENCRYPTION_KEY in .env (aanbevolen), of het bestand ai-encryption.key in de volume antimatter_dataAM_AI_ENCRYPTION_KEY, of data/ai-encryption.keyAM_AI_ENCRYPTION_KEY in antimatter.env, of /var/lib/antimatter/data/ai-encryption.key

Zonder de AI-versleutelingssleutel kan een herstelde server de API-sleutels van zijn modelverbindingen niet lezen, en moet elke sleutel opnieuw worden ingevoerd. Bewaar een kopie van de sleutel apart van de databasiskopieën, zodat één gestolen kopie niet beide bevat. Zie De versleutelingssleutel.

De database en de bestanden horen bij elkaar: back-up ze tegelijk en bewaar kopieën op een andere locatie dan de server. Volume-namen beginnen met de projectnaam van compose, antimatter (docker volume ls toont ze).

Back-uppen

Voer dit uit vanuit de map van compose.yaml. Als u Antimatter eerst stopt, krijgt u een volledig consistente kopie; een back-up die wordt gemaakt terwijl het draait, is meestal prima, maar bestanden die tijdens de back-up worden geüpload, kunnen er ontbreken.

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"

Als u AM_AI_ENCRYPTION_KEY niet heeft ingesteld, bevindt het sleutelbestand van de server zich in de data-volume, die de bovenstaande lus samen met de bestanden opslaat. Het is beter om de inhoud ervan in .env te plaatsen, zoals De versleutelingssleutel uitlegt, en een kopie ervan apart van de databasiskopieën te bewaren.

Voer dit via cron uit voor dagelijkse back-ups en kopieer de backups/-map naar een andere machine. Bewaar de kopieën van .env net zo veilig als de server: ze bevatten de wachtwoorden ervan.

Wilt u de geüploade bestanden object voor object kopiëren (bijvoorbeeld naar een andere S3-opslag), gebruik dan het AWS command-line tool van de bucket-service:

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

Met een releasearchief maakt u een back-up van de database met pg_dump -Fc, en van de data/- en config/-mappen met uw gebruikelijke hulpmiddelen (data/ bevat het AI-sleutelbestand). Met de pakketten maakt u op dezelfde manier een back-up van de database, en van /etc/antimatter, /var/lib/antimatter, /etc/gifs-server en /var/lib/gifs-server.

Herstellen op een nieuwe host

Plaats compose.yaml, het bewaarde .env en de back-ups in een nieuwe map, en:

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

Gebruik dezelfde .env: de opslag en de database moeten de wachtwoorden behouden die ze hadden, en de modelverbindingen hebben dezelfde AI-versleutelingssleutel nodig. Als de nieuwe host een ander adres heeft, werk dan SITE_URL (en DOMAIN) bij.

Test uw back-ups door ze af en toe te herstellen op een andere machine.

Upgrade

Compose-bestanden die vóór 17 oktober 2026 zijn gedownload, hadden geen data-volume: het AI-sleutelbestand bevond zich in de container. Voordat u de nieuwe compose.yaml gebruikt, en als .env geen AM_AI_ENCRYPTION_KEY bevat, bewaar dan de sleutel die de server heeft aangemaakt: echo "AM_AI_ENCRYPTION_KEY=$(docker compose exec -T antimatter cat /antimatter/data/ai-encryption.key)" >> .env. Als het commando geen bestand vindt, heeft nog geen modelverbinding een sleutel opgeslagen.
  1. Maak een back-up.
  2. Wijzig de imagetag in .env (ANTIMATTER_IMAGE), als u er een vastzet, zoals aanbevolen.
  3. Haal op en herstart:
    docker compose pull
    docker compose up -d
    docker compose logs -f antimatter

Bij het starten verhoogt de server het databasisschema (volg dit in het logboek; bij een grote server kan dit enkele minuten duren) en installeert de nieuwere versies van de ingebouwde apps uit het image. Bij een releasearchief: stop de server, vervang alles behalve config/, data/, logs/, plugins/ en client/plugins/ door de inhoud van het nieuwe archief en start de server opnieuw. Bij het .deb- of .rpm-pakket, installeer het nieuwe pakket zoals Een pakket upgraden uitlegt.

Upgrades gaan alleen vooruit. Zodra een nieuwere server de database heeft geüpgraded, kan een oudere versie deze niet meer gebruiken: om terug te gaan, herstel de back-up die vóór de upgrade is gemaakt. Hetzelfde geldt voor het terugkeren van antimatter-next naar antimatter.

Versies

De server van Antimatter meldt de versie van de Mattermost-lijn waaraan het is gebaseerd (momenteel 12.0.0). De releases op GitHub, met hun archieven en pakketten, hebben hun eigen versienummers, in de 0.9.0-serie tijdens de bèta: antimatter version toont dit als Compilatienummer. De images worden opnieuw gebouwd vanuit de main-branches: antimatter-next elke nacht (tags nightly-<YYYYMMDD>), en beide images bij elke wijziging (tags sha-<commit>). Kies een van deze tags, upgrade bewust en noteer de vorige tag zodat u weet met welke backup deze samenhangt.

Hoofdversies van PostgreSQL

Het compose-bestand gebruikt postgres:17-alpine. Antimatter vereist PostgreSQL 15 of nieuwer. Een nieuwe hoofdversie van PostgreSQL kan de datamap van de vorige versie niet lezen: om over te stappen, dump de database, start de nieuwe versie op een nieuwe volume en herstel de dump daarin.

Upgraden naar 0.9.0

De eerste start van versie 0.9.0 (of van een image gebouwd vanaf 17 oktober 2026) brengt enkele eenmalige wijzigingen aan in de gegevens. Elke wijziging wordt slechts één keer uitgevoerd en wordt in de database geregistreerd. Ze brengen wat op een oude standaardwaarde stond naar de nieuwe standaardwaarde en laten wat een beheerder had gekozen ongewijzigd. Volg ze in het logboek.

Als Antimatter voor een bedrijf of organisatie is, stel Type nieuwe communities in op Werkplek vóór u upgradet: AM_TEAMSETTINGS_DEFAULTCOMMUNITYKIND=workplace. De upgrade geeft elke community het type dat deze instelling op dat moment heeft, en gesprekken zijn standaard uitgeschakeld in de kanalen van communities van het type Community. Zie Werkplek of community.
WatDe wijziging
Types communityElke community krijgt een type, Community of Werkplek: de waarde van Type nieuwe communities (TeamSettings.DefaultCommunityKind) bij de eerste start. Een al ingesteld type wordt behouden. Communitybeheerders kunnen het type van hun community nadien wijzigen, in Teaminstellingen › Kanalen › Type community.
Wie kanalen archiveertKanaalleden archiveren de kanalen waar ze in zitten niet meer: communitybeheerders doen dat. In een werkruimte archiveren ook de beheerders van het kanaal (de maker en de personen die zij tot beheerder hebben benoemd) het kanaal. Dit verandert de rollen van het systeemplan; de machtigingsplannen die een systeembeheerder voor bepaalde communities heeft gemaakt, blijven ongewijzigd.
De rol Moderators in de lay-outvoorbeeldenDe rol Moderators die communities uit een lay-outvoorbeeld kregen, krijgt Personen verwijderen, wat nodig is om personen tijdelijk uit te sluiten en definitief te verwijderen. Alleen rollen die nog exact zo zijn als het voorbeeld ze maakte, worden gewijzigd; een rol die iemand heeft bewerkt, blijft onaangetast.
Rollen met BeheerderEen communityrol met de schakelaar Beheerder ingeschakeld, heeft nu alle rechten die de beheerders van de community hebben, zoals de schakelaar aangeeft, en niet alleen de instellingen van de community.
De ledenlimietMax. leden per community (TeamSettings.MaxUsersPerTeam) gaat van 50, de oude standaardwaarde, naar 0 (geen limiet). Elke andere waarde blijft behouden, evenals een limiet die is ingesteld met AM_TEAMSETTINGS_MAXUSERSPERTEAM.
ModelverbindingenSysteembeheerders krijgen het beheer van modelverbindingen, en communitybeheerders (en rollen met Beheerder) het beheer van die van hun eigen community. De AI-diensten van de Agents-app worden serverbreed modelverbindingen, zie hieronder.
Town Square wordt GeneralHet standaardkanaal van elke community wordt hernoemd van town-square (Town Square) naar general (General). Het behoudt zijn ID, leden, berichten en instellingen, evenals een weergavenaam die de beheerders hebben gekozen. Oude koppelingen en zoekopdrachten op town-square leiden er nog steeds naartoe. Een community die al een kanaal met de naam general heeft, ook al is het gearchiveerd, behoudt town-square als standaardkanaal. Dit geldt ook voor een community waarvan town-square is gearchiveerd: de logboekmeldingen noemen ze, en hun beheerders kunnen de kanalen hernoemen.
FavorietenDe zijbalkcategorie Favorieten van iedereen wordt hernoemd naar Favorieten, zoals de interface nu aangeeft. Categorieën die personen met die naam hebben gemaakt, blijven ongewijzigd.

De diensten van de Agents-app

De upgrade kopieert elke AI-service van de Agents-app naar een serverbrede modelverbinding. Deze verbinding wordt gedeeld met alle werkruimten en is voor iedereen beschikbaar, behalve gasten (schakel Ook gasten in om dit te wijzigen). De sleutels worden versleuteld tijdens het kopiëren, dus de server heeft een AI-versleutelingssleutel nodig: stel bij een cluster met bestanden in S3 eerst AM_AI_ENCRYPTION_KEY in, anders wacht de kopie tot de volgende start. Controleer daarna Systeemconsole › AI › Modelverbindingen:

  • Elke verbinding behoudt de ID van de bijbehorende service, zodat de agents van de app en een automatische vertaling die is ingesteld op een Agents-service deze nog steeds kunnen vinden.
  • OpenAI-, OpenAI-compatibele, Anthropic-, Mistral-, Cohere- en Gemini-services worden verbindingen met hun OpenAI-compatibele (of Anthropic-)endpoint. Een Azure-service wordt een verbinding met het OpenAI-compatibele endpoint van de resource: test dit.
  • AWS Bedrock-, Google Vertex AI- en Cohere North-services, en onbekende types, worden gemarkeerd als Beleef aandacht, met de reden. Hun cloud-gegevens worden niet gekopieerd: wijs ze door naar het OpenAI-compatibele endpoint van de provider of een gateway zoals LiteLLM, en sla ze daarna op.
  • De embedding-service wordt het Embeddings-model van de verbinding met hetzelfde adres en dezelfde sleutel, of een eigen verbinding. De transcriptie-service krijgt het whisper-1-model.
  • Als de herschrijving en samenvattingen nog geen verbinding hebben, krijgen ze de service en het model van de standaardagent van de app.

De eigen instellingen en gegevens van de Agents-app blijven ongewijzigd: de agents gebruiken hun eigen services.

Andere wijzigingen van standaardinstellingen

  • Calls: Test mode is standaard uit en Enable video is standaard aan. Een keuze die in de configuratie is opgeslagen, wordt behouden. Calls volgen ook het type werkruimte (zie Calls en spraak).
  • Berichten bovenaan zetten is voor beheerders van het kanaal, beheerders en moderators van de werkruimte (met Berichten beheren); leden van een privé- of groepsbericht kunnen dit nog steeds.
  • Gearchiveerde kanalen kunnen nieuwe leden toevoegen, die de geschiedenis kunnen lezen. Niemand kan er berichten plaatsen, reageren of iets wijzigen.

Overstappen van Mattermost

Antimatter gebruikt het databasisschema van Mattermost en voegt eigen tabellen toe, waardoor het de PostgreSQL-database en bestanden van een Mattermost-server kan overnemen. Probeer dit eerst op een kopie:

  1. Maak een back-up van de Mattermost-database, de opslag van de bestanden (data/ of S3-bak) en config.json, en stop daarna Mattermost.
  2. Herstel de database in de PostgreSQL van Antimatter, of wijs Antimatter naar een kopie ervan (AM_SQLSETTINGS_DATASOURCE).
  3. Kopieer de bestanden naar de opslag van Antimatter, waarbij u de paden behoudt: naar de antimatter-bak met een S3-hulpmiddel, of naar data/ met een releasearchief.
  4. Herbruik uw instellingen: kopieer config.json, of verplaats het naar de database met amctl --local config migrate (zie Configuratie). Uw MM_-omgevingsvariabelen blijven werken; hernoem ze naar AM_ wanneer het handig is.
  5. Start Antimatter en volg de logboekmeldingen terwijl de database wordt bijgewerkt. Controleer vervolgens Systeemconsole › Plugins › Plugin Beheer. Antimatter installeert eigen versies van Calls, Playbooks, Kanban (Borden), Agents en integraties wanneer deze nieuwer zijn dan de geïnstalleerde versie. Als Mattermost een nieuwere versie van een van deze apps had, verwijder die app en herstart Antimatter, zodat de eigen build wordt geïnstalleerd.
  6. Stel pushmeldingen opnieuw in met uw eigen push-proxy: Antimatter stuurt nooit meldingen naar de pushdiensten van Mattermost, of het nu test- of gehoste diensten zijn, omdat deze alleen worden bezorgd aan de eigen apps van Mattermost. Zolang u Push Notificatie Server niet wijzigt, stuurt de server geen pushmeldingen (zie Pushmeldingen).

Antimatter maakt geen verbinding met services die door Mattermost, Inc. worden beheerd (zie Verbindingen met externe services), zelfs als uw configuratie er nog steeds naar verwijst:

  • een pushmeldingsserver bij Mattermost blijft in de instellingen staan, maar wordt nooit gebruikt;
  • De adressen van Mattermost voor de appmarktplaats (Marktplaats URL) en voor productmededelingen worden geleegd;
  • de app-downloadlinks die de standaardinstellingen van Mattermost waren (Antimatter Apps Download Page Link, Android App Download Link en iOS App Download Link) worden vervangen door de downloadpagina's van de Antimatter-apps op GitHub; links die u zelf hebt ingesteld, worden behouden;
  • de Calls-app gebruikt de publieke STUN-server van Cloudflare in plaats van die van Mattermost, zonder de opgeslagen instelling te wijzigen (zie Calls);
  • de controle op beveiligingsupdates en het crashrapport zijn verwijderd, evenals de bijbehorende instellingen in de Systeemconsole (Beveiligingsmeldingen inschakelen, Diagnostiek en foutrapportage inschakelen) en de pagina Mededelingen.

De socket voor de lokale modus is nu /var/tmp/antimatter_local.socket; amctl probeert ook de oude /var/tmp/mattermost_local.socket. Mattermost ondersteunt alleen nog PostgreSQL in de recente versies, en dat geldt ook voor Antimatter: verplaats eerst een MySQL-database naar PostgreSQL. Als u na het upgraden van de database door Antimatter terugkeert naar Mattermost, moet u uw Mattermost-backup herstellen.

Data exporteren en importeren

Het bulkexportformaat verplaatst data tussen servers: de hele server, bepaalde communities of bepaalde kanalen, inclusief bijlagen, profielfoto's en aangepaste emoji's, indien gewenst.

# 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

Volg de taken met amctl export job list en amctl import job list. Voor een export van een community of kanaal is --imported-users verplicht: active als de gebruikers naar deze server verhuizen, inactive bij een import naar een server waar ze al een account hebben, zodat accounts die zijn aangemaakt op basis van onzekere matches uitgeschakeld blijven totdat een beheerder ze controleert. --destination-team-name importeert naar een bestaande community. Exporten en importen worden standaard 30 dagen bewaard in de opslag van de server (ExportSettings.Directory, ImportSettings.Directory).

Op de server zelf doen antimatter export bulk en antimatter import bulk --apply hetzelfde vanuit bestanden, zonder de API.