Zálohy a aktualizace

Co zálohovat, jak to obnovit na novém hostiteli, jak aktualizovat a jak převést server Mattermost nebo jednotlivou komunitu do Antimatter.

Co zálohovat

CoS compose souborem webuS archívem vydáníS balíčkem .deb nebo .rpm
Databáze: zprávy, uživatelé, komunity, kanály a, s compose souborem webu, konfiguracesvazek antimatter_postgres, pomocí pg_dumpvaše databáze PostgreSQLvaše databáze PostgreSQL
Nahraté soubory, obrázky a nainstalované aplikacesvazek antimatter_files (úložiště S3)FileSettings.Directory, výchozí je ./data//var/lib/antimatter
Konfigurační soubor(v databázi)config/config.json/etc/antimatter/config/config.json
Gify a samolepkysvazek antimatter_gifsadatový adresář služby GIF/var/lib/gifs-server
Hesla.env (a compose.override.yaml)váš soubor prostředí/etc/antimatter/antimatter.env, /etc/gifs-server
Klíč pro šifrování AI, který šifruje klíče připojení k modelůmAM_AI_ENCRYPTION_KEY v .env (doporučeno), nebo soubor ai-encryption.key v objemu antimatter_dataAM_AI_ENCRYPTION_KEY nebo data/ai-encryption.keyAM_AI_ENCRYPTION_KEY v antimatter.env nebo /var/lib/antimatter/data/ai-encryption.key

Bez klíče pro šifrování AI nemůže obnovený server přečíst API klíče připojení k modelům a každý z nich je potřeba znovu zadat. Klíč si uložte na jiném místě než zálohy databáze, aby v jednom ukradeném záložním souboru nebyly obojí. Viz Klíč pro šifrování.

Databáze a soubory spolu souvisí: zálohujte je ve stejný čas a uchovávejte kopie mimo server. Názvy svazků začínají názvem compose projektu, antimatter (vypíše je docker volume ls).

Zálohování

Z adresáře souboru compose.yaml. Předem zastavení Antimatter zajistí plně konzistentní kopii; záloha pořízená za běhu je obvykle v pořádku, ale soubory nahraté během zálohování v ní mohou chybět.

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"

Pokud jste nenastavili AM_AI_ENCRYPTION_KEY, klíčový soubor serveru se nachází v objemu data, který výše uvedená smyčka ukládá spolu se soubory. Lepší je vložit jeho obsah do .env, jak vysvětluje Klíč pro šifrování, a mít jeho kopii na jiném místě než zálohy databáze.

Spouštějte to z cronu pro denní zálohy a kopírujte adresář backups/ na jiný stroj. Kopie souboru .env uchovávejte stejně bezpečně jako server: obsahují jeho hesla.

Pokud chcete nahraté soubory kopírovat objekt po objektu (například do jiného úložiště S3), použijte nástroj příkazového řádku AWS služby bucket:

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

Při použití archivu s vydáním zálohujte databázi pomocí pg_dump -Fc a adresáře data/ a config/ pomocí svých obvyklých nástrojů (v data/ se nachází klíčový soubor AI). Při použití balíčků zálohujte databázi stejným způsobem a také /etc/antimatter, /var/lib/antimatter, /etc/gifs-server a /var/lib/gifs-server.

Obnovení na novém hostiteli

Umístěte compose.yaml, uložený .env a zálohy do nového adresáře, pak:

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

Použijte stejný .env: úložiště i databáze musí si zachovat původní hesla a připojení k modelům potřebují stejný klíč pro šifrování AI. Pokud má nový host jinou adresu, aktualizujte SITE_URL (a DOMAIN).

Zálohy otestujte občas tím, že je obnovíte na jiném stroji.

Aktualizace

Soubory Compose stažené před 17. říjnem 2026 neměly objem data: klíčový soubor AI byl v kontejneru. Než použijete nový compose.yaml a pokud .env neobsahuje AM_AI_ENCRYPTION_KEY, uložte klíč, který server vytvořil: echo "AM_AI_ENCRYPTION_KEY=$(docker compose exec -T antimatter cat /antimatter/data/ai-encryption.key)" >> .env. Pokud příkaz nenajde soubor, žádná připojení k modelům dosud neuložila klíč.
  1. Pořiďte zálohu.
  2. Změňte štítek obrazu v .env (ANTIMATTER_IMAGE), pokud ho fixujete, jak je doporučeno.
  3. Stáhněte a restartujte:
    docker compose pull
    docker compose up -d
    docker compose logs -f antimatter

