Резервни копия и ъпгрейди

Какво да резервирате, как да го възстановите на нов хост, как да ъпгрейдирате и как да преместите сървър Mattermost или отделна общност към Antimatter.

Какво да резервирате

КаквоС compose файла на сайтаС архив на версияС .deb или .rpm пакет
Базата данни: съобщения, потребители, общности, канали и, с compose файла на сайта, конфигурациятатом antimatter_postgres, чрез pg_dumpвашата база данни PostgreSQLвашата база данни PostgreSQL
Качени файлове, изображения и инсталирани приложениятом antimatter_files (S3 хранилището)FileSettings.Directory, по подразбиране ./data//var/lib/antimatter
Конфигурационният файл(в базата данни)config/config.json/etc/antimatter/config/config.json
GIF-ове и стикеритом antimatter_gifsкаталогът с данни на GIF услугата/var/lib/gifs-server
Тайни.env (и compose.override.yaml)вашият файл с променливи на средата/etc/antimatter/antimatter.env, /etc/gifs-server
Ключът за шифроване на AI, който шифрова ключовете на връзките с моделиAM_AI_ENCRYPTION_KEY във файла .env (препоръчително) или файлът ai-encryption.key в тома antimatter_dataAM_AI_ENCRYPTION_KEY, или data/ai-encryption.keyAM_AI_ENCRYPTION_KEY в antimatter.env, или /var/lib/antimatter/data/ai-encryption.key

Без ключа за шифроване на AI, възстановен сървър не може да прочете API ключовете на връзките си с модели и всеки от тях трябва да се въведе отново. Пазете копие на ключа отделно от резервните копия на базата данни, така че едно откраднато копие да не съдържа и двете. Вижте Ключът за шифроване.

Базата данни и файловете принадлежат заедно: резервирайте ги едновременно и пазете копия извън сървъра. Имената на томове започват с името на compose проекта, antimatter (списъкът им се вижда с docker volume ls).

Резервиране

От каталога на compose.yaml. Спирането на Antimatter предварително дава напълно последователно копие; резервно копие, направено докато работи, обикновено е наред, но файловете, качени по време на резервирането, може да липсват от него.

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"

Ако не сте задали AM_AI_ENCRYPTION_KEY, ключовият файл на сървъра се намира в тома data, който горният цикъл записва заедно с файловете. По-добре поставете съдържанието му във файла .env, както е описано в Ключ за криптиране, и пазете копие от него отделно от резервните копия на базата данни.

Изпълнявайте го от cron за ежедневни резервни копия и копирайте каталога backups/ на друга машина. Пазете копията на .env толкова сигурно, колкото и самия сървър: те съдържат паролите му.

За да копирате качените файлове обект по обект (напр. към друго S3 хранилище), използвайте AWS командния инструмент на услугата bucket:

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

С архив на версия, резервирайте базата данни с pg_dump -Fc, а директорите data/ и config/ с обичайните си инструменти (data/ съдържа файла с AI ключа). С пакетите, резервирайте базата данни по същия начин, както и /etc/antimatter, /var/lib/antimatter, /etc/gifs-server и /var/lib/gifs-server.

Възстановяване на нов хост

Поставете compose.yaml, запазения .env и резервните копия в нов каталог, след което:

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

Използвайте същия .env: хранилището и базата данни трябва да запазят паролите, които са имали, а връзките с модели имат нужда от същия ключ за шифроване на AI. Ако новият хост има друг адрес, обновете SITE_URL (и DOMAIN).

Тествайте резервните си копия, като ги възстановявате от време на време на друга машина.

Ъпгрейд

Файловете на Compose, изтеглени преди 17 октомври 2026 г., не съдържат том data: файлът с ключа за AI се намираше в контейнера. Преди да използвате новия compose.yaml и ако във файла .env няма AM_AI_ENCRYPTION_KEY, запазете ключа, създаден от сървъра: echo "AM_AI_ENCRYPTION_KEY=$(docker compose exec -T antimatter cat /antimatter/data/ai-encryption.key)" >> .env. Ако командата не намери файл, нито една връзка с модел все още не е запазила ключ.
  1. Направете резервно копие.
  2. Променете тага на образа в .env (ANTIMATTER_IMAGE), ако го фиксирате, както се препоръчва.
  3. Изтеглете и рестартирайте:
    docker compose pull
    docker compose up -d
    docker compose logs -f antimatter

