Konfigurasi

Di mana Antimatter menyimpan pengaturannya, tiga cara untuk mengubahnya (Konsol Sistem, variabel lingkungan, amctl), dan ke mana log diarahkan.

Di mana pengaturan disimpan

Setiap pengaturan server memiliki nama yang terdiri dari bagian dan kunci, seperti ServiceSettings.SiteURL atau EmailSettings.SMTPServer. Keduanya membentuk satu konfigurasi, yang disimpan di salah satu dari dua tempat:

  • Di database. File compose situs mengatur AM_CONFIG ke URL koneksi PostgreSQL, sehingga konfigurasi menjadi baris di database dan kontainer tidak menyimpan apa pun di disk. Beberapa server yang berbagi satu database juga berbagi konfigurasi mereka.
  • Dalam file. Tanpa AM_CONFIG, server membaca config/config.json di sebelah direktori bin/ (/antimatter/config/config.json dalam image Docker). Arsip rilis dan file compose produksi dari antimatter-docker bekerja dengan cara ini, begitu juga paket .deb dan .rpm, yang file-nya adalah /etc/antimatter/config/config.json. Pastikan file ini hanya dapat dibaca oleh pengguna server: file ini menyimpan kata sandi dan kunci.

AM_CONFIG (atau flag --config dari perintah antimatter) menerima jalur file atau URL postgres://. Pengaturan yang Anda tinggalkan akan mengambil nilai defaultnya.

Untuk memindahkan konfigurasi yang sudah ada dari file ke database, jalankan ini di server, lalu mulai server dengan AM_CONFIG diatur ke URL yang sama:

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

Variabel lingkungan

Setiap pengaturan juga dapat diberikan sebagai variabel lingkungan. Variabel menang atas konfigurasi yang disimpan, yang membuatnya cocok untuk apa yang milik deployment: database, URL situs, penyimpanan file, port.

Aturan penamaan

Tulis AM_, lalu bagian, lalu kunci, dalam huruf kapital dan dipisahkan oleh garis bawah. Kata-kata di dalam nama bagian atau kunci tidak dipisahkan:

PengaturanVariabel
ServiceSettings.SiteURLAM_SERVICESETTINGS_SITEURL
SqlSettings.DataSourceAM_SQLSETTINGS_DATASOURCE
EmailSettings.SMTPServerAM_EMAILSETTINGS_SMTPSERVER
PrivacySettings.EnableUserBlockingAM_PRIVACYSETTINGS_ENABLEUSERBLOCKING
  • Pengaturan true dan false mengambil true atau false; angka adalah angka polos.
  • Pengaturan daftar mengambil nilai-nilai yang dipisahkan oleh spasi, misalnya AM_SERVICESETTINGS_TRUSTEDPROXYIPHEADER="X-Forwarded-For X-Real-IP".
  • Pengaturan yang berupa objek mengambil JSON. Satu-satunya variabel seperti itu untuk aplikasi adalah AM_PLUGINSETTINGS_PLUGINS, dan itu menggantikan pengaturan setiap aplikasi sekaligus: atur pengaturan aplikasi di Konsol Sistem atau dengan amctl sebagai gantinya (lihat di bawah).
  • Konfigurasi Mattermost lama menggunakan awalan MM_, misalnya MM_SQLSETTINGS_DATASOURCE. Ini masih berfungsi sebagai alias warisan. Jika keduanya disetel, variabel AM_ yang berlaku.

Pengaturan yang diberikan melalui variabel dikunci di Konsol Sistem, dengan catatan "Pengaturan ini telah disetel melalui variabel lingkungan. Tidak dapat diubah melalui Konsol Sistem." Pengaturan ini tidak ditulis ke konfigurasi tersimpan: hapus variabelnya dan nilai tersimpan akan berlaku lagi.

Dengan Docker Compose

Tambahkan variabel di bawah environment: dari layanan antimatter, atau di compose.override.yaml di sebelah compose.yaml (Compose membacanya secara otomatis, dan file ini tetap ada setelah pembaruan file yang diunduh):

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

Terapkan perubahan dengan docker compose up -d, yang akan membuat ulang kontainer.

Variabel yang dibaca oleh aplikasi