Při spuštění server aktualizuje schéma databáze (postupujte podle záznamů v logu; u velkých serverů to může trvat několik minut) a nainstaluje novější verze aplikací zabudovaných do obrazu. V případě archivu vydání: zastavte server, nahraďte vše kromě config/, data/, logs/, plugins/ a client/plugins/ obsahem nového archivu a server znovu spusťte. V případě balíčku .deb nebo .rpm nainstalujte nový balíček tak, jak je vysvětleno v dokumentaci Aktualizace balíčku.

Aktualizace probíhají pouze do před. Jakmile novější server databázi aktualizuje, starší verze ji už nemůže použít: pokud se chcete vrátit, obnovte zálohu pořízenou před aktualizací. To samé platí pro návrat z antimatter-next zpět na antimatter.

Verze

Server Antimatter hlásí verzi řady Mattermost, na které je založen (v současnosti 12.0.0). Vydání na GitHubu, včetně jejich archivů a balíčků, mají vlastní čísla verzí, v řadě 0.9.0 během beta verze: příkaz antimatter version je zobrazuje jako Verze sestavení. Obrazy se přebudovávají z větví main: antimatter-next každou noc (štítky nightly-<YYYYMMDD>) a oba obrazy při každé změně (štítky sha-<commit>). Přejište jeden z těchto štítků, aktualizujte cíleně a zaznamenejte si předchozí štítek, abyste věděli, která záloha k němu patří.

Hlavní verze PostgreSQL

Soubor compose používá postgres:17-alpine. Antimatter vyžaduje PostgreSQL 15 nebo novější. Nová hlavní verze PostgreSQL nedokáže přečíst datový adresář předchozí verze: pokud se chcete přejít na novou, vyexportujte databázi, spusťte novou verzi na novém svazku a do ní export obnovte.

Aktualizace na verzi 0.9.0

První spuštění verze 0.9.0 (nebo obrazu sestaveného od 17. října 2026) provede několik jednorázových změn v datech. Každá se provede pouze jednou a je zaznamenána v databázi. Tyto změny přenášejí hodnoty, které zůstaly na starých výchozích nastaveních, na nové, a ponechávají bez změny to, co si administrátor explicitně zvolil. Postupujte podle záznamů v logu.

Pokud Antimatter slouží firmě nebo organizaci, nastavte Typ nových komunit na Pracovní prostor před aktualizací: AM_TEAMSETTINGS_DEFAULTCOMMUNITYKIND=workplace. Aktualizace přiřadí každé komunitě typ, který má toto nastavení v daném okamžiku, a hovory jsou v kanálech komunit typu Guild ve výchozím nastavení vypnuty. Viz Guild nebo pracovní prostor.
CoZměna
Typy komunitKaždá komunita získá typ, Guild nebo Pracovní prostor: hodnotu Typ nových komunit (TeamSettings.DefaultCommunityKind) při prvním spuštění. Již nastavený typ se zachová. Administrátoři komunity mohou typ své komunity později změnit v Nastavení týmu › Obecné.
Kdo archivuje kanályČlenové kanálu již nearchivují kanály, ve kterých jsou; to dělají administrátoři komunity. V pracovním prostoru kanál archivují také jeho administrátoři (ten, kdo ho vytvořil, a ti, které administrátory udělil). Tím se změní role v systému schématu; schémata oprávnění, která vytvořil administrátor systému pro některé komunity, zůstávají beze změny.
Role Moderátorů ve šablonách rozvrženíRole Moderátorů, kterou komunity získaly ze šablony rozvržení, dostává oprávnění Odebírat lidi, které je potřeba pro vylučování a odstraňování lidí. Změní se jen role, které jsou přesně tak, jak je šablona vytvořila; roli, kterou někdo upravil, se nedotkne.
Role s AdministrátoremRole komunity s přepínačem Administrátor zapnutým nyní zahrnuje vše, co mohou dělat administrátoři dané komunity, jak přepínač naznačuje, a ne jen nastavení komunity.
Limit členůMax. počet členů na komunitu (TeamSettings.MaxUsersPerTeam) se mění z 50, což bylo staré výchozí nastavení, na 0 (bez limitu). Jakákoliv jiná hodnota se zachová, stejně jako limit nastavený pomocí AM_TEAMSETTINGS_MAXUSERSPERTEAM.
Připojení k modelůmSystémoví administrátoři získávají správu připojení k modelům, administrátoři komunit (a role s Administrátorem) správu připojení k modelům jejich vlastní komunity. Služby AI aplikace Agenti se stávají serverově širokými připojeními k modelům, viz níže.
Town Square se stává GeneralVýchozí kanál každé komunity se přejmenuje z town-square (Town Square) na general (General). Zachová si svůj ID, členy, zprávy a nastavení, stejně jako zobrazené jméno, které si vybrali administrátoři. Staré odkazy a vyhledávání podle town-square stále vedou na tento kanál. Komunita, která už má kanál pojmenovaný general, i když je archivovaný, si ponechá town-square jako výchozí kanál; totéž platí pro komunitu, jejíž town-square je archivován: systémový deník je jmenuje a jejich administrátoři mohou kanály přejmenovat.
OblíbenéKategorie Oblíbené v bočním panelu každého uživatele se přejmenuje na Oblíbené, jak to nyní naznačuje rozhraní. Kategorie, které lidé vytvořili s tímto názvem, zůstávají beze změny.

