Yapılandırma

Antimatter'ın ayarlarını nerede sakladığı, bunları değiştirmenin üç yolu (Sistem Konsolu, ortam değişkenleri, amctl) ve günlüklerin (log) nereye yazıldığı.

Ayarların nerede saklandığı

Her sunucu ayarının, ServiceSettings.SiteURL veya EmailSettings.SMTPServer gibi bir bölüm ve bir anahtar adı vardır. Birlikte tek bir yapılandırmayı oluştururlar ve bu yapılandırma iki yerden birinde saklanır:

  • Veritabanında. Sitein compose dosyası AM_CONFIG değerini PostgreSQL bağlantı URL'si olarak ayarlar; böylece yapılandırma veritabanındaki bir satır olur ve konteyner diskte hiçbir şey saklamaz. Tek bir veritabanını paylaşan birden fazla sunucu, yapılandırmalarını da paylaşır.
  • Bir dosyada. AM_CONFIG tanımlanmadığında, sunucu bin/ dizininin yanındaki config/config.json dosyasını okur (Docker görüntüsünde /antimatter/config/config.json). antimatter-docker'ın sürüm arşivi ve üretim compose dosyaları bu şekilde çalışır; .deb ve .rpm paketleri de öyle, bu paketlerdeki dosya /etc/antimatter/config/config.json konumundadır. Bu dosyanın yalnızca sunucunun kullanıcı tarafından okunabilir olmasını sağlayın: şifreler ve anahtarlar bu dosyada saklanır.

AM_CONFIG (veya antimatter komutunun --config bayrağı) bir dosya yolu veya postgres:// URL'si kabul eder. Tanımlamadığınız ayarlar varsayılan değerlerini alır.

Mevcut bir yapılandırmayı dosyadan veritabanına taşımak için sunucuda bunu çalıştırın, ardından sunucuyu AM_CONFIG değeri aynı URL olarak ayarlı başlatın:

amctl --local config migrate /opt/antimatter/config/config.json \
    "postgres://antimatter:PASSWORD@localhost:5432/antimatter?sslmode=disable&connect_timeout=10"

Ortam değişkenleri

Herhangi bir ayar ayrıca bir ortam değişkeni olarak da verilebilir. Değişkenler, saklanan yapılandırmaya göre önceliklidir; bu da onları dağıtıma ait olanlar için iyi bir seçenek yapar: veritabanı, site URL'si, dosya depolama, portlar.

Adlandırma kuralı

AM_ yazın, ardından bölümü, ardından anahtarı, büyük harflerle ve alt çizgilerle ayırarak yazın. Bir bölüm veya anahtar adı içindeki kelimeler ayrılmaz:

AyarDeğişken
ServiceSettings.SiteURLAM_SERVICESETTINGS_SITEURL
SqlSettings.DataSourceAM_SQLSETTINGS_DATASOURCE
EmailSettings.SMTPServerAM_EMAILSETTINGS_SMTPSERVER
PrivacySettings.EnableUserBlockingAM_PRIVACYSETTINGS_ENABLEUSERBLOCKING
  • Doğru ve yanlış ayarlar true veya false alır; sayılar düz sayılardır.
  • Liste ayarları, değerlerini boşluklarla ayırarak alır, örneğin AM_SERVICESETTINGS_TRUSTEDPROXYIPHEADER="X-Forwarded-For X-Real-IP".
  • Nesne olan ayarlar JSON alır. Uygulamalar için tek böyle değişken AM_PLUGINSETTINGS_PLUGINS'tir ve tüm uygulamaların ayarlarını birden değiştirir: uygulama ayarlarını bunun yerine Sistem Konsolu'nda veya amctl ile ayarlayın (aşağıya bakın).
  • Eski Mattermost kurulumları MM_ öneki kullanır, örneğin MM_SQLSETTINGS_DATASOURCE. Bu, eski bir takma ad olarak hâlâ çalışır. Her iki değişken de ayarlıysa AM_ değişkeni önceliklidir.

Bir değişkenle sağlanan ayar, Sistem Konsolu'nda kilitlenir ve şu notla birlikte görüntülenir: "Bu ayar bir ortam değişkeni üzerinden yapılmıştır. Sistem Konsolu üzerinden değiştirilemez." Değer, saklanan yapılandırmaya yazılmaz; değişkeni kaldırdığınızda saklanan değer yeniden geçerli olur.

Docker Compose ile

Değişkenleri antimatter servisinin environment: bölümüne ekleyin veya compose.yaml dosyasının yanına compose.override.yaml dosyası yerleştirin (Compose bu dosyayı otomatik olarak okur ve indirilen dosyanın güncellenmesi sırasında korunur):

services:
  antimatter:
    environment:
      AM_EMAILSETTINGS_SMTPSERVER: smtp.example.com
      AM_EMAILSETTINGS_SMTPPORT: "587"
      AM_LOGSETTINGS_CONSOLELEVEL: INFO

Değişiklikleri, konteyneri yeniden oluşturan docker compose up -d komutuyla uygulayın.

Uygulamaların okuduğu değişkenler

