設定
Antimatter 儲存設定的位置、變更設定的三種方式(系統控制台、環境變數、amctl),以及日誌的位置。
設定的儲存位置
每個伺服器設定都由一個區段和一個金鑰組成,例如 ServiceSettings.SiteURL 或 EmailSettings.SMTPServer。它們共同構成一個設定,並儲存在以下兩個位置之一:
- 在資料庫中。 站点的 compose 檔案將
AM_CONFIG設定為 PostgreSQL 連線 URL,因此設定是資料庫中的一列,容器不會在磁碟上保留任何內容。共用同一個資料庫的多個伺服器也會共用其設定。 - 在檔案中。 若未設定
AM_CONFIG,伺服器會讀取位於bin/目錄旁的config/config.json(在 Docker 映像中為/antimatter/config/config.json)。antimatter-docker 的發行版壓縮檔與生產環境 compose 檔案採用此方式,.deb 和 .rpm 套件也是如此,其檔案路徑為/etc/antimatter/config/config.json。請確保此檔案僅可由伺服器的使用者讀取:其中包含密碼和金鑰。
AM_CONFIG(或 antimatter 命令的 --config 旗標)接受檔案路徑或 postgres:// URL。未明確設定的項目將採用預設值。
若要將現有的設定從檔案遷移至資料庫,請在伺服器上執行此操作,然後將 AM_CONFIG 設定為相同的 URL 並啟動伺服器:
amctl --local config migrate /opt/antimatter/config/config.json \
"postgres://antimatter:PASSWORD@localhost:5432/antimatter?sslmode=disable&connect_timeout=10"
環境變數
任何設定也可以透過環境變數提供。環境變數優先於儲存的設定,因此非常適合用於屬於部署層級的內容:資料庫、網站 URL、檔案儲存、埠號。
命名規則
先寫 AM_,接著是區段,然後是金鑰,全部使用大寫字母並以底線分隔。區段或金鑰名稱內的單字之間不加分隔符:
| 設定 | 變數 |
|---|---|
ServiceSettings.SiteURL | AM_SERVICESETTINGS_SITEURL |
SqlSettings.DataSource | AM_SQLSETTINGS_DATASOURCE |
EmailSettings.SMTPServer | AM_EMAILSETTINGS_SMTPSERVER |
PrivacySettings.EnableUserBlocking | AM_PRIVACYSETTINGS_ENABLEUSERBLOCKING |
- 布林值設定使用
true或false;數字則直接使用數字。 - 清單類設定以空格分隔其值,例如
AM_SERVICESETTINGS_TRUSTEDPROXYIPHEADER="X-Forwarded-For X-Real-IP"。 - 物件類型的設定採用 JSON 格式。應用程式中唯一符合此類型的變數是
AM_PLUGINSETTINGS_PLUGINS,它會一次取代所有應用程式的設定:請改用系統控制台或amctl來設定應用程式設定(詳見下文)。 - 較舊的 Mattermost 設定使用
MM_前綴,例如MM_SQLSETTINGS_DATASOURCE。它仍作為遺留別名運作。當兩者皆設定時,AM_變數優先。
透過變數設定的項目在系統控制台中會被鎖定,並附註「此設定已透過環境變數設定,無法透過系統控制台變更。」它不會寫入儲存的設定中:移除該變數後,儲存的值將重新生效。
使用 Docker Compose
在 antimatter 服務的 environment: 下新增變數,或在 compose.yaml 旁邊放置 compose.override.yaml(Compose 會自動讀取它,且它能在下載檔案更新後保留):
services:
antimatter:
environment:
AM_EMAILSETTINGS_SMTPSERVER: smtp.example.com
AM_EMAILSETTINGS_SMTPPORT: "587"
AM_LOGSETTINGS_CONSOLELEVEL: INFO
使用 docker compose up -d 套用變更,這將重新建立容器。
應用程式讀取的變數
少數變數並非設定,且沒有對應的系統控制台欄位:AM_CONFIG(設定檔位置),以及 AM_AI_ENCRYPTION_KEY 和 AM_AI_ENCRYPTION_PREVIOUS_KEYS,用於加密模型連線的 API 金鑰(詳見 AI)。
少數應用程式會讀取設定在 antimatter 服務上的專屬變數:通話應用程式讀取 AM_CALLS_*(詳見 通話與語音),GIF 應用程式讀取 AM_GIFS_SERVICE_URL、AM_GIFS_API_KEY 和 AM_GIFS_UPLOAD_KEY(詳見 內建應用程式)。
系統控制台
系統控制台是網頁應用程式的管理區域,供系統管理員使用。要開啟它,請點擊應用程式側欄頂部的個人圖片並選擇系統控制台,或前往 https://chat.example.com/admin_console。其側邊欄有一個尋找設定框,可搜尋所有頁面。

