Cấu hình

Nơi Antimatter lưu các cài đặt, ba cách để thay đổi chúng (Bảng điều khiển Hệ thống, biến môi trường, amctl), và vị trí lưu trữ nhật ký.

Nơi lưu trữ các cài đặt

Mỗi cài đặt máy chủ đều có một tên bao gồm một phần (section) và một khóa (key), chẳng hạn như ServiceSettings.SiteURL hoặc EmailSettings.SMTPServer. Chúng cùng nhau tạo thành một cấu hình, được lưu trữ trong một trong hai vị trí:

  • Trong cơ sở dữ liệu. Tệp compose của trang web đặt AM_CONFIG thành URL kết nối PostgreSQL, do đó cấu hình là một dòng trong cơ sở dữ liệu và container không lưu trữ gì trên đĩa. Nhiều máy chủ chia sẻ một cơ sở dữ liệu cũng sẽ chia sẻ cấu hình của chúng.
  • Trong một tệp. Nếu không có AM_CONFIG, máy chủ sẽ đọc config/config.json nằm cạnh thư mục bin/ của nó (/antimatter/config/config.json trong ảnh Docker). Bản phát hành và các tệp compose cho môi trường sản xuất của antimatter-docker hoạt động theo cách này, cũng như các gói .deb và .rpm, trong đó tệp đặt tại /etc/antimatter/config/config.json. Hãy đảm bảo tệp này chỉ có thể được đọc bởi người dùng của máy chủ: nó chứa mật khẩu và các khóa.

AM_CONFIG (hoặc cờ --config của lệnh antimatter) chấp nhận một đường dẫn tệp hoặc một URL postgres://. Các cài đặt mà bạn bỏ qua sẽ lấy giá trị mặc định của chúng.

Để di chuyển một cấu hình hiện có từ tệp sang cơ sở dữ liệu, hãy chạy lệnh này trên máy chủ, sau đó khởi động máy chủ với AM_CONFIG được đặt thành cùng một URL:

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

Biến môi trường

Bất kỳ cài đặt nào cũng có thể được cung cấp dưới dạng biến môi trường. Các biến này có ưu tiên cao hơn cấu hình đã lưu trữ, điều này khiến chúng phù hợp cho những gì thuộc về triển khai: cơ sở dữ liệu, URL trang web, lưu trữ tệp, các cổng.

Quy tắc đặt tên

Ghi AM_, sau đó là phần (section), sau đó là khóa (key), viết hoa và phân tách bằng dấu gạch dưới. Các từ bên trong tên phần hoặc khóa không được phân tách:

Cài đặtBiến
ServiceSettings.SiteURLAM_SERVICESETTINGS_SITEURL
SqlSettings.DataSourceAM_SQLSETTINGS_DATASOURCE
EmailSettings.SMTPServerAM_EMAILSETTINGS_SMTPSERVER
PrivacySettings.EnableUserBlockingAM_PRIVACYSETTINGS_ENABLEUSERBLOCKING
  • Các cài đặt dạng true và false nhận giá trị true hoặc false; các số là số thuần túy.
  • Các cài đặt dạng danh sách nhận các giá trị của chúng được phân tách bằng khoảng trắng, ví dụ AM_SERVICESETTINGS_TRUSTEDPROXYIPHEADER="X-Forwarded-For X-Real-IP".
  • Các cài đặt dạng đối tượng nhận JSON. Biến duy nhất như vậy cho các ứng dụng là AM_PLUGINSETTINGS_PLUGINS, và nó thay thế cài đặt của mọi ứng dụng cùng một lúc: hãy đặt cài đặt ứng dụng trong Bảng điều khiển Hệ thống hoặc bằng amctl thay thế (xem bên dưới).
  • Các cài đặt Mattermost cũ hơn sử dụng tiền tố MM_, ví dụ MM_SQLSETTINGS_DATASOURCE. Nó vẫn hoạt động như một alias kế thừa. Khi cả hai đều được đặt, biến AM_ sẽ có hiệu lực.

Một cài đặt được cung cấp bởi biến sẽ bị khóa trong Bảng điều khiển Hệ thống, kèm theo ghi chú "Cài đặt này đã được thiết lập thông qua một biến môi trường. Nó không thể được thay đổi thông qua Bảng điều khiển Hệ thống." Nó không được ghi vào cấu hình đã lưu: hãy xóa biến và giá trị đã lưu sẽ lại được áp dụng.

Với Docker Compose

Thêm các biến dưới environment: của dịch vụ antimatter, hoặc trong tệp compose.override.yaml đặt cạnh compose.yaml (Compose sẽ đọc nó tự động và nó sẽ được giữ nguyên sau các bản cập nhật của tệp đã tải xuống):

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

Áp dụng các thay đổi bằng docker compose up -d, điều này sẽ tạo lại container.

Các biến được đọc bởi các ứng dụng