Bazı değişkenler ayar değildir ve Sistem Konsolu'nda karşılığı yoktur: AM_CONFIG (yapılandırmanın nerede olduğu) ve model bağlantılarının API anahtarlarını şifreleyen anahtar olan AM_AI_ENCRYPTION_KEY ile AM_AI_ENCRYPTION_PREVIOUS_KEYS (bkz. Yapay zeka).

Bazı uygulamalar, antimatter servisinde ayarlanan kendi değişkenlerini okur: Calls uygulaması AM_CALLS_* değişkenlerini (bkz. Calls and voice), GIFs uygulaması ise AM_GIFS_SERVICE_URL, AM_GIFS_API_KEY ve AM_GIFS_UPLOAD_KEY değişkenlerini okur (bkz. Bundled apps).

Sistem Konsolu

Sistem Konsolu, web uygulamasının sistem yöneticileri için yönetim alanıdır. Açmak için, uygulama rayının üst kısmındaki profil resminize tıklayıp Sistem Konsolu seçin veya https://chat.example.com/admin_console adresine gidin. Kenar çubuğundaki Ayar arama kutusu tüm sayfalarda arama yapar.

The System Console, with its sidebar of sections on the left and the SAML 2.0 settings page on the right.
Sistem Konsolu. Kenar çubuğu, sayfaları Reporting, User Management ve Environment gibi bölümlere ayırır.

Bölümleri şunlardır:

  • Raporlama: istatistikler ve sunucu günlükleri.
  • Kullanıcı yönetimi: kullanıcılar, gruplar, topluluklar (Takımlar olarak listelenir), kanallar, izinler ve devredilmiş yönetim.
  • Sistem öznitelikleri: özel profil öznitelikleri ve öznitele tabanlı erişim.
  • Ortam: web sunucusu, veritabanı, dosya depolama, görüntü vekili, SMTP, anlık bildirimler, hız sınırlama, günlük kayıtları, oturum süreleri, performans izleme.
  • Site yapılandırması: marka, kullanıcılar ve takımlar, bildirimler, gönderiler, dosya paylaşımı ve diğer sunucu genelinde davranışlar.
  • Kimlik doğrulama: kayıt, e-posta ve şifreyle giriş, MFA, AD/LDAP, SAML 2.0, OAuth 2.0, OpenID Connect ve konuk erişimi.
  • Yapay zeka: model bağlantıları ve yerleşik yapay zeka özellikleri (yeniden yazma, özetler, otomatik çeviri, metinden sese). Bkz. Yapay zeka.
  • Uygulama ekleri: uygulama yönetimi ve her yüklü uygulamanın ayarları.
  • Bütünleştirmeler: webhook'lar, slash komutları, bot hesapları, GIF'ler, metni sese çevirme, CORS.
  • Uyumluluk: veri saklama, uyumluluk dışa aktarımı ve izleme, denetim günlükleri, özel hizmet koşulları.
  • Deneysel: Değişebilecek özellikler.

Bu kılavuzda, bir ayar, Sistem Konsolu'ndaki yolu, ardından etiketi, ardından yapılandırma anahtarı olarak yazılır. Örneğin Sistem Konsolu › Site yapılandırması › Kullanıcılar ve takımlar › Yok sayma, engelleme ve iletme isteklerini etkinleştir (PrivacySettings.EnableUserBlocking).

Değişikliklerin çoğu Kaydet'e tıkladığınız anda uygulanır. Birkaçı (dinleme adresi, bazı veritabanı ve önbellek ayarları) yeniden başlatma gerektirir ve sayfa bunu belirtir.

Çalışma alanı veya topluluk

Her topluluğun bir türü vardır ve bu tür bazı varsayılan değerlerini belirler:

  • Topluluk, herkese açık veya hobi toplulukları için: kanallardaki aramalar kapalıdır (kullanıcılar ses kanallarında konuşur) ve yalnızca yöneticileri ile kanalları yöneten roller kanalları arşivler.
  • Çalışma alanı, bir şirket veya kuruluş için: kanallardaki aramalar açıktır ve kanalın yöneticileri (oluşturan kişi ve onun atadığı yöneticiler) kanalı arşivleyebilir.

Sistem Konsolu › Site yapılandırması › Kullanıcılar ve takımlar › Yeni toplulukların türü (TeamSettings.DefaultCommunityKind, AM_TEAMSETTINGS_DEFAULTCOMMUNITYKIND), bundan sonra oluşturulacak toplulukların türüdür: community (varsayılan) veya workplace. Bir topluluk oluşturulurken seçilen bir yerleşim ön ayarı, kendi türünü belirler. Her topluluğun yöneticileri, türünü daha sonra Takım ayarları › Kanallar › Topluluğun türü bölümünden değiştirebilir.

Bir şirket için, ilk topluluğu oluşturmadan veya mevcut sunucuyu 0.9.0 sürümüne yükseltmeden önce bu ayarı Çalışma alanı olarak ayarlayın: yükseltme, o anki ayar değerini mevcut her topluluğa atar (bkz. 0.9.0 sürümüne yükseltme).

amctl komut satırı aracı

