Mga backup at upgrade

Ano ang dapat i-backup, paano ito i-restore sa bagong host, paano mag-upgrade, at paano mag-move ng Mattermost server o isang community papuntang Antimatter.

Ano ang dapat i-backup

AnoGamit ang compose file ng siteGamit ang release archiveGamit ang .deb o .rpm package
Ang database: mga mensahe, mga user, mga community, mga channel at, gamit ang compose file ng site, ang configurationvolume antimatter_postgres, gamit ang pg_dumpang iyong PostgreSQL databaseang iyong PostgreSQL database
Mga na-upload na file, imahe, at installed na appsvolume antimatter_files (ang S3 storage)FileSettings.Directory, ./data/ bilang default/var/lib/antimatter
Ang configuration file(nasa database)config/config.json/etc/antimatter/config/config.json
Mga GIF at stickervolume antimatter_gifsang data directory ng GIF service/var/lib/gifs-server
Mga sekreto.env (at compose.override.yaml)ang iyong environment file/etc/antimatter/antimatter.env, /etc/gifs-server
Ang AI encryption key, na nag-encrypt ng mga key ng mga model connectionAM_AI_ENCRYPTION_KEY sa .env (inirerekomenda), o ang file ai-encryption.key sa volume antimatter_dataAM_AI_ENCRYPTION_KEY, o data/ai-encryption.keyAM_AI_ENCRYPTION_KEY sa antimatter.env, o /var/lib/antimatter/data/ai-encryption.key

Kung wala ang AI encryption key, hindi mababasa ng na-restore na server ang mga API key ng mga model connection nito, at kailangan ulit na ilagay ang bawat isa. I-keep ang isang kopya ng key na hiwalay sa mga database backup, para hindi parehong nasa isang nakaw na backup ang dalawa. Tingnan ang The encryption key.

Ang database at mga file ay magkakaugnay: i-backup sila nang sabay-sabay, at mag-ingat na ang mga kopya ay nasa labas ng server. Ang mga pangalan ng volume ay nagsisimula sa pangalan ng compose project, antimatter (listahan nila gamit ang docker volume ls).

Mag-backup

Ginagawa mula sa directory ng compose.yaml. Ang pagpapatay ng Antimatter bago ang backup ay nagbibigay ng buong-katotohanang kopya; ang backup na ginawa habang tumatakbo ay karaniwang sapat, ngunit ang mga file na na-upload habang nagpapa-backup ay maaaring mawala rito.

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"

Kung hindi mo pa inilagay ang AM_AI_ENCRYPTION_KEY, nasa data volume ang key file ng server, na isinama ng loop sa itaas sa mga file. Mas maganda, ilagay ang nilalaman nito sa .env ayon sa paliwanag ng The encryption key, at i-keep ang isang kopya nito na hiwalay sa mga database backup.

I-run ito mula sa cron para sa pang-araw-araw na backup, at i-copy ang backups/ directory sa ibang makina. I-secure ang mga kopya ng .env nang katulad ng server: sila ang naglalaman ng mga password nito.

Para i-copy ang mga na-upload na file isa-isa (halimbawa, papuntang ibang S3 storage), gamitin ang AWS command-line tool ng bucket service:

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

Gamit ang release archive, i-backup ang database gamit ang pg_dump -Fc, at ang mga data/ at config/ directories gamit ang mga karaniwang tool mo (data/ ang naglalaman ng AI key file). Gamit ang mga package, i-backup ang database nang parehong paraan, pati ang /etc/antimatter, /var/lib/antimatter, /etc/gifs-server at /var/lib/gifs-server.

I-restore sa bagong host

Ilagay ang compose.yaml, ang na-save na .env at ang mga backup sa bagong directory, tapos:

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

Gumamit ng parehong .env: dapat manatili ang mga password ng storage at database, at kailangan ng mga model connection ng parehong AI encryption key. Kung may ibang address ang bagong host, i-update ang SITE_URL (at DOMAIN).

Subukan ang iyong mga backup sa pamamagitan ng pag-restore nila sa ibang makina mula panahon sa panahon.