Một số biến không phải là cài đặt và không có trường trong Bảng điều khiển Hệ thống: AM_CONFIG (vị trí của cấu hình), cùng AM_AI_ENCRYPTION_KEY và AM_AI_ENCRYPTION_PREVIOUS_KEYS, đây là khóa mã hóa các API key của các kết nối mô hình (xem AI).

Một số ứng dụng đọc các biến riêng của chúng, được đặt trên dịch vụ antimatter: ứng dụng Calls đọc AM_CALLS_* (xem Cuộc gọi và thoại), và ứng dụng GIFs đọc AM_GIFS_SERVICE_URL, AM_GIFS_API_KEY và AM_GIFS_UPLOAD_KEY (xem Ứng dụng tích hợp sẵn).

Bảng điều khiển Hệ thống

Bảng điều khiển Hệ thống là khu vực quản trị của ứng dụng web, dành cho quản trị viên hệ thống. Để mở, hãy nhấp vào ảnh đại diện của bạn ở đầu thanh ứng dụng và chọn Bảng điều khiển Hệ thống, hoặc truy cập https://chat.example.com/admin_console. Thanh bên của nó có hộp Tìm cài đặt để tìm kiếm trên mọi trang.

The System Console, with its sidebar of sections on the left and the SAML 2.0 settings page on the right.
Bảng điều khiển Hệ thống. Thanh bên nhóm các trang thành các phần như Báo cáo, Quản lý người dùng và Môi trường.

Các phần của nó bao gồm:

  • Báo cáo: thống kê và nhật ký máy chủ.
  • Quản lý người dùng: người dùng, nhóm, cộng đồng (được liệt kê dưới dạng Nhóm), kênh, quyền và quản trị ủy quyền.
  • Thuộc tính hệ thống: các thuộc tính hồ sơ tùy chỉnh và truy cập dựa trên thuộc tính.
  • Môi trường: máy chủ web, cơ sở dữ liệu, lưu trữ tệp, proxy hình ảnh, SMTP, thông báo đẩy, giới hạn tần suất, ghi nhật ký, thời lượng phiên, giám sát hiệu suất.
  • Cấu hình trang web: thương hiệu, người dùng và nhóm, thông báo, bài đăng, chia sẻ tệp và các hành vi trên toàn máy chủ khác.
  • Xác thực: đăng ký, đăng nhập bằng email và mật khẩu, MFA, AD/LDAP, SAML 2.0, OAuth 2.0, OpenID Connect và truy cập khách.
  • AI: các kết nối mô hình và các tính năng AI tích hợp (viết lại, tóm tắt, tự động dịch, chuyển văn bản thành giọng nói). Xem AI.
  • Các plugin: quản lý ứng dụng và cài đặt của từng ứng dụng đã cài.
  • Tích hợp: webhook, lệnh gạch chéo, tài khoản bot, GIFs, chuyển văn bản thành giọng nói, CORS.
  • Compliance: lưu trữ dữ liệu, xuất dữ liệu và giám sát tuân thủ, ghi nhật ký kiểm toán, điều khoản dịch vụ tùy chỉnh.
  • Thử nghiệm: các tính năng có thể thay đổi.

Trong hướng dẫn này, một cài đặt được viết theo đường dẫn của nó trong Bảng điều khiển Hệ thống, sau đó là nhãn của nó, rồi đến khóa cấu hình, ví dụ Bảng điều khiển Hệ thống › Cấu hình trang web › Người dùng và Nhóm › Bật tính năng bỏ qua, chặn và yêu cầu nhắn tin (PrivacySettings.EnableUserBlocking).

Hầu hết các thay đổi có hiệu lực ngay khi bạn nhấp vào Lưu. Một số (địa chỉ nghe, một số cài đặt cơ sở dữ liệu và bộ nhớ đệm) cần khởi động lại, và trang sẽ ghi rõ điều này.

Nơi làm việc hoặc cộng đồng

Mỗi cộng đồng đều có một loại, xác định một số giá trị mặc định của nó:

  • Cộng đồng, dành cho cộng đồng công khai hoặc sở thích: các cuộc gọi bị tắt trong các kênh của nó (mọi người trò chuyện trong các kênh thoại), và chỉ quản trị viên của cộng đồng, cùng các vai trò quản lý kênh, mới có thể lưu trữ kênh.
  • Nơi làm việc, dành cho công ty hoặc tổ chức: các cuộc gọi được bật trong các kênh của nó, và quản trị viên của một kênh (người tạo kênh và những người được họ bổ nhiệm làm quản trị viên) cũng có thể lưu trữ kênh đó.

Bảng điều khiển Hệ thống › Cấu hình trang web › Người dùng và Nhóm › Loại của các cộng đồng mới (TeamSettings.DefaultCommunityKind, AM_TEAMSETTINGS_DEFAULTCOMMUNITYKIND) là loại của các cộng đồng được tạo từ thời điểm này trở đi: community (mặc định) hoặc workplace. Một mẫu bố cục được chọn khi tạo cộng đồng sẽ tự động đặt loại của nó. Quản trị viên của mỗi cộng đồng có thể thay đổi loại của cộng đồng đó sau này, trong Cài đặt cộng đồng › Kênh › Loại của cộng đồng.

