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_CONFIGthà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ẽ đọcconfig/config.jsonnằm cạnh thư mụcbin/của nó (/antimatter/config/config.jsontrong ả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 đặt | Biến |
|---|---|
ServiceSettings.SiteURL | AM_SERVICESETTINGS_SITEURL |
SqlSettings.DataSource | AM_SQLSETTINGS_DATASOURCE |
EmailSettings.SMTPServer | AM_EMAILSETTINGS_SMTPSERVER |
PrivacySettings.EnableUserBlocking | AM_PRIVACYSETTINGS_ENABLEUSERBLOCKING |
- Các cài đặt dạng true và false nhận giá trị
truehoặcfalse; 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ằngamctlthay 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ếnAM_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.

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.
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
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ệnh | Chức năng |
|---|---|
amctl config get ServiceSettings.SiteURL | In ra một cài đặt. |
amctl config set TeamSettings.EnableOpenServer false | Thay đổ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.json | Ghép một tệp JSON chứa các cài đặt vào cấu hình. |
amctl config show | In ra toàn bộ cấu hình dưới dạng JSON. |
amctl config edit | Mở 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 reload | Tả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 đến | Cài đặt | Mặ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.log | Xuấ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.