Mag-upgrade

Ang mga compose file na i-download bago ang 17 Oktubre 2026 ay walang data volume: nasa loob ng container ang AI key file. Bago gamitin ang bagong compose.yaml, at kung walang AM_AI_ENCRYPTION_KEY sa .env, i-save ang key na ginawa ng server: echo "AM_AI_ENCRYPTION_KEY=$(docker compose exec -T antimatter cat /antimatter/data/ai-encryption.key)" >> .env. Kung hindi makahanap ng file ang command, wala pang model connection na may na-save na key.
  1. Mag-backup.
  2. Palitan ang image tag sa .env (ANTIMATTER_IMAGE), kung pinipili mo ito, ayon sa rekomendasyon.
  3. I-pull at i-restart:
    docker compose pull
    docker compose up -d
    docker compose logs -f antimatter

Sa pag-start, ina-update ng server ang schema ng database (subukan ito sa log; maaaring magtagal ng ilang minuto sa malaking server) at inu-install ang mga mas bagong bersyon ng mga bundled apps mula sa image. Kung gamit ang release archive: itigil ang server, palitan ang lahat maliban sa config/, data/, logs/, plugins/ at client/plugins/ gamit ang nilalaman ng bagong archive, at i-start ulit ito. Kung gamit ang .deb o .rpm package, i-install ang bagong package ayon sa paliwanag ng Upgrade a package.

Pang-una lang ang mga upgrade. Kapag na-upgrade na ng mas bagong server ang database, hindi na maaari gamitin ito ng mas lumang bersyon: para bumalik, i-restore ang backup na kinuha bago ang upgrade. Ito rin ang nangyayari sa paglipat mula sa antimatter-next pabalik sa antimatter.

Mga Bersyon

Ipinapakita ng server ng Antimatter ang bersyon ng linya ng Mattermost na batayan nito (kasalukuyang 12.0.0). Ang mga release sa GitHub, kasama ang kanilang archive at package, ay may sariling numero ng bersyon, sa serye ng 0.9.0 noong beta: ipinapakita nito ng antimatter version bilang Numero ng Build. Muling binubuo ang mga image mula sa mga main branches: ang antimatter-next bawat gabi (tags nightly-<YYYYMMDD>), at ang parehong image bawat pagbabago (tags sha-<commit>). I-pin ang isa sa mga tag na ito, mag-upgrade nang may layunin, at i-remember ang nakaraang tag para alam kung aling backup ang kasama nito.

Mga Major Bersyon ng PostgreSQL

Ginagamit ng compose file ang postgres:17-alpine. Kailangan ng Antimatter ang PostgreSQL 15 o mas bagong bersyon. Hindi mababasa ng bagong major bersyon ng PostgreSQL ang data directory ng nakaraang bersyon: para lumipat, i-dump ang database, i-start ang bagong bersyon sa bagong volume, at i-restore ang dump doon.

Pag-upgrade sa 0.9.0

Ang unang pag-start ng bersyon 0.9.0 (o ng image na binuo mula sa 17 Oktubre 2026 pataas) ay nagdudulot ng ilang one-time na pagbabago sa data. Bawat isa ay nagaganap nang isang beses lamang, at naka-record sa database. Ipinapadala nito ang mga naka-remaining sa lumang default patungo sa bagong isa, at hindi binabago ang mga napili ng administrator. Subukan ang mga ito sa log.