При стартиране сървърът надгражда схемата на базата данни (следете процеса в лога; голям сървър може да отнеме няколко минути) и инсталира по-новите версии на приложенията, включени в образа. С архив на версия: спрете сървъра, заменете всичко освен config/, data/, logs/, plugins/ и client/plugins/ със съдържанието на новия архив и го стартирайте отново. С .deb или .rpm пакет, инсталирайте новия пакет, както обяснява Надграждане на пакет.

Надграждането е само напред. Когато по-нов сървър надгради базата данни, по-стара версия вече не може да я използва: за връщане възстановете резервното копие, направено преди надграждането. Същото важи и при преместване от antimatter-next обратно към antimatter.

Версии

Сървърът на Antimatter докладва версията на линията Mattermost, върху която е основан (в момента 12.0.0). Изданията в GitHub, с архивите и пакетите им, имат собствени номера на версии, от серията 0.9.0 по време на бета: antimatter version го показва като Номер на компилация. Образите се прекомпилират от клоните main: antimatter-next всяка нощ (тагове nightly-<YYYYMMDD>), и и двата образа при всяка промяна (тагове sha-<commit>). Закачете един от тези тагове, надграждайте съзнателно и записвайте предишния таг, за да знаете с кой резервен копие отговаря.

Основни версии на PostgreSQL

Композ файлът използва postgres:17-alpine. Antimatter изисква PostgreSQL 15 или по-нова версия. Нова основна версия на PostgreSQL не може да прочете директорията с данни на предишната: за преместване към нея извличайте (dump) базата данни, стартирайте новата версия върху нов том и възстановявайте извлечените данни в нея.

Надграждане до 0.9.0

Първият старт на версия 0.9.0 (или на образ, компилиран от 17 октомври 2026 г. нататък) извършва няколко еднократни промени в данните. Всяка се изпълнява веднъж и се записва в базата данни. Те донасят онова, което е останало със старото подразбиране, до новото, и остават нетронати онова, което администраторът е избрал. Следете ги в журнала.

Ако Antimatter е предназначен за фирма или организация, задайте Вид на новите общности на Работно пространство преди да надградите: AM_TEAMSETTINGS_DEFAULTCOMMUNITYKIND=workplace. Надграждането придава на всяка общност вида, който тази настройка има в момента на надграждането, и обажданията са изключени по подразбиране в каналите на общностите от вида Гилдия. Вижте Гилдия или работно пространство.
КаквоПромяната
Видове екипиВсяка общност получава вид — Гилдия или Работно пространство: стойността на Вид на новите общности (TeamSettings.DefaultCommunityKind) при първото стартиране. Вече зададен вид се запазва. Администраторите на общност могат да променят вида на своята общност по-късно в Настройки на екипа › Общи.
Кой архивира каналитеЧленовете на канал вече не архивират каналите, в които участват: това правят администраторите на общността. В работно пространство администраторите на канала (този, който го е създал, и тези, които той е направил администратори) също го архивират. Това променя ролите на системната схема; схемите за разрешения, създадени от системен администратор за някои общности, остават непроменени.
Ролята Модератори от шаблоните на подредбатаРолята Модератори, която екипите са получили от шаблон на подредба, получава Премахване на хора, което е необходимо за изключване и премахване на хора. Променят се само роли, които са точно както шаблонът ги е направил; роля, която някой е редактирал, остава нетроната.
Роли с АдминистраторРолята на общност, при която е активиран превключвателят Администратор, сега притежава всички правомощия, с които разполагат администраторите на общността, както подсказва името, а не само настройките на общността.
Ограничение за брой членовеМакс. брой членове на общност (TeamSettings.MaxUsersPerTeam) се променя от 50, старата стойност по подразбиране, на 0 (без ограничение). Всички други стойности се запазват, както и ограниченията, зададени чрез AM_TEAMSETTINGS_MAXUSERSPERTEAM.
Връзки с моделиСистемните администратори получават управление на връзките с модели, а администраторите на общностите (и ролята с Администратор) — на връзките на собствената им общност. Услугите за изкуствен интелект на приложението Agents се превръщат във връзки с модели на ниво сървър, виж по-долу: връзки с модели.
Town Square става GeneralКаналът по подразбиране във всяка общност се преименува от town-square (Town Square) на general (General). Той запазва своя ID, членовете, съобщенията и настройките, както и името за показване, избрано от администраторите. Старите връзки и търсенията по town-square продължават да водят към него. Общност, която вече има канал с име general, дори архивиран, запазва town-square като канал по подразбиране, и същото важи за общност, чийто town-square е архивиран: лога ги посочват, а администраторите могат да преименуват каналите.
ЛюбимиКатегорията Favorites в страничната лента на всеки потребител се преименува на Favourites, тъй като интерфейсът вече използва тази форма. Категориите, създадени от потребителите с това име, остават непроменени.