Đối với một công ty, hãy đặt thành Nơi làm việc trước khi tạo cộng đồng đầu tiên, hoặc trước khi nâng cấp máy chủ hiện có lên 0.9.0: quá trình nâng cấp sẽ gán cho mọi cộng đồng hiện có giá trị của cài đặt tại thời điểm đó (xem Nâng cấp lên 0.9.0).

Công cụ dòng lệnh amctl

amctl quản lý máy chủ từ dòng lệnh: người dùng, cộng đồng, kênh, ứng dụng, cấu hình, tác vụ và nhiều hơn nữa. Nó giao tiếp với máy chủ theo một trong hai cách.

Chế độ cục bộ, trên máy chủ

Chế độ cục bộ cho phép amctl giao tiếp với máy chủ thông qua một socket Unix, mà không cần đăng nhập. Chế độ này được bật trong ảnh Docker và với các gói .deb và .rpm. Trên máy chủ được cài đặt từ một tệp lưu trữ, hãy bật nó bằng ServiceSettings.EnableLocalMode (AM_SERVICESETTINGS_ENABLELOCALMODE=true). Socket mặc định là /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
Bất kỳ ai có thể sử dụng socket, hoặc chạy docker compose exec trên máy chủ, đều có quyền quản trị viên hệ thống đầy đủ.

Từ xa, với một tài khoản

Từ bất kỳ máy nào, hãy đăng nhập bằng tài khoản quản trị viên hệ thống (hoặc token truy cập cá nhân), sau đó chạy các lệnh đối với máy chủ đó:

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

Lệnh cấu hình

LệnhChức năng
amctl config get ServiceSettings.SiteURLIn ra một cài đặt.
amctl config set TeamSettings.EnableOpenServer falseThay đổi một cài đặt. Các cài đặt dạng danh sách nhận nhiều giá trị.
amctl config patch settings.jsonGhép một tệp JSON chứa các cài đặt vào cấu hình.
amctl config showIn ra toàn bộ cấu hình dưới dạng JSON.
amctl config editMở cấu hình trong trình soạn thảo của bạn ($EDITOR).
amctl config resetĐặt lại các cài đặt về giá trị mặc định.
amctl config reloadTải lại cấu hình từ nơi nó được lưu trữ, sau một thay đổi được thực hiện bên ngoài máy chủ.

Các cài đặt ứng dụng nằm dưới PluginSettings.Plugins.<app id>, với các khóa viết thường. Ví dụ, để đặt URL dịch vụ và khóa của ứng dụng GIF từ máy chủ 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

Các lệnh hữu ích khác: amctl user create, amctl user deactivate, amctl team create, amctl plugin list, amctl plugin enable, amctl system supportpacket và amctl logs. Chạy amctl help <command> để xem các tùy chọn của từng lệnh.

Nhật ký

Máy chủ ghi nhật ký của nó vào hai nơi, mỗi nơi có mức riêng (DEBUG, INFO, WARN hoặc ERROR), được thiết lập trong Bảng điều khiển Hệ thống › Môi trường › Nhật ký:

Đích đếnCài đặtMặc định
Console (đầu ra chuẩn)Xuất nhật ký ra bảng điều khiển (LogSettings.EnableConsole), Mức Nhật ký Bảng điều khiển (LogSettings.ConsoleLevel), Nhật ký bảng điều khiển xuất dưới dạng JSON (LogSettings.ConsoleJson)bật, DEBUG, JSON
Một tệp, antimatter.logXuất nhật ký vào tệp (LogSettings.EnableFile), Cấp độ nhật ký tệp (LogSettings.FileLevel), Thư mục Nhật ký Tệp (LogSettings.FileLocation)bật, INFO, thư mục logs/ nằm cạnh bin/

Tệp nhật ký được xoay vòng ở 100 MB và các tệp cũ được nén.

Tệp compose của trang web tắt nhật ký tệp (AM_LOGSETTINGS_ENABLEFILE=false), vì vậy nhật ký chỉ có trong đầu ra của container:

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

Mức độ của console mặc định là DEBUG, khá chi tiết. Trên một máy chủ bận rộn, hãy đặt AM_LOGSETTINGS_CONSOLELEVEL=INFO. Tệp config.json của tệp lưu trữ phát hành và của các gói đã được đặt thành INFO. Khi sử dụng tệp lưu trữ phát hành dưới systemd, đầu ra của console sẽ được gửi đến journal (journalctl -u antimatter) và tệp nhật ký sẽ nằm tại /opt/antimatter/logs/antimatter.log. Các gói tắt nhật ký tệp, vì vậy nhật ký của chúng chỉ có trong journal.

Khi nhật ký tệp được bật, quản trị viên hệ thống cũng có thể đọc các dòng nhật ký mới nhất trong Bảng điều khiển Hệ thống › Báo cáo › Nhật ký máy chủ, hoặc bằng amctl logs.