設定

Antimatter が設定を保存する場所、設定を変更する 3 つの方法 (システムコンソール、環境変数、amctl)、ログの保存場所。

設定の保存場所

すべてのサーバー設定には、セクション名とキー名からなる名前があります。例えば ServiceSettings.SiteURL や EmailSettings.SMTPServer などです。これらが組み合わさって 1 つの設定となり、以下の 2 つの場所のいずれかに保存されます。

  • データベース内。 サイトの compose ファイルで AM_CONFIG に PostgreSQL の接続 URL を設定すると、設定はデータベース内の 1 行として保存され、コンテナはディスク上に何も保持しません。1 つのデータベースを共有する複数のサーバーは、設定も共有します。
  • ファイルによる設定。AM_CONFIGが設定されていない場合、サーバーはbin/ディレクトリ(Dockerイメージでは/antimatter/config/config.json)の隣にある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.SiteURLAM_SERVICESETTINGS_SITEURL
SqlSettings.DataSourceAM_SQLSETTINGS_DATASOURCE
EmailSettings.SMTPServerAM_EMAILSETTINGS_SMTPSERVER
PrivacySettings.EnableUserBlockingAM_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サービスに設定された独自の環境変数を読み取ります。CallsアプリはAM_CALLS_*を読み取ります(通話と音声を参照)、GIFsアプリはAM_GIFS_SERVICE_URL、AM_GIFS_API_KEY、AM_GIFS_UPLOAD_KEYを読み取ります(バンドルアプリを参照)。

システムコンソール

システムコンソールはWebアプリの管理領域で、システム管理者向けです。開くには、アプリレールの上部にある自分のプロフィール画像をクリックし、システムコンソールを選択するか、https://chat.example.com/admin_consoleにアクセスしてください。サイドバーには、すべてのページを検索できる設定の検索ボックスがあります。

The System Console, with its sidebar of sections on the left and the SAML 2.0 settings page on the right.
システムコンソール。サイドバーは、レポート、ユーザー管理、環境などのセクションにページをグループ化しています。

セクションは以下の通りです:

  • レポート:統計情報とサーバーログ。
  • ユーザー管理:ユーザー、グループ、コミュニティ(チームとしてリスト表示)、チャンネル、権限、および委任管理。
  • システム属性:カスタムプロフィール属性と属性ベースのアクセス制御。
  • 環境: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。コミュニティ作成時にレイアウトプリセットを選択すると、それに応じて種類が設定されます。各コミュニティの管理者は、チーム設定 › チャンネル › コミュニティの種類で後から種類を変更できます。

企業向けの場合は、最初のコミュニティを作成する前、または既存のサーバーを0.9.0にアップグレードする前に、ワークプレイスに設定してください。アップグレードにより、その時点での設定値がすべての既存コミュニティに適用されます(0.9.0へのアップグレードを参照)。

amctl コマンドラインツール

amctl はコマンドラインからサーバーを管理します: ユーザー、コミュニティ、チャンネル、アプリ、設定、ジョブなど。サーバーとの通信は2つの方法のいずれかで行います。

ローカルモード(サーバー上)

ローカルモードでは、amctlがサインインせずにUnixソケット経由でサーバーと通信できます。Dockerイメージおよび.debと.rpmパッケージでは、このモードが有効になっています。アーカイブからインストールしたサーバーでは、ServiceSettings.EnableLocalMode(AM_SERVICESETTINGS_ENABLELOCALMODE=true)を有効にしてください。ソケットのデフォルトの場所は/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.SiteURL1つの設定を表示します。
amctl config set TeamSettings.EnableOpenServer false1つの設定を変更します。リスト形式の設定は複数の値を受け取ります。
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> を実行してください。

ログ

サーバーはログを2つの場所に出力します。それぞれに独自のレベル(DEBUG、INFO、WARNまたはERROR)が設定されており、システムコンソール › 環境 › ログで設定します。

出力先設定デフォルト値
コンソール(標準出力)ログをコンソールに出力する(LogSettings.EnableConsole)、コンソールログレベル(LogSettings.ConsoleLevel)、コンソールログをJSONで出力する(LogSettings.ConsoleJson)オン、DEBUG、JSON
ファイル(antimatter.log)ログをファイルに出力する(LogSettings.EnableFile)、ファイルログレベル(LogSettings.FileLevel)、ログファイルの出力ディレクトリー(LogSettings.FileLocation)オン、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下でリリースアーカイブを使用する場合、コンソール出力はジャーナル(journalctl -u antimatter)に、ファイルは/opt/antimatter/logs/antimatter.logに記録されます。パッケージではファイルログが無効化されているため、ログはジャーナルにのみ記録されます。

ファイルへのログ出力がオンになっている場合、システム管理者はシステムコンソール › レポート › サーバーログまたはamctl logsコマンドで、最新のログ行を読み取ることができます。