Услугите на приложението Agents

Надграждането копира всяка AI услуга от приложението Agents в връзка с модел за целия сървър, споделена с всички общности и използвана от всички, с изключение на гостите (включете И гости, за да им разрешите достъп). Ключовете се криптират при копирането, затова сървърът се нуждае от своя ключ за криптиране на AI: в клъстер, чиито файлове са в S3, задайте AM_AI_ENCRYPTION_KEY първо, иначе копирането изчаква следващото стартиране. След това проверете Системна конзола › Изкуствен интелект › Връзки с модели:

  • Всяка връзка запазва ID-то на съответната услуга, така че агентите на приложението и автоматичният превод, настроен към услуга на Agents, продължават да я намират.
  • Услугите OpenAI, съвместими с OpenAI, Anthropic, Mistral, Cohere и Gemini се превръщат във връзки към съответните им OpenAI-съвместими (или Anthropic) endpoints. Услугата Azure се превръща във връзка към OpenAI-съвместимия endpoint на ресурса: тествайте я.
  • Услугите AWS Bedrock, Google Vertex AI и Cohere North, както и неизвестните типове, са отбелязани като Изисква внимание, с посочена причина. Облачните им удостоверения не се копират: насочете ги към OpenAI-съвместимия крайен пункт на доставчика или към гейтвей като LiteLLM, след което запазете промените.
  • Услугата за векторизация става моделът Embeddings на връзката със същия адрес и ключ, или на самостоятелна връзка. Услугата за транскрипция получава модел whisper-1.
  • Ако за преразказването и обобщенията все още няма връзка, те използват услугата и модела на агент по подразбиране на приложението.

Агентите на приложението „Агенти“

След услугите надграждането превръща всеки агент на приложението „Агенти“ (сега приложението за чат с изкуствен интелект) в агент за целия сървър, на същия акаунт: неговата връзка (копирана от услугата), модел, инструкции, разсъждения, обръщения на инструменти и кой може да го използва. След това сървърът отговаря от името на тези агенти. Когато приложението е ограничило агента по начин, който агентите на сървъра не изразяват (каналите, в които е отговарял, списъци с блокирани, достъп въз основа на атрибути), агентът се ограничава до членовете на тези канали или до никого и се маркира като изискващ внимание, както и агент, чиято услуга не се е превърнала във връзка. Проверете ги в Системна конзола › Изкуствен интелект › Връзки с модели. Другите настройки на приложението остават както преди.

Други промени в стойностите по подразбиране

  • Обаждания: Тестов режим е изключен, а Включване на видео е включено по подразбиране. Избор, запазен в конфигурацията, се запазва. Обажданията също следват вида на общността (вижте Обаждания и глас).
  • Поставянето на съобщения на върха е достъпно за администратори на канала, администратори и модератори на общността (с Управление на съобщения); членовете на директно или групово съобщение също могат да го правят.
  • Архивирани канали могат да приемат нови членове, които четат историята им. Никой не публикува, не реагира и не променя нищо в тях.

Преместване от Mattermost