Kung ang Antimatter ay para sa isang kompanya o organisasyon, itakda ang Uri ng mga bagong community sa Workspace bago ka mag-upgrade: AM_TEAMSETTINGS_DEFAULTCOMMUNITYKIND=workplace. Ang upgrade ay nagbibigay sa bawat community ng uri na nakatakda sa setting na ito sa sandaling iyon, at ang mga tawag ay naka-off sa default sa mga channel ng mga community na may uri na Guild. Tingnan ang Guild o workspace.
AnoAng pagbabago
Mga uri ng communityAng bawat community ay may uri, Guild o Workspace: ang halaga ng Uri ng mga bagong community (TeamSettings.DefaultCommunityKind) sa unang pag-simula. Ang uri na nakatakda na ay nananatili. Maaaring baguhin ng mga admin ng community ang uri ng kanilang community pagkatapos, sa Mga setting ng team › General.
Sino ang nag-a-archive ng mga channelAng mga miyembro ng channel ay hindi na nag-a-archive ng mga channel na kasapi nila: ang mga admin ng community ang gumagawa nito. Sa isang workspace, ang mga admin ng channel (ang gumawa nito, at ang mga ginawa nilang admin) ay maaari ring i-archive ito. Binabago nito ang mga papel ng scheme ng sistema; ang mga scheme ng permiso na ginawa ng isang system administrator para sa ilang community ay nananatili nang hindi binabago.
Ang role ng Moderators ng mga layout presetAng role ng Moderators na natanggap ng mga community mula sa isang layout preset ay nakakatanggap ng Mag-alis ng mga tao, na kailangan para sa pag-terminate at pag-alis ng mga miyembro. Ang mga role na eksaktong nanatili sa anyo ng preset lamang ang nagbabago; ang mga role na na-edit ng isang tao ay hindi naaapektuhan.
Mga role na may AdministratorAng role ng community na naka-on ang switch ng Administrator ay ngayon ay may kapangyarihan sa lahat ng maaaring gawin ng mga admin ng community, ayon sa sinasabi ng switch, hindi lamang sa mga setting ng community.
Ang limitasyon ng miyembroAng Pinakamataas na Miyembro Bawat Community (TeamSettings.MaxUsersPerTeam) ay nagbago mula sa 50, ang dating default, tungo sa 0 (walang limitasyon). Ang anumang ibang halaga ay nananatili, pati na rin ang limitasyon na itinakda gamit ang AM_TEAMSETTINGS_MAXUSERSPERTEAM.
Mga model connectionNakakatanggap ang mga system administrator ng pamamahala ng mga model connections, at ang mga admin ng community (at mga role na may Administrator) ay ng kanilang sariling community. Ang mga AI services ng Agents app ay naging server-wide model connections, tingnan sa ibaba.
Ang Town Square ay naging GeneralAng default channel ng bawat community ay binago ang pangalan mula sa town-square (Town Square) tungo sa general (General). Nanatili ang ID, mga miyembro, mga mensahe, at mga setting nito, pati na rin ang display name na pili ng mga admin. Ang mga lumang link at lookup gamit ang town-square ay patuloy pa rin na dahan dito. Ang isang community na mayroon nang channel na pangalan ay general, kahit archived, ay nananatili ang town-square nito bilang default channel, pati na rin ang community na archived ang town-square: binanggit ng log ang mga ito, at maaaring palitan ng mga admin ang pangalan ng mga channel.
Mga PaboritoAng sidebar category ng Favorites ng lahat ay binago ang pangalan tungo sa Favourites, ayon sa kasalukuyang interface. Ang mga category na nilikha ng mga tao gamit ang pangalang iyon ay hindi naaapektuhan.

Mga service ng Agents app

Kokopyahin ng upgrade ang bawat serbisyo ng AI mula sa Agents app upang maging isang server-wide na model connection, na ibinahagi sa bawat community at magagamit ng lahat maliban sa mga bisita (i-on ang Kasama ang mga Bisita upang payagan sila). Ang mga key ay na-encrypt sa proseso, kaya kailangan ng server ng kanyang AI encryption key: sa isang cluster na ang mga file ay nasa S3, itakda muna ang AM_AI_ENCRYPTION_KEY, o kaya ay hihintayin ng kopya ang susunod na pag-simula. Pagkatapos, tingnan ang System Console › AI › Mga model connection:

  • Bawat connection ay panatayin ang ID ng kanyang service, kaya ang mga agent ng app at ang auto-translation na nakabuo sa isang Agents service ay matatagpuan pa rin ito.
  • Ang mga OpenAI, OpenAI-compatible, Anthropic, Mistral, Cohere at Gemini services ay maging connection sa kanilang OpenAI-compatible (o Anthropic) endpoint. Ang isang Azure service ay maging connection sa OpenAI-compatible endpoint ng resource: subukan ito.
  • Ang mga AWS Bedrock, Google Vertex AI at Cohere North services, at ang mga hindi kilalang uri, ay tatak na Needs attention, kasama ang dahilan. Hindi kopyahin ang kanilang cloud credentials: ipuntahan ito sa OpenAI-compatible endpoint ng provider o sa isang gateway tulad ng LiteLLM, tapos i-save.
  • Ang embedding service ay maging Embeddings model ng connection na may parehong address at key, o sariling connection. Ang transcription service ay makakatanggap ng whisper-1 model.
  • Kapag walang connection pa ang rewrite at recaps, makakatanggap ito ng service at model ng default agent ng app.

