Yedeklemeler ve yükseltmeler

Nelerin yedeklenmesi gerektiği, bunların yeni bir ana makinede nasıl geri yükleneceği, nasıl yükseltileceği ve bir Mattermost sunucusunun veya tek bir topluluğun Antimatter'e nasıl taşınacağı.

Nelerin yedeklenmesi gerektiği

NesneSitein compose dosyasıylaBir sürüm arşiviyle.deb veya .rpm paketiyle
Veritabanı: iletiler, kullanıcılar, topluluklar, kanallar ve sitein compose dosyasıyla yapılandırmaantimatter_postgres hacmi, pg_dump aracılığıylaPostgreSQL veritabanınızPostgreSQL veritabanınız
Yüklenen dosyalar, görüntüler ve kurulan uygulamalarantimatter_files hacmi (S3 depolaması)FileSettings.Directory, varsayılan olarak ./data//var/lib/antimatter
Yapılandırma dosyası(veritabanında)config/config.json/etc/antimatter/config/config.json
GIF'ler ve çıkartmalarantimatter_gifs hacmiGIF hizmetinin veri dizini/var/lib/gifs-server
Gizli bilgiler.env (ve compose.override.yaml)Ortam dosyanız/etc/antimatter/antimatter.env, /etc/gifs-server
Model bağlantılarının anahtarlarını şifreleyen yapay zekâ şifreleme anahtarı.env içindeki AM_AI_ENCRYPTION_KEY (önerilen) veya antimatter_data hacmindeki ai-encryption.key dosyasıAM_AI_ENCRYPTION_KEY veya data/ai-encryption.keyantimatter.env içindeki AM_AI_ENCRYPTION_KEY veya /var/lib/antimatter/data/ai-encryption.key

Yapay zekâ şifreleme anahtarı olmadan, geri yüklenen sunucu model bağlantılarının API anahtarlarını okuyamaz ve her birini yeniden girmek gerekir. Anahtarın bir kopyasını veritabanı yedeklerinden ayrı bir yerde saklayın; böylece çalınan tek bir yedek hem veritabanını hem de anahtarı içermez. Şifreleme anahtarı bölümüne bakın.

Veritabanı ve dosyalar birlikte aittir: Bunları aynı anda yedekleyin ve kopyalarını sunucunun dışında saklayın. Hacim adları compose proje adıyla, antimatter ile başlar (docker volume ls bunları listeler).

Yedekleme

compose.yaml dizininden çalıştırın. Önce Antimatter'i durdurmak tamamen tutarlı bir kopya sağlar; çalışırken alınan bir yedek genellikle yeterlidir, ancak yedekleme sırasında yüklenen dosyalar yedekte eksik kalabilir.

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 tanımlamadıysanız, sunucunun anahtar dosyası data hacminde bulunur ve yukarıdaki döngü bu dosyayı diğer dosyalarla birlikte kaydeder. Bunun yerine, Şifreleme anahtarı bölümünde açıklandığı gibi içeriğini .env dosyasına yerleştirin ve bir kopyasını veritabanı yedeklerinden ayrı bir yerde saklayın.

Günlük yedeklemeler için cron'dan çalıştırın ve backups/ dizinini başka bir makineye kopyalayın. .env kopyalarını sunucu kadar güvenli tutun: şifreleri içerirler.

Yüklenen dosyaları nesne nesne kopyalamak için (örneğin başka bir S3 depolamasına), bucket hizmetinin AWS komut satırı aracını kullanın:

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

Bir sürüm arşiviyle çalışıyorsanız, veritabanını pg_dump -Fc ile, data/ ve config/ dizinlerini ise alışıldık araçlarınızla yedekleyin (data/ dizini yapay zekâ anahtar dosyasını içerir). Paketlerle çalışıyorsanız, veritabanını aynı şekilde yedekleyin ve /etc/antimatter, /var/lib/antimatter, /etc/gifs-server ile /var/lib/gifs-server dizinlerini de yedekleyin.

Yeni bir ana makinede geri yükleme