Beberapa variabel bukan pengaturan dan tidak memiliki kolom di Konsol Sistem: AM_CONFIG (lokasi konfigurasi), serta AM_AI_ENCRYPTION_KEY dan AM_AI_ENCRYPTION_PREVIOUS_KEYS, yaitu kunci yang mengenkripsi kunci API dari koneksi model (lihat AI).

Beberapa aplikasi membaca variabelnya sendiri, yang disetel pada layanan antimatter: aplikasi Calls membaca AM_CALLS_* (lihat Panggilan dan suara), dan aplikasi GIFs membaca AM_GIFS_SERVICE_URL, AM_GIFS_API_KEY, dan AM_GIFS_UPLOAD_KEY (lihat Aplikasi bawaan).

Konsol Sistem

Konsol Sistem adalah area administrasi dari aplikasi web, untuk administrator sistem. Untuk membukanya, klik foto Anda di bagian atas bilah aplikasi dan pilih Konsol Sistem, atau buka https://chat.example.com/admin_console. Bilah sampingnya memiliki kotak Cari pengaturan yang mencari di semua halaman.

The System Console, with its sidebar of sections on the left and the SAML 2.0 settings page on the right.
Konsol Sistem. Bilah Samping mengelompokkan halaman ke dalam bagian seperti Pelaporan, Manajemen Pengguna, dan Lingkungan.

Bagian-bagiannya adalah:

  • Pelaporan: statistik dan log server.
  • Manajemen Pengguna: pengguna, grup, komunitas (tercantum sebagai Tim), kanal, izin, dan administrasi terdelegasi.
  • Atribut Sistem: atribut profil kustom dan akses berbasis atribut.
  • Lingkungan: server web, database, penyimpanan file, proxy gambar, SMTP, notifikasi push, pembatasan laju, pencatatan log, durasi sesi, dan pemantauan kinerja.
  • Konfigurasi Situs: branding, pengguna dan tim, notifikasi, kiriman, berbagi file, dan perilaku server lainnya.
  • Autentikasi: pendaftaran, masuk dengan email dan kata sandi, MFA, AD/LDAP, SAML 2.0, OAuth 2.0, OpenID Connect, dan akses tamu.
  • AI: koneksi model dan fitur AI bawaan (tulis ulang, ringkasan, penerjemahan otomatis, teks ke suara). Lihat AI.
  • Plugin: manajemen aplikasi dan pengaturan masing-masing aplikasi yang terpasang.
  • Integrasi: webhook, perintah garis miring, akun bot, GIFs, teks ke suara, CORS.
  • Kepatuhan: retensi data, ekspor dan pemantauan kepatuhan, pencatatan audit, serta ketentuan layanan khusus.
  • Eksperimental: fitur yang mungkin berubah.

Dalam panduan ini, sebuah pengaturan ditulis sebagai jalurnya di Konsol Sistem, lalu labelnya, lalu kunci konfigurasinya, misalnya Konsol Sistem › Konfigurasi Situs › Pengguna dan Tim › Aktifkan pengabaian, pemblokiran, dan permintaan pesan (PrivacySettings.EnableUserBlocking).

Sebagian besar perubahan berlaku segera setelah Anda mengklik Simpan. Beberapa (alamat dengar, beberapa pengaturan database dan cache) memerlukan restart, dan halaman tersebut akan menyatakannya.

Tempat kerja atau komunitas

Setiap komunitas memiliki jenis, yang mengatur beberapa nilai default-nya:

  • Komunitas, untuk komunitas publik atau hobi: panggilan dimatikan di kanalnya (orang-orang berbicara di kanal suara), dan hanya admin-nya, serta peran yang mengelola kanal, yang mengarsipkan kanal.
  • Tempat kerja, untuk perusahaan atau organisasi: panggilan diaktifkan di kanalnya, dan admin dari sebuah kanal (siapa pun yang membuatnya, dan mereka yang mereka jadikan admin) juga dapat mengarsipkannya.

Konsol Sistem › Konfigurasi Situs › Pengguna dan Tim › Jenis komunitas baru (TeamSettings.DefaultCommunityKind, AM_TEAMSETTINGS_DEFAULTCOMMUNITYKIND) adalah jenis komunitas yang dibuat mulai saat itu: community (default) atau workplace. Preset tata letak yang dipilih saat membuat komunitas mengatur jenisnya sendiri. Admin dari setiap komunitas dapat mengubah jenisnya nanti, di Pengaturan tim › Kanal › Jenis komunitas.