Ang mga agent ng Agents app

Pagkatapos ng mga serbisyo, ginagawa ng upgrade ang bawat agent ng Agents app (ngayon ay ang AI chat app) upang maging isang server-wide na agent, sa parehong account: ang koneksyon nito (ang nakopya mula sa kanyang serbisyo), modelo, mga tagubilin, pag-iisip, mga tool turn, at kung sino ang maaaring gamitin ito. Ang server ang sasagot para sa mga agent na ito. Kung ang app ay naglimita sa isang agent sa paraang hindi ipinapakita ng mga agent ng server (ang mga channel kung saan ito sumasagot, mga block list, access na batay sa attribute), ang agent ay pinapalitan upang limitahan sa mga miyembro ng mga channel na iyon, o sa walang sinuman, at minamarkahan bilang nangangailangan ng pansin, tulad ng isang agent na ang serbisyo ay hindi naging koneksyon. Tingnan ang mga ito sa System Console › AI › Mga model connection. Ang ibang mga setting ng app ay nananatili nang hindi binabago.

Iba pang pagbabago sa mga default

  • Mga Tawag: ang Test mode ay off at ang Enable video ay on sa default. Ang pagpipilian na na-save sa configuration ay mananatili. Ang mga tawag ay sumusunod din sa uri ng community (tingnan ang Mga Tawag at voice).
  • Ang paglalagay ng mga mensahe sa itaas ay para sa mga admin ng channel, mga admin at moderator ng community (may Pamahalaan ang mga mensahe); ang mga miyembro ng isang direct o group message ay maa pa ring gawin ito.
  • Ang mga archived na channel ay maaaring tumanggap ng bagong miyembro, na babasa ng kanilang history. Walang nagpo-post, nagre-reaksyon, o nagbabago ng anumang bagay sa kanila.

Paglipat mula sa Mattermost

Ginagamit ng Antimatter ang database schema ng Mattermost at idinadagdag ang sarili nitong mga table, kaya maaari nitong kunin ang PostgreSQL database at mga file ng isang server ng Mattermost. Subukan muna ito sa isang kopya:

  1. I-backup ang database ng Mattermost, ang file storage nito (data/ o S3 bucket) at ang config.json, tapos itigil ang Mattermost.
  2. I-restore ang database sa PostgreSQL ng Antimatter, o ipuntahan ang Antimatter sa isang kopya nito (AM_SQLSETTINGS_DATASOURCE).
  3. Kopyahin ang mga file sa storage ng Antimatter, panatilihin ang kanilang mga path: sa antimatter bucket gamit ang S3 tool, o sa data/ gamit ang release archive.
  4. Gumamit ulit ng iyong mga setting: kopyahin ang config.json, o ilipat ito sa database gamit ang amctl --local config migrate (tingnan ang Configuration). Patuloy pang gumagana ang iyong mga MM_ environment variables; palitan ang pangalan nila sa AM_ kapag magkakaroon ng oportunidad.
  5. Simulan ang Antimatter at subaybayan ang log habang ina-upgrade nito ang database. Pagkatapos, tingnan ang System Console › Mga Plugin › Pamamahala ng Plugin. I-install ng Antimatter ang sarili nitong build ng Calls, AI chat, at mga integration kapag mas bago ang mga ito kaysa sa naka-install na bersyon, gayundin ang Playbooks at Kanban (Boards) kung ang server ng Mattermost ay may na-install na alinman sa mga ito (wala nang kasama sa bagong server ang alinman sa mga ito: tingnan ang Mga bundled app). Kung ang Mattermost ay may mas bagong bersyon ng alinman sa mga ito, alisin ang app na iyon at i-restart ang Antimatter, upang ma-install ang sarili nitong build.
  6. I-configure ulit ang mga push notification gamit ang sarili mong push proxy: hindi nagpapadala ng mga notisikasyon ang Antimatter sa mga push service ng Mattermost, test o hosted man, dahil sa mga app lang ng Mattermost sila nagdadala. Hangga't hindi mo palalitan ang Push Notification Server, hindi nagpapadala ng push notification ang server (tingnan ang Push notifications).