compose.yaml, kaydedilen .env ve yedekleri yeni bir dizine koyun, ardından:

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

Aynı .env dosyasını kullanın: depolama ve veritabanı, daha önce sahip oldukları şifreleri korumalı ve model bağlantıları aynı yapay zekâ şifreleme anahtarına ihtiyaç duymalıdır. Yeni ana bilgisayarın adresi farklıysa, SITE_URL (ve DOMAIN) değerini güncelleyin.

Yedeklerinizi zaman zaman başka bir makinede geri yükleyerek test edin.

Yükseltme

17 Ekim 2026'dan önce indirilen Compose dosyalarında data hacmi yoktu: yapay zekâ anahtar dosyası konteynerin içindeydi. Yeni compose.yaml dosyasını kullanmadan önce ve .env dosyasında AM_AI_ENCRYPTION_KEY yoksa, sunucunun oluşturduğu anahtarı kaydedin: echo "AM_AI_ENCRYPTION_KEY=$(docker compose exec -T antimatter cat /antimatter/data/ai-encryption.key)" >> .env. Komut dosya bulamazsa, henüz hiçbir model bağlantısı anahtar kaydetmemiş demektir.
  1. Bir yedek alın.
  2. Önerildiği gibi bir etiket sabitlemişseniz, .env içindeki görüntü etiketini (ANTIMATTER_IMAGE) değiştirin.
  3. Çek ve yeniden başlat:
    docker compose pull
    docker compose up -d
    docker compose logs -f antimatter

Başlangıçta sunucu veritabanı şemasını yükseltir (bunu günlükte izleyebilirsiniz; büyük bir sunucuda birkaç dakika sürebilir) ve imajdaki yerleşik uygulamaların yeni sürümlerini yükler. Bir sürüm arşivi kullanıyorsanız: sunucuyu durdurun, config/, data/, logs/, plugins/ ve client/plugins/ hariç her şeyi yeni arşivin içeriğiyle değiştirin ve sunucuyu yeniden başlatın. .deb veya .rpm paketi kullanıyorsanız, yeni paketi Bir paketi yükseltme bölümünde anlatıldığı gibi yükleyin.

Yükseltmeler yalnızca ileriye doğru yapılır. Daha yeni bir sunucu veritabanını yükselttikten sonra, eski bir sürüm bu veritabanını kullanamaz: geri dönmek için yükseltmeden önce alınan yedeği geri yükleyin. Aynı kural, antimatter-next sürümünden antimatter sürümüne geri dönmek için de geçerlidir.

Sürümler

Antimatter sunucusu, dayandığı Mattermost serisinin sürümünü bildirir (şu an 12.0.0). GitHub'taki sürümler, arşivleri ve paketleriyle kendi sürüm numaralarına sahiptir; beta sırasında 0.9.0 serisindedir: antimatter version bunu Yapım numarası olarak gösterir. İmajlar main dallarından yeniden oluşturulur: her gece antimatter-next (etiketler nightly-<YYYYMMDD>) ve her değişiklikte her iki imaj da (etiketler sha-<commit>). Bu etiketlerden birini sabitleyin, bilinçli olarak yükseltin ve hangi yedeğin hangi sürümle eşleştiğini bilmek için önceki etiketi not edin.

PostgreSQL ana sürümleri

Compose dosyası postgres:17-alpine kullanır. Antimatter, PostgreSQL 15 veya daha yeni bir sürüm gerektirir. PostgreSQL'ün yeni bir ana sürümü, önceki sürümün veri dizinini okuyamaz: yeni bir sürüme geçmek için veritabanını dışa aktarın (dump), yeni sürümü yeni bir hacimde (volume) başlatın ve dışa aktardığı veriyi (dump) bu yeni veritabanına geri yükleyin.

0.9.0 sürümüne yükseltme