Untuk perusahaan, atur ke Tempat kerja sebelum Anda membuat komunitas pertama, atau sebelum Anda memutakhirkan server yang ada ke 0.9.0: pemutakhiran memberikan nilai pengaturan saat itu kepada setiap komunitas yang ada (lihat Memutakhirkan ke 0.9.0).

Perintah baris perintah amctl

amctl mengelola server dari baris perintah: pengguna, komunitas, kanal, aplikasi, konfigurasi, tugas, dan lainnya. Alat ini berkomunikasi dengan server melalui salah satu dari dua cara.

Mode lokal, di server

Mode lokal memungkinkan amctl berbicara dengan server melalui soket Unix, tanpa masuk. Mode ini aktif pada image Docker dan dengan paket .deb dan .rpm. Pada server yang diinstal dari arsip, aktifkan dengan ServiceSettings.EnableLocalMode (AM_SERVICESETTINGS_ENABLELOCALMODE=true). Soket secara default adalah /var/tmp/antimatter_local.socket (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
Siapa pun yang dapat menggunakan soket tersebut, atau menjalankan docker compose exec di host, memiliki hak administrator sistem penuh.

Jarak jauh, dengan akun

Dari mesin mana pun, masuk dengan akun administrator sistem (atau token akses pribadi), lalu jalankan perintah terhadap server tersebut:

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

Perintah konfigurasi

PerintahFungsinya
amctl config get ServiceSettings.SiteURLMenampilkan satu pengaturan.
amctl config set TeamSettings.EnableOpenServer falseMengubah satu pengaturan. Pengaturan daftar menerima beberapa nilai.
amctl config patch settings.jsonMenggabungkan file JSON berisi pengaturan ke dalam konfigurasi.
amctl config showMenampilkan seluruh konfigurasi sebagai JSON.
amctl config editMembuka konfigurasi di editor Anda ($EDITOR).
amctl config resetMengatur ulang pengaturan ke nilai bawaannya.
amctl config reloadMemuat ulang konfigurasi dari tempat penyimpanannya, setelah perubahan yang dilakukan di luar server.

Pengaturan aplikasi berada di bawah PluginSettings.Plugins.<app id>, dengan kunci dalam huruf kecil. Misalnya, untuk mengatur URL layanan dan kunci aplikasi GIF dari host Docker:

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

Perintah berguna lainnya: amctl user create, amctl user deactivate, amctl team create, amctl plugin list, amctl plugin enable, amctl system supportpacket, dan amctl logs. Jalankan amctl help <command> untuk melihat opsi masing-masing.

Log

Server menulis log ke dua tempat, masing-masing dengan level (DEBUG, INFO, WARN, atau ERROR) yang diatur di Konsol Sistem › Lingkungan › Pencatatan:

TujuanPengaturanBawaan
Konsol (keluaran standar)Keluar log ke konsol (LogSettings.EnableConsole), Tingkat Log Konsol (LogSettings.ConsoleLevel), Keluar log konsol sebagai JSON (LogSettings.ConsoleJson)aktif, DEBUG, JSON
Berkas, antimatter.logKeluar log ke file (LogSettings.EnableFile), Tingkat Log File (LogSettings.FileLevel), Direktori Log File (LogSettings.FileLocation)aktif, INFO, direktori logs/ di sebelah bin/

Berkas log dirotasi pada 100 MB dan yang lama dikompresi.

Berkas compose situs menonaktifkan pencatatan ke berkas (AM_LOGSETTINGS_ENABLEFILE=false), sehingga log hanya ada di keluaran kontainer:

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

Level konsol secara default adalah DEBUG, yang sangat rinci. Pada server yang sibuk, atur AM_LOGSETTINGS_CONSOLELEVEL=INFO. config.json dari arsip rilis dan paket sudah mengaturnya ke INFO. Dengan arsip rilis di bawah systemd, keluaran konsol masuk ke jurnal (journalctl -u antimatter) dan file ke /opt/antimatter/logs/antimatter.log. Paket mematikan pencatatan file, sehingga log mereka hanya ada di jurnal.

Ketika pencatatan log ke file diaktifkan, administrator sistem juga dapat membaca baris log terbaru di Konsol Sistem › Pelaporan › Log Server, atau dengan amctl logs.