其區段包括:
- 報告:統計資料和伺服器日誌。
- 使用者管理:使用者、群組、社群(列為團隊)、頻道、權限和委託管理。
- 系統屬性:自訂個人檔案屬性,以及基於屬性的存取控制。
- 環境:Web 伺服器、資料庫、檔案儲存、影像代理、SMTP、推送通知、速率限制、記錄、工作階段長度、效能監控。
- 網站設定:品牌、使用者與團隊、通知、貼文、檔案分享及其他伺服器層級行為。
- 驗證:註冊、電子郵件與密碼登入、MFA、AD/LDAP、SAML 2.0、OAuth 2.0、OpenID Connect 與訪客存取。
- AI:模型連線與內建 AI 功能(重寫、摘要、自動翻譯、文字轉語音)。請參閱 AI。
- 擴充程式:應用程式管理,以及每個已安裝應用程式的設定。
- 整合:Webhook、斜線指令、機器人帳號、GIF、文字轉語音、CORS。
- 規範:資料保留、合規匯出與監控、稽核記錄、自訂服務條款。
- 實驗性:可能變更的功能。
在本指南中,設定的寫法為其在系統控制台中的路徑,接著是其標籤,最後是其設定金鑰。例如 系統控制台 › 網站設定 › 使用者與團隊 › 啟用忽略、封鎖與訊息請求(PrivacySettings.EnableUserBlocking)。
大多數變更在您點擊 儲存 後立即生效。少數項目(例如監聽位址、部分資料庫與快取設定)需要重新啟動,頁面會加以說明。
工作場所或社群
每個社群都有一種類型,這會決定其部分預設值:
- 社群,適用於公開或興趣社群:其頻道中的通話功能關閉(人們在語音頻道中交談),且僅有管理員以及管理頻道的角色可以封存頻道。
- 工作場所,適用於公司或組織:其頻道中的通話功能開啟,且頻道的管理員(建立者及其指定的管理員)也可以封存該頻道。
系統控制台 › 網站設定 › 使用者與團隊 › 新社群的類型(TeamSettings.DefaultCommunityKind、AM_TEAMSETTINGS_DEFAULTCOMMUNITYKIND)是之後建立的社群的類型:community(預設值)或 workplace。建立社群時選擇的版面配置預設值會設定其自身的類型。每個社群的管理員之後可以在 團隊設定 › 頻道 › 社群類型 中變更其類型。
amctl 命令列工具
amctl 可從命令列管理伺服器:使用者、社群、頻道、應用程式、設定、工作等。它透過兩種方式之一與伺服器通訊。
本機模式,在伺服器上
本機模式讓 amctl 透過 Unix socket 與伺服器通訊,無需登入。Docker 映像檔以及 .deb 和 .rpm 套件預設已啟用此模式。若伺服器是從檔案安裝的,請使用 ServiceSettings.EnableLocalMode(AM_SERVICESETTINGS_ENABLELOCALMODE=true)來啟用。Socket 預設路徑為 /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 的人,都擁有完整的系統管理員權限。遠端,使用帳戶
從任何機器,使用系統管理員帳戶(或個人存取權杖)登入,然後對該伺服器執行指令:
amctl auth login https://chat.example.com --name prod --username admin
amctl system status
設定指令
| 指令 | 功能說明 |
|---|---|
amctl config get ServiceSettings.SiteURL | 印出一個設定值。 |
amctl config set TeamSettings.EnableOpenServer false | 變更一個設定值。清單類型的設定可接受多個值。 |
amctl config patch settings.json | 將 JSON 檔案中的設定合併至現有設定中。 |
amctl config show | 以 JSON 格式印出完整設定。 |
amctl config edit | 在您的編輯器中開啟設定($EDITOR)。 |
amctl config reset | 將設定重設為預設值。 |
amctl config reload | 在伺服器外部進行變更後,從儲存位置重新載入設定。 |
應用程式設定位於 PluginSettings.Plugins.<app id> 之下,金鑰使用小寫。例如,要在 Docker 主機上設定 GIFs 應用程式的服務 URL 和金鑰:
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
其他實用指令:amctl user create、amctl user deactivate、amctl team create、amctl plugin list、amctl plugin enable、amctl system supportpacket 以及 amctl logs。對每個指令執行 amctl help <command> 以查看其選項。
記錄
伺服器會將其記錄寫入兩個位置,每個位置都有各自的層級(DEBUG、INFO、WARN 或 ERROR),設定於 系統控制台 › 環境 › 記錄:
| 目的地 | 設定 | 預設值 |
|---|---|---|
| 主控台(標準輸出) | 將紀錄內容輸出到控制台(LogSettings.EnableConsole)、控制台記錄等級(LogSettings.ConsoleLevel)、以 JSON 格式輸出控制台記錄(LogSettings.ConsoleJson) | on、DEBUG、JSON |
檔案 antimatter.log | 將紀錄內容輸出到檔案(LogSettings.EnableFile)、檔案記錄等級(LogSettings.FileLevel)、記錄檔目錄(LogSettings.FileLocation) | on、INFO、位於 bin/ 旁的 logs/ 目錄 |
記錄檔在達到 100 MB 時會進行輪替,舊的記錄檔會被壓縮。
該站點的 compose 檔案已停用檔案記錄(AM_LOGSETTINGS_ENABLEFILE=false),因此記錄僅存在於容器的輸出中:
docker compose logs -f antimatter
docker compose logs --since 1h antimatter | grep -i error
控制台記錄等級預設為 DEBUG,這相當詳細。在繁忙的伺服器上,請設定 AM_LOGSETTINGS_CONSOLELEVEL=INFO。發行版壓縮檔與套件中的 config.json 已將其設定為 INFO。若在 systemd 下使用發行版壓縮檔,控制台輸出會進入 journal(journalctl -u antimatter),而檔案記錄則位於 /opt/antimatter/logs/antimatter.log。套件已停用檔案記錄,因此其記錄僅存在於 journal 中。
當檔案記錄啟用時,系統管理員也可以在系統控制台 › 報告 › 伺服器記錄中查看最新的記錄行,或使用 amctl logs。