0.9.0 sürümünün (veya 17 Ekim 2026'dan itibaren oluşturulan bir imajın) ilk başlatılması, verilerde birkaç tek seferlik değişiklik yapar. Her biri bir kez çalışır ve veritabanında kaydedilir. Bunlar, eski bir varsayılanda bırakılan ayarları yeni varsayılanlara taşır; bir yöneticinin seçtiği ayarlara dokunmaz. Bunları günlükte izleyin.

Antimatter bir şirket veya kuruluş için kullanılıyorsa, yükseltmeden önce Yeni toplulukların türü ayarını Çalışma alanı olarak belirleyin: AM_TEAMSETTINGS_DEFAULTCOMMUNITYKIND=workplace. Yükseltme, her topluluğa bu ayarın o anki türünü verir ve Topluluk türündeki toplulukların kanallarında aramalar varsayılan olarak kapalıdır. Çalışma alanı veya topluluk bölümüne bakın.
NesneDeğişiklik
Topluluk türleriHer topluluğa bir tür atanır: Topluluk veya Çalışma alanı; bu, ilk başlatma anındaki Yeni toplulukların türü (TeamSettings.DefaultCommunityKind) değeridir. Zaten belirlenmiş bir tür korunur. Topluluk yöneticileri, topluluklarının türünü daha sonra Takım ayarları › Kanallar › Topluluk türü bölümünden değiştirebilir.
Kanalları kim arşivlerKanal üyeleri artık içinde bulundukları kanalları arşivlemez; bunu topluluk yöneticileri yapar. Bir iş yerinde, kanalın yöneticileri (kanalı oluşturan kişi ve onun yönetici olarak atadığı kişiler) de kanalı arşivler. Bu değişiklik, sistem şemasının rollerini değiştirir; bir sistem yöneticisinin bazı topluluklar için oluşturduğu izin şemaları olduğu gibi kalır.
Düzenleme ön ayarlarının Moderators rolüToplulukların bir düzenleme ön ayarından aldığı Moderators rolüne, zaman aşımına uğratma ve kaldırma işlemleri için gereken Kişileri kaldır izni eklenir. Sadece ön ayarın oluşturduğu haliyle kalan roller değişir; birinin düzenlediği rol olduğu gibi bırakılır.
Yönetici içeren rollerYönetici anahtarı açık olan bir topluluk rolü artık, anahtarın belirttiği gibi, topluluk yöneticilerinin yapabildiği her şeyi yapabilir; yalnızca topluluğun ayarlarını değil.
Üye sınırıTopluluk Başına En Fazla Üye (TeamSettings.MaxUsersPerTeam) değeri, eski varsayılan olan 50'den 0'a (sınırsız) düşer. Diğer tüm değerler korunur; AM_TEAMSETTINGS_MAXUSERSPERTEAM ile belirlenen sınırlar da olduğu gibi kalır.
Model bağlantılarıSistem yöneticileri, model bağlantılarının yönetimini alır; topluluk yöneticileri (ve Yönetici içeren roller) ise kendi topluluklarının model bağlantılarını yönetir. Agents uygulamasının yapay zekâ hizmetleri, sunucu genelinde model bağlantıları hâline gelir; aşağıya bakın.
Town Square, General adını alırHer topluluğun varsayılan kanalı, town-square (Town Square) adından general (General) adına değiştirilir. Kanalı, kimliği, üyeleri, iletileri, ayarları ve yöneticilerin seçtiği görünen adı korunur. town-square ile başlayan eski bağlantılar ve aramalar hâlâ bu kanala götürür. Zaten general adında bir kanalı olan (arşivlenmiş olsa bile) bir topluluk, town-square kanalını varsayılan kanal olarak kullanmaya devam eder; town-square kanalı arşivlenmiş topluluklar da aynı şekilde. Günlük bu toplulukları listeler ve yöneticileri kanalları yeniden adlandırabilir.
FavorilerHerkesin Favorites kenar çubuğu kategorisi, arayüzün artık kullandığı adla Favourites olarak değiştirilir. Kullanıcıların bu adla oluşturduğu kategoriler olduğu gibi bırakılır.

Agents uygulamasının hizmetleri

Yükseltme, Ajanlar uygulamasının her yapay zekâ hizmetini sunucu genelinde bir model bağlantısına kopyalar; bu bağlantı tüm topluluklarla paylaşılır ve konuklar hariç herkes tarafından kullanılabilir (onlara da izin vermek için Konuklara da izin ver seçeneğini etkinleştirin). Anahtarlar yolda şifrelenir, bu nedenle sunucunun yapay zekâ şifreleme anahtarına ihtiyacı vardır: dosyaları S3'te bulunan bir kümede önce AM_AI_ENCRYPTION_KEY değerini ayarlayın, aksi halde kopyalama bir sonraki başlatmaya kadar bekler. Ardından Sistem Konsolu › Yapay Zekâ › Model bağlantıları bölümünü kontrol edin:

  • Her bağlantı, ait olduğu hizmetin kimliğini korur; bu sayede uygulamanın ajanları ve bir Ajanlar hizmetine ayarlanmış otomatik çeviri, hizmeti yine de bulabilir.
  • OpenAI, OpenAI uyumlu, Anthropic, Mistral, Cohere ve Gemini hizmetleri, OpenAI uyumlu (veya Anthropic) uç noktalarına bağlanır. Bir Azure hizmeti, kaynağın OpenAI uyumlu uç noktasına bağlanır: bunu test edin.
  • AWS Bedrock, Google Vertex AI ve Cohere North hizmetleri ile bilinmeyen türler, gerekçesiyle birlikte Dikkat gerekiyor olarak işaretlenir. Bulut kimlik bilgileri kopyalanmaz: bunları sağlayıcının OpenAI uyumlu uç noktasına veya LiteLLM gibi bir geçit sistemine yönlendirin, ardından kaydedin.
  • Gömme (embedding) hizmeti, aynı adres ve anahtara sahip bağlantının Gömme modeli olur ya da kendi bağlantısını oluşturur. Transkripsiyon hizmeti whisper-1 modelini alır.
  • Yeniden yazma ve özetler için henüz bir bağlantı yoksa, uygulamanın varsayılan ajanının hizmeti ve modeli kullanılır.

Ajanlar uygulamasının kendi ayarları ve verileri olduğu gibi bırakılır: ajanları, uygulamanın hizmetlerini kullanmaya devam eder.

Varsayılan değerlerdeki diğer değişiklikler

  • Çağrılar: Test modu varsayılan olarak kapalı, Videoyu etkinleştir ise açıktır. Yapılandırmada kaydedilmiş bir tercih korunur. Çağrılar ayrıca topluluğun türüne de uyar (bkz. Çağrılar ve ses).
  • İletileri en üste alma yetkisi, kanalın yöneticileri, topluluğun yöneticileri ve moderatörleri (İletileri yönet yetkisiyle) için geçerlidir; doğrudan veya grup iletisinin üyeleri bu işlemi hâlâ yapabilir.
  • Arşivlenmiş kanallara yeni üyeler eklenebilir ve geçmişteki iletileri okuyabilir. Kimse bu kanallarda ileti gönderemez, tepki veremez veya herhangi bir değişiklik yapamaz.

Mattermost'tan geçiş

Antimatter, Mattermost'un veritabanı şemasını kullanır ve kendi tablolarını ekler; bu sayede bir Mattermost sunucusunun PostgreSQL veritabanını ve dosyalarını devralabilir. Önce bir kopyada deneyin:

  1. Mattermost veritabanını, dosya depolamasını (data/ veya S3 kovası) ve config.json dosyasını yedekleyin, ardından Mattermost'u durdurun.
  2. Veritabanını Antimatter'ın PostgreSQL'ine geri yükleyin veya Antimatter'ı bu veritabanının bir kopyasına yönlendirin (AM_SQLSETTINGS_DATASOURCE).
  3. Dosyaları Antimatter'ın depolama alanına, yollarını koruyarak kopyalayın: S3 aracıyla antimatter kovasına veya bir sürüm arşiviyle data/ dizinine.
  4. Ayarlarınızı yeniden kullanın: config.json dosyasını kopyalayın veya amctl --local config migrate komutuyla veritabanına taşıyın (bkz. Yapılandırma). MM_ ortam değişkenleriniz çalışmaya devam eder; uygun olduğunda bunları AM_ olarak yeniden adlandırın.
  5. Antimatter'ı başlatın ve veritabanını yükseltirken günlüğü izleyin. Ardından Sistem Konsolu › Uygulama ekleri › Uygulama eki yönetimi bölümünü kontrol edin. Antimatter, Calls, Playbooks, Kanban (Panolar), Agents ve entegrasyonların yüklü sürümden yeni olan kendi derlemelerini otomatik olarak yükler. Mattermost'un bunlardan birinin daha yeni bir sürümüne sahip olması durumunda, o uygulamayı kaldırın ve Antimatter'ı yeniden başlatın; böylece kendi derlemesi yüklenir.
  6. Anında bildirimleri kendi anında bildirim vekil sunucunuz (push proxy) ile yeniden yapılandırın: Antimatter, bildirimleri yalnızca kendi uygulamalarına ileten Mattermost'un test veya barındırılan anında bildirim hizmetlerine asla göndermez. Anında bildirim sunucusu ayarını değiştirene kadar sunucu anında bildirim göndermez (bkz. Anında bildirimler).

Antimatter, yapılandırmanızda hâlâ bir hizmet adı geçse bile Mattermost, Inc. tarafından işletilen hiçbir hizmetle iletişim kurmaz (bkz. Dış hizmetlere bağlantılar):

  • Mattermost'taki push bildirim sunucusu ayarlarda tutulur ama asla kullanılmaz;
  • Mattermost'un uygulama mağazası (Mağaza adresi) ve ürün bildirimleri için adresleri boşaltılır;
  • Mattermost'un varsayılanı olan uygulama indirme bağlantıları (Antimatter Apps Download Page Link, Android App Download Link ve iOS App Download Link), Antimatter uygulamalarının GitHub'daki indirme sayfalarıyla değiştirilir; kendiniz ayarladığınız bağlantılar korunur;
  • Calls uygulaması, kayıtlı ayarı değiştirmeden Mattermost'unkü yerine Cloudflare'ın herkese açık STUN sunucusunu kullanır (bkz. Calls);
  • Güvenlik güncelleme denetimi ve çökme raporlaması kaldırılır; bunlara ait Sistem Konsolu ayarları (Güvenlik Uyarılarını Etkinleştir, Telemetri ve Hata Raporlamasını Etkinleştir) ve Bildirimler sayfası da kaldırılır.

Yerel mod soketi artık /var/tmp/antimatter_local.socket'tir; amctl eski /var/tmp/mattermost_local.socket adresini de dener. Mattermost yalnızca son sürümlerinde PostgreSQL destekler ve Antimatter de aynıdır: bir MySQL veritabanını önce PostgreSQL'e taşıyın. Antimatter veritabanını yükselttikten sonra Mattermost'a geri dönmek, Mattermost yedeğinizi geri yüklemek anlamına gelir.

Verileri dışa ve içe aktarın

Toplu dışa aktarma biçimi, verileri sunucular arasında taşır: tüm sunucu, bazı topluluklar veya bazı kanallar; isterseniz ek dosyalar, profil fotoğrafları ve özel emojilerle birlikte.

# 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 ve amctl import job list komutlarıyla işleri izleyin. Topluluk veya kanal dışa aktarımı için --imported-users parametresi gereklidir: Kişiler bu sunucuya taşınıyorsa active, zaten hesapları bulunan bir sunucuya içe aktarılıyorsa inactive kullanın; böylece belirsiz eşleşmelerden oluşturulan hesaplar, bir yönetici tarafından kontrol edilene kadar pasif kalır. --destination-team-name parametresi, içeriği mevcut bir topluluğa içe aktarmanızı sağlar. Dışa ve içe aktarımlar, varsayılan olarak 30 gün boyunca sunucunun depolama alanında (ExportSettings.Directory, ImportSettings.Directory) saklanır.

Sunucunun kendisinde, antimatter export bulk ve antimatter import bulk --apply komutları, API kullanmadan dosyalar üzerinden aynı işlemleri gerçekleştirir.