Služby aplikace Agenti

Aktualizace zkopíruje každou službu AI aplikace Agenti do celoserverového připojení k modelu, sdíleného se všemi komunitami a dostupného všem kromě hostů (zapněte Také hosté, aby ho mohli používat i oni). Klíče jsou při kopírování šifrovány, takže server potřebuje svůj klíč pro šifrování AI: v klastru, jehož soubory jsou v S3, nastavte nejprve AM_AI_ENCRYPTION_KEY, jinak kopírování počká na další spuštění. Poté zkontrolujte Systémová konzole › AI › Připojení k modelům:

  • Každé připojení si zachovává ID své služby, takže agenti aplikace a automatický překlad nastavený na službu Agents ji nadále najdou.
  • Služby OpenAI, OpenAI-kompatibilní, Anthropic, Mistral, Cohere a Gemini se stanou připojeními k jejich OpenAI-kompatibilnímu (nebo Anthropic) koncovému bodu. Služba Azure se stane připojením k OpenAI-kompatibilnímu koncovému bodu daného zdroje: otestujte ho.
  • Služby AWS Bedrock, Google Vertex AI a Cohere North, stejně jako neznámé typy, jsou označeny jako Potřebuje pozornost s uvedením důvodu. Jejich cloudové přihlašovací údaje se nekopírují: namířte je na OpenAI-kompatibilní koncový bod poskytovatele nebo na bránu, například LiteLLM, a poté uložte.
  • Služba pro embedding se stane modelem Embeddings připojení se stejnou adresou a klíčem, nebo vlastním připojením. Služba pro přepis získá model whisper-1.
  • Pokud přepsání a shrnutí zatím nemají připojení, dostanou službu a model výchozího agenta aplikace.

Agenti aplikace Agenti

Po službách aktualizace převede každého agenta aplikace Agenti (nyní aplikace AI chat) na celoserverového agenta na stejném účtu: jeho připojení (to, které bylo zkopírováno ze služby), model, pokyny, uvažování, kola nástrojů a kdo ho může používat. Za tyto agenty pak odpovídá server. Pokud aplikace omezila agenta způsobem, který serveroví agenti nevyjadřují (kanály, kde odpovídal, seznamy blokovaných, přístup na základě atributů), je agent zúžen na členy těchto kanálů, nebo na nikoho, a označen jako vyžadující pozornost, stejně jako agent, jehož služba se nestala připojením. Zkontrolujte je v Systémová konzole › AI › Připojení k modelům. Ostatní nastavení aplikace zůstávají beze změny.

Další změny výchozích hodnot

  • Hovory: Testovací režim je ve výchozím nastavení vypnutý a Povolit video zapnuté. Výběr uložený v konfiguraci se zachová. Hovory také respektují typ komunity (viz Hovory a hlas).
  • Přesunutí zpráv na vrchol je v kompetenci administrátorů kanálu, administrátorů a moderátorů komunity (s oprávněním Spravovat zprávy); členové přímé nebo skupinové zprávy to mohou nadále dělat.
  • Archivované kanály mohou přijímat nové členy, kteří si mohou přečíst jejich historii. Nikdo v nich nemůže psát, reagovat ani nic měnit.

Přechod z Mattermost