Hindi nakikipag-ugnayan ang Antimatter sa anumang serbisyo na pinapatakbo ng Mattermost, Inc. (tingnan ang Connections to outside services), kahit pa nakalagay pa rin ang isa sa iyong configuration:

  • naka-keep sa mga setting ang push notification server ng Mattermost ngunit hindi gamitin;
  • pinapalitan ng walang laman ang mga address ng Mattermost para sa app marketplace (Marketplace URL) at para sa mga product notice;
  • ang mga app download links na default ng Mattermost (Antimatter Apps Download Page Link, Link para sa Download ng Android App at Link para i-download ang iOS App) ay palitan ng mga download page ng mga app ng Antimatter sa GitHub; ang mga link na iyong itinakda ay mananatili;
  • gamit ng Calls app ang public STUN server ng Cloudflare sa halip ng ng Mattermost, nang hindi binabago ang na-save na setting (tingnan ang Calls);
  • nawala ang security update check at crash reporting, pati na rin ang mga setting nito sa System Console (Enable Security Alerts, Enable Diagnostics and Error Reporting) at ang pahina ng Mga Paalala.

Ang local mode socket ay ngayon ay /var/tmp/antimatter_local.socket; subukan din ng amctl ang lumang /var/tmp/mattermost_local.socket. Suportado lang ng Mattermost ang PostgreSQL sa mga bagong bersyon nito, at gayundin sa Antimatter: ilipat muna ang MySQL database sa PostgreSQL. Ang pagbabalik sa Mattermost pagkatapos ma-upgrade ng Antimatter ang database ay nangangahulugang pag-restore ng iyong backup ng Mattermost.

Pag-export at pag-import ng data

Ang bulk export format ay nagpapalipat ng data sa pagitan ng mga server: ang buong server, ilang community, o ilang channel, kasama ang mga attachment, profile picture, at custom emoji kung gusto mo.

# 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

Panoorin ang mga job gamit ang amctl export job list at amctl import job list. Para sa export ng community o channel, kinakailangan ang --imported-users: active kung magpapaalipok ang mga tao sa server na ito, inactive kung i-import sa server na mayroon na silang account, upang manatiling off ang mga account na nabuo mula sa hindi tiyak na pagtugma hangga't ma-check ng administrator. Ang --destination-team-name ay nag-i-import sa naumit na community. Ang mga export at import ay nananatili sa storage ng server (ExportSettings.Directory, ImportSettings.Directory) para sa 30 araw bilang default.

Sa sarili ng server, ang antimatter export bulk at antimatter import bulk --apply ay nagkakatulad mula sa mga file, nang walang API.

Ang linya ng isang channel sa export ay nagdadala ng uri at mga setting nito (am_type, am_mode, am_root_posts at, para sa mga forum, am_forum_view); ang isang linya na walang mga ito ay ii-import bilang isang simpleng text Chat channel. Ang linya ng isang root post sa isang forum channel ay nangangailangan ng props.am_thread_title, ang pamagat ng topic nito; kung walang ito, mabigo ang pag-import sa linyang iyon.