amctl, kullanıcılar, topluluklar, kanallar, uygulamalar, yapılandırma, işler ve daha fazlası olmak üzere bir sunucuyu komut satırından yönetir. Sunucuyla iki yoldan iletişim kurar.

Yerel mod, sunucuda

Yerel mod, amctl'nin Unix soketi üzerinden sunucuyla, oturum açmadan iletişim kurmasını sağlar. Docker görüntüsünde ve .deb ile .rpm paketlerinde etkinleştirilidir. Arşivden kurulan bir sunucuda, ServiceSettings.EnableLocalMode (AM_SERVICESETTINGS_ENABLELOCALMODE=true) ile etkinleştirin. Soket varsayılan olarak /var/tmp/antimatter_local.socket konumundadır (ServiceSettings.LocalModeSocketLocation).

# with Docker Compose
docker compose exec antimatter amctl --local system status
# with a release archive
sudo -u antimatter /opt/antimatter/bin/amctl --local system status
# with the .deb or .rpm package
sudo -u antimatter amctl --local system status
Soketi kullanabilen veya ana makinede docker compose exec çalıştırabilen herkes tam sistem yöneticisi yetkisine sahiptir.

Uzaktan, bir hesapla

Herhangi bir makineden, bir sistem yöneticisi hesabıyla (veya kişisel erişim belirteciyle) oturum açın, ardından o sunucu için komutları çalıştırın:

amctl auth login https://chat.example.com --name prod --username admin
amctl system status

Yapılandırma komutları

KomutNe işe yarar
amctl config get ServiceSettings.SiteURLTek bir ayarı yazdırır.
amctl config set TeamSettings.EnableOpenServer falseTek bir ayarı değiştirir. Liste ayarları birden fazla değer alır.
amctl config patch settings.jsonYapılandırma ayarlarının JSON dosyasını yapılandırmaya birleştirir.
amctl config showTüm yapılandırmayı JSON olarak yazdırır.
amctl config editYapılandırmayı düzenleyicinizde açar ($EDITOR).
amctl config resetAyarları varsayılanlarına sıfırlar.
amctl config reloadSunucu dışında yapılan bir değişiklikten sonra yapılandırmayı saklandığı yerden yeniden yükler.

Uygulama ayarları PluginSettings.Plugins.<app id> altında, küçük harfli anahtarlarla bulunur. Örneğin, GIFs uygulamasının hizmet URL'sini ve anahtarını Docker ana makinesinden ayarlamak için:

docker compose exec -T antimatter amctl --local config patch /dev/stdin <<'EOF'
{"PluginSettings": {"Plugins": {"com.antimatterchat.gifs": {
  "serviceurl": "http://gifs:8080/v2",
  "apikey": "the GIFS_API_KEY of your .env"
}}}}
EOF

Diğer faydalı komutlar: amctl user create, amctl user deactivate, amctl team create, amctl plugin list, amctl plugin enable, amctl system supportpacket ve amctl logs. Her birinin seçenekleri için amctl help <command> çalıştırın.

Kayıtlar

Sunucu, günlüğünü iki yere yazar; her birinin kendi düzeyi (DEBUG, INFO, WARN veya ERROR) Sistem Konsolu › Ortam › Günlük bölümünde ayarlanır:

HedefAyarlarVarsayılanlar
Konsol (standart çıktı)Günlükler konsola gönderilsin (LogSettings.EnableConsole), Konsol günlük kayıtları düzeyi (LogSettings.ConsoleLevel), Konsol günlüğü kayıtları JSON olarak kaydedilsin (LogSettings.ConsoleJson)açık, DEBUG, JSON
Bir dosya, antimatter.logGünlükler dosyaya yazılsın (LogSettings.EnableFile), Dosyalanacak günlük kayıtları düzeyi (LogSettings.FileLevel), Günlük kayıtları dosyası klasörü (LogSettings.FileLocation)açık, INFO, bin/ dizininin yanındaki logs/ dizini

Günlük dosyaları 100 MB'a ulaştığında döndürülür ve eski olanlar sıkıştırılır.

Sitein compose dosyası dosya günlüğünü kapatır (AM_LOGSETTINGS_ENABLEFILE=false), bu nedenle günlükler yalnızca konteynerin çıktısında bulunur:

docker compose logs -f antimatter
docker compose logs --since 1h antimatter | grep -i error

Konsol seviyesi varsayılan olarak DEBUG değerindedir ve ayrıntılıdır. Yoğun bir sunucuda AM_LOGSETTINGS_CONSOLELEVEL=INFO değerini ayarlayın. Sürüm arşivinin ve paketlerin config.json dosyası bunu zaten INFO olarak ayarlar. systemd altında bir sürüm arşivi kullanıldığında, konsol çıktısı günlüğe (journalctl -u antimatter) ve dosya /opt/antimatter/logs/antimatter.log konumuna gider. Paketler dosya günlüğünü devre dışı bırakır, bu nedenle günlükleri yalnızca sistem günlüğünde bulunur.

Dosya günlüğü etkin olduğunda, sistem yöneticileri en son günlük satırlarını Sistem Konsolu › Raporlama › Sunucu günlükleri bölümünde veya amctl logs komutuyla da okuyabilir.