Antimatter používá schéma databáze Mattermost a přidává vlastní tabulky, takže může převzít databázi PostgreSQL a soubory serveru Mattermost. Nejprve to vyzkoušejte na kopii:

  1. Zálohujte databázi Mattermost, jeho úložiště souborů (data/ nebo S3 bucket) a config.json, poté Mattermost zastavte.
  2. Obnovte databázi do PostgreSQL pro Antimatter, nebo Antimatter nasměrujte na její kopii (AM_SQLSETTINGS_DATASOURCE).
  3. Zkopírujte soubory do úložiště Antimatter, přičemž zachovejte jejich cesty: do bucketu antimatter pomocí nástroje pro S3, nebo do data/ pomocí archivu vydání.
  4. Znovu použijte svá nastavení: zkopírujte config.json, nebo ho přeneste do databáze pomocí amctl --local config migrate (viz Nastavení). Vaše proměnné prostředí MM_ nadále fungují; přejmenujte je na AM_, jak vám to vyhovuje.
  5. Spusťte Antimatter a sledujte protokol, zatímco aktualizuje databázi. Poté zkontrolujte Systémová konzole › Pluginy › Správa pluginů. Antimatter nainstaluje vlastní sestavení funkcí Hovory, AI chat a integrace, pokud jsou novější než nainstalovaná verze, a také funkcí Playbooks a Kanban (Nástěnky), pokud byla některá z nich na serveru Mattermost již nainstalována (na novém serveru se žádná z nich již nenachází v základní instalaci: viz Aplikace v základní instalaci). Pokud měl Mattermost novější verzi některé z těchto aplikací, odeberte danou aplikaci a restartujte Antimatter, aby se nainstalovalo jeho vlastní sestavení.
  6. Nastavte push oznámení znovu, pomocí vlastního push proxy: Antimatter nikdy neposílá oznámení do push služeb Mattermost, ať už testovacích nebo hostovaných, protože ty doručují pouze do vlastních aplikací Mattermost. Dokud nezměníte Server push oznámení, server neposílá žádná push oznámení (viz Push oznámení).

Antimatter nekomunikuje s žádnou službou provozovanou společností Mattermost, Inc. (viz Připojení k externím službám), i když se v konfiguraci stále nachází odkaz na některou z nich:

  • server push notifikací od Mattermost zůstává v nastaveních, ale nikdy se nepoužívá;
  • adresy Mattermost pro tržiště aplikací (URL tržiště) a pro produktová oznámení jsou vyprázdněny;
  • odkazy ke stažení aplikací, které byly výchozími odkazy Mattermost (Antimatter Apps Download Page Link, Odkaz ke stažení aplikace pro Android a Odkaz ke stažení aplikace pro iOS), jsou nahrazeny stránkami ke stažení aplikací Antimatter na GitHubu; odkazy, které jste nastavili sami, zůstávají beze změny;
  • aplikace Hovory používá veřejný STUN server Cloudflare místo toho od Mattermost, aniž by se měnilo uložené nastavení (viz Hovory);
  • kontrola bezpečnostních aktualizací a hlášení chyb byly odstraněny, stejně jako jejich nastavení v Systémové konzoli (Povolit bezpečnostní upozornění, Povolit diagnostiku a hlášení chyb) a stránka Oznámení.

Místní socket je nyní /var/tmp/antimatter_local.socket; amctl také zkouší starý /var/tmp/mattermost_local.socket. Mattermost v nedávných verzích podporuje pouze PostgreSQL, a to samé platí pro Antimatter: databázi MySQL je třeba nejprve přenést do PostgreSQL. Vratit se k Mattermostu poté, co Antimatter aktualizoval databázi, znamená obnovit zálohu Mattermost.

Export a import dat

Formát hromadného exportu slouží k přenosu dat mezi servery: celý server, některé komunity nebo některé kanály, včetně příloh, profilových fotografií a vlastních emoji, pokud je požadujete.

# 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

Postup exportu a importu sledujte pomocí příkazů amctl export job list a amctl import job list. Pro export komunity nebo kanálu je požadován parametr --imported-users: hodnota active se používá, když se lidé přesouvají na tento server, hodnota inactive se používá při importu do serveru, kde už mají účty, aby účty vytvořené z nejistých shod zůstaly neaktivní, dokud je administrátor neověří. Parametr --destination-team-name umožňuje import do existující komunity. Exporty a importy se na úložišti serveru (ExportSettings.Directory, ImportSettings.Directory) uchovávají výchozí po dobu 30 dnů.

Přímo na serveru příkazy antimatter export bulk a antimatter import bulk --apply provádějí stejnou operaci z souborů, aniž by využívaly API.

Řádek kanálu v exportu obsahuje jeho typ a nastavení (am_type, am_mode, am_root_posts a u fóra am_forum_view); řádek bez těchto údajů se importuje jako běžný textový kanál Chat. Řádek kořenového příspěvku ve fórovém kanálu vyžaduje props.am_thread_title, tedy název tématu; bez něj import na tomto řádku selže.