Antimatter използва схемата на базата данни на Mattermost и добавя собствени таблици, така че може да поеме базата данни и файловете на сървър на Mattermost. Първо опитайте върху копие:

  1. Направете резервно копие на базата данни на Mattermost, хранилището му с файлове (data/ или S3 кош) и config.json, след което спрете Mattermost.
  2. Възстановете базата данни в PostgreSQL на Antimatter или насочете Antimatter към копие на нея (AM_SQLSETTINGS_DATASOURCE).
  3. Копирайте файловете в хранилището на Antimatter, запазвайки пътя им: в коша antimatter с S3 инструмент, или в data/ с архив за версия.
  4. Възползвайте се от настройките си: копирайте config.json или го преместете в базата данни с amctl --local config migrate (вижте Настройки). Променливите на средата MM_ продължават да работят; преименувайте ги на AM_, когато е удобно.
  5. Стартирайте Antimatter и следете журнала, докато той надгражда базата данни. След това проверете Системна конзола › Приставки › Управление на приставките. Antimatter инсталира собствените си версии на „Обаждания“, „Чат с изкуствен интелект“ и интеграциите, когато те са по-нови от инсталираната версия, както и на „Наръчници“ и „Kanban“ (Дъски), ако сървърът на Mattermost вече е имал някое от тях инсталирано (нито едно не е включено в пакет на нов сървър: вижте Включени приложения). Ако Mattermost е имал по-нова версия на някое от тях, премахнете това приложение и рестартирайте Antimatter, за да се инсталира неговата собствена версия.
  6. Настройте изскачащите известия отново, с ваш собствен прокси за известия: Antimatter никога не изпраща известия до сървърите за известия на Mattermost, тестови или хостирани, тъй като те доставят известия само до собствените приложения на Mattermost. Докато не промените Сървър за изскачащи известия, сървърът не изпраща изскачащи известия (вижте Изскачащи известия).

Antimatter не се свързва с нито една услуга, управлявана от Mattermost, Inc. (вижте Свързване с външни услуги), дори ако конфигурацията ви все още сочи към такава:

  • пуш сървърът на Mattermost остава в настройките, но никога не се използва;
  • Адресите на Mattermost за пазара на приложения (URL адрес на Marketplace) и за продуктови известия се изчистят;
  • връзките за сваляне на приложения, които са били стойности по подразбиране на Mattermost (Връзка за страница за сваляне на приложения Antimatter, Връзка за сваляне на приложение за Android и Връзка за изтегляне на приложение за iOS), се заменят със страниците за сваляне на приложенията на Antimatter в GitHub; връзки, които сте задали сами, се запазват;
  • приложението Calls използва публичния STUN сървър на Cloudflare вместо този на Mattermost, без да променя запазената настройка (вижте Calls);
  • проверката за сигурност и докладването на сривове са премахнати, както и съответните им настройки в Системната конзола (Активиране на предупреждения за сигурност, Активиране на диагностика и докладване на грешки) и страницата Бележки.

Сокетът за локален режим сега е /var/tmp/antimatter_local.socket; amctl също опитва стария /var/tmp/mattermost_local.socket. Mattermost поддържа само PostgreSQL в последните си версии, и Antimatter също: първо преместете MySQL базата данни в PostgreSQL. Връщане към Mattermost след надграждане на базата данни от Antimatter означава възстановяване на резервното копие на Mattermost.

Експортиране и импортиране на данни

Форматът за масово експортиране прехвърля данни между сървъри: целия сървър, някои общности или някои канали, с прикачени файлове, профилни снимки и персонализирани емоджи, ако ги желаете.

# 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

Следете задачите с amctl export job list и amctl import job list. При експортиране на общност или канал --imported-users е задължителен: active, когато хората се преместват на този сървър, и inactive, при импортиране в сървър, където вече имат акаунти, така че акаунтите, създадени от несигурни съвпадения, остават неактивни, докато администраторът не ги провери. --destination-team-name импортира в съществуваща общност. Експортите и импортите се запазват в хранилището на сървъра (ExportSettings.Directory, ImportSettings.Directory) за 30 дни по подразбиране.

На самия сървър antimatter export bulk и antimatter import bulk --apply извършват същото от файлове, без да използват API.

Редът на канала в експорта носи неговия тип и настройки (am_type, am_mode, am_root_posts и за форумите am_forum_view); ред без тях се импортира като обикновен текстов чат канал. Редът на основна публикация във форумен канал изисква props.am_thread_title, заглавието на неговата тема; без такова, импортирането на този ред се проваля.