Antimatterのインストール

用意された compose ファイル、リリースの .deb または .rpm パッケージ、またはリリースアーカイブから Antimatter をインストールします。その後、最初の管理者アカウントを作成します。

Docker Composeでのインストール

これが推奨される方法です。1つのcomposeファイルでAntimatter、PostgreSQL、ファイルストレージ、GIFサービスを実行します。Docker EngineとそのComposeプラグイン(docker compose)がインストールされたLinuxサーバー、2つのCPUコア、4GB以上のメモリが必要です。

1. composeファイルをダウンロード

mkdir antimatter && cd antimatter
curl -fsSLO https://antimatter.chat/compose.yaml

2. .envファイルを作成

composeファイルは、同じディレクトリ内の.envファイルから設定を読み込みます。ランダムなシークレットを使用して作成します:

cat > .env <<EOF
SITE_URL=http://localhost:8065
POSTGRES_PASSWORD=$(openssl rand -hex 24)
S3_SECRET_KEY=$(openssl rand -hex 24)
GIFS_API_KEY=$(openssl rand -hex 24)
AM_AI_ENCRYPTION_KEY=$(openssl rand -base64 32)
EOF
chmod 600 .env

SITE_URL を、ユーザーがブラウザに入力するアドレスに設定します。ローカルネットワークでは http://192.168.1.20:8065 のように、ドメインを使用する場合は https://chat.example.com のように設定します。.env ファイルは保持してください。データベースとストレージは初回起動時のこれらのパスワードを使用し、AI モデル接続の API キーは AM_AI_ENCRYPTION_KEY で暗号化されます。バックアップを復元する際にも同じファイルが必要です。

3. 起動

docker compose up -d
docker compose ps

初回起動には1〜2分かかります。PostgreSQLがデータベースを作成し、ワンショットのbucketサービスがストレージバケットを作成し、ワンショットのgifs-stickersサービスがスターター用ステッカーパックをインポートし、Antimatterがテーブルを作成します。docker compose logs -f antimatterで進捗を追跡できます。

ドメイン名とHTTPSを最初から使用するには、ドメインとHTTPSを参照してください。composeファイルを使用する場合、.envに2行追加し、httpsプロファイルを使用します。

.envの変数

変数デフォルト値機能
SITE_URL必須Antimatterの公開アドレス(ServiceSettings.SiteURL)。
POSTGRES_PASSWORD必須antimatterデータベースユーザーのパスワード。
S3_SECRET_KEY必須ファイルストレージのシークレットキー。
GIFS_API_KEY必須AntimatterがGIFサービスを呼び出す際に使用するキー。
AM_AI_ENCRYPTION_KEY空AI モデル接続の API キーを暗号化するキー(openssl rand -base64 32)。空の場合:サーバーが data ボリューム内にキーファイルを作成します。暗号化キーを参照してください。
GIFS_UPLOAD_KEY空ピッカーからユーザーが独自の GIF やステッカーを追加し、削除できるようにします。空にするとアップロードが無効になります。
DOMAIN空httpsプロファイル用のドメイン名。
HTTP_PORT8065AntimatterのWebサーバーのホストポート。
CALLS_PORT8443通話の音声と動画のUDPおよびTCPポート。
EDGE_SUBNET172.29.71.0/28CaddyとAntimatter間のネットワークのサブネット。既存のネットワークと重複する場合は変更してください。
TZUTCコンテナのタイムゾーン。
ANTIMATTER_IMAGEghcr.io/antimatterchat/antimatter-next:latest実行するAntimatterイメージ(下記参照)。

実行されるもの

サービスイメージ役割
antimatterghcr.io/antimatterchat/antimatter-nextサーバー、Web アプリ、およびバンドルされたアプリ。HTTP_PORT と CALLS_PORT を公開します。そのデータディレクトリは data ボリュームです。
postgrespostgres:17-alpinepostgresボリューム内のデータベース。
filesrustfs/rustfsアップロードされたファイルとインストールされたアプリ用の S3 互換ストレージ。 files ボリュームに配置されます。
bucketamazon/aws-cliantimatter バケットを作成して終了します。
gifsghcr.io/antimatterchat/gifs-serverGIF とステッカーサービス。 gifs ボリュームに配置されます。
gifs-stickersghcr.io/antimatterchat/gifs-server初回実行時にスターターステッカーパックをインポートして終了します。
httpscaddy:2-alpinehttps プロファイルでのみ有効: ポート 80 と 443 で HTTPS を提供します。

PostgreSQL、ストレージ、GIF サービスはインターネットにアクセスできない内部ネットワーク (private) に配置され、Antimatter のみが参加します。これらはいずれもポートを公開しません。

Antimatter コンテナはディスク上に何も保持しません:設定はデータベースにあり(AM_CONFIG がそれを指します)、ファイルとアプリはストレージサービスにあります。コンテナはいつでも削除して再作成できます。その data ボリュームには、AM_AI_ENCRYPTION_KEY が空の場合にサーバーが作成する AI 暗号化キーファイルのみが含まれます。バックアップが必要なものはすべて postgres、files、gifs、data ボリューム、および .env ファイルにあります。

イメージの選択

公開されている Antimatter イメージは 2 つあり、どちらも linux/amd64 と linux/arm64 に対応し、すべてのリポジトリの main ブランチからビルドされています。

イメージバンドルアプリタグ
ghcr.io/antimatterchat/antimatterエージェント、通話、GitHub、GitLab、Jira、Kanban、メトリクス、プレイブック。latest、リリース用の X.Y.Z、sha-<commit>
ghcr.io/antimatterchat/antimatter-next上記に加え、音声チャンネル、投票、メール、カレンダー、メモ、ホワイトボード、GIF、ToDo、ミーム。毎夜再ビルドされます。latest, nightly, nightly-<YYYYMMDD>, sha-<commit>

このサイトの compose ファイルは antimatter-next を使用しています。GIF サービスやこのサイトで説明されているほとんどのアプリは、このイメージにのみ含まれるためです。イメージを変更するには、.env で ANTIMATTER_IMAGE を設定し、docker compose up -d を実行してください。

latest は予告なく変更される可能性があります。本番環境では、nightly-20261015 や sha-<commit> のようなタグを固定し、アップグレード時に意図的に変更してください。サーバーは起動時にデータベースをアップグレードするため、以前のバックアップを復元しない限り、古いイメージに戻したり、antimatter-next から antimatter に切り替えたりすることはできません。詳細は バックアップとアップグレード を参照してください。

イメージの内容

  • サーバーは /antimatter に配置され、antimatter と amctl のバイナリは /antimatter/bin にあります (PATH に含まれます)。
  • シェルなしの最小構成 distroless ベース上で、非特権ユーザー antimatter (uid 2000) として実行されます。
  • ポート: 8065 (Web と API)、8067 (メトリクス)、8074 (クラスター)、8443 UDP と TCP (通話)。
  • ローカルモード(ServiceSettings.EnableLocalMode)がオンになっているため、コンテナ内で amctl --local が使用できます。ヘルスチェックでは amctl system status --local が実行されます。
  • バンドルされているアプリは /antimatter/prepackaged_plugins にあり、Antimatter のアプリ署名キーで署名されています。
  • テキスト抽出ツール(pdftotext、wvText、unrtf、tidy)が含まれているため、アップロードされたドキュメントの内容を検索できます。

その他の compose ファイル

antimatter-docker リポジトリには、deploy/compose/ に本番環境向けのセットアップが含まれています。nginx(独自の証明書または Let's Encrypt (certbot))、PostgreSQL、オプションの GIF サービス(プロファイル gifs)、およびサーバーの設定・データ・ログ用の名前付きボリュームが用意されており、README に記載されています。デフォルトでは安定版イメージを使用し、S3 ストレージではなくローカルボリュームにファイルを保存します。Caddy の代わりに nginx を使用したい場合や、すでに証明書を持っている場合に使用してください。

最初の管理者の作成

ブラウザで SITE_URL を開き、アカウントを作成します。新しいサーバーで最初に作成されたアカウントがシステム管理者になります。その後、セットアップに従って最初のコミュニティ(Antimatter ではチームまたはワークスペースを指す名称)を作成します。

初回起動直後に実行してください。それまで、最初にサーバーにアクセスした人が管理者になってしまいます。サーバーが外部から到達可能になる前に、コマンドラインからアカウントを作成するには:

docker compose exec antimatter amctl --local user create --system-admin --email-verified \
    --email admin@example.com --username admin --password 'a-long-password'
docker compose exec antimatter amctl --local team create --name main --display-name "Main"
docker compose exec antimatter amctl --local team users add main admin

その後、SITE_URL でサインインします。コマンドの先頭にスペースを付けて開始すると、シェル履歴にパスワードが記録されなくなります(HISTCONTROL=ignorespace の場合)、またはサインイン後にパスワードを変更してください。

ログイン後の次のステップ:

  1. 企業や組織の場合、新しいコミュニティの種類 を ワークプレイス に設定し、すでに作成したコミュニティの種類はその設定で変更します:ワークプレイスまたはコミュニティ。
  2. アカウントを作成できるユーザーを決定します: サインインとアカウント。
  3. 招待やパスワードリセットが機能するように、メールを設定します: メールとプッシュ通知。
  4. ファイアウォールで通話用のポートを開きます: 通話と音声。
  5. 有効なアプリを確認します: バンドルされたアプリ。

リリースをダウンロード

Docker を使わずに、GitHub のリリースファイルから Antimatter をインストールします:github.com/AntimatterChat/antimatter/releases。各リリースには 0.9.0 のようなバージョン番号があり、そのタグは同じ番号の前に v を付けたもの(v0.9.0)です。

Antimatterはベータ版です。リリースは0.9.0シリーズです。ハイフンの後にサフィックスが付いたバージョン(例: 0.9.0-rc.1)のリリースは、GitHub上でPre-releaseとしてマークされます。これは最終リリースの前に公開されるテストバージョンです。

各リリースには、amd64およびarm64サーバー向けに以下のファイルが含まれます。

ファイル内容
antimatter_<version>-1_amd64.deb, antimatter_<version>-1_arm64.debDebian、Ubuntu、およびそれらのベースとなるディストリビューション向けのパッケージ。
antimatter-<version>-1.x86_64.rpm, antimatter-<version>-1.aarch64.rpmFedora、RHEL、およびRHEL互換のディストリビューション向けのパッケージ。
antimatter-<version>-linux-amd64.tar.gz, antimatter-<version>-linux-arm64.tar.gzあらゆるLinuxディストリビューション向けの手動セットアップ用のリリースアーカイブ。
SHA256SUMSリリースの全ファイルのSHA-256チェックサム。

パッケージとアーカイブには同じプログラムが含まれています。サーバー(antimatter)、コマンドラインツール(amctl)、両方のWebアプリ(デフォルトのインターフェースとクラシック版)、バンドルされたアプリ、メールテンプレート、翻訳ファイルです。パッケージにはsystemdサービスと設定ファイルが追加されているため、それぞれがオールインワンのインストールになります。PostgreSQLデータベースを追加するだけで済みます。個別のバイナリダウンロードはありません。バイナリはアーカイブ内のantimatter/bin/にあります。静的リンクされているため、そのアーキテクチャを持つあらゆるLinuxディストリビューションで実行できます。

パッケージ名では、プレリリースバージョンのハイフンはチルダに置き換えられ、パッケージマネージャーがプレリリースを最終リリースより前にソートできるようにしています。バージョン0.9.0-rc.1の場合、antimatter_0.9.0~rc.1-1_amd64.debおよびantimatter-0.9.0~rc.1-1.x86_64.rpmとなります。アーカイブではハイフンのままです。

antimatter versionは、リリースバージョンをビルド番号として、ビルド元のコミットをビルドハッシュとして出力します。バージョン行は、AntimatterがベースとしているMattermostラインのバージョンです。

ダウンロードの確認

必要なファイルとSHA256SUMSをリリースページから、またはcurlを使用して同じディレクトリにダウンロードし、ファイルを照合します。

curl -fLO https://github.com/AntimatterChat/antimatter/releases/download/v<version>/antimatter_<version>-1_amd64.deb
curl -fLO https://github.com/AntimatterChat/antimatter/releases/download/v<version>/SHA256SUMS
sha256sum --check --ignore-missing SHA256SUMS

ダウンロードした各ファイルがOKとしてリストアップされている必要があります。それ以外の結果は、ファイルが破損または不完全であることを意味します。再ダウンロードし、インストールしないでください。SHA256SUMSには署名がありません。破損したダウンロードを検出できますが、GitHubからのHTTPSダウンロードが証明する以上のことを証明するものではありません。

.debまたは.rpmパッケージのインストール

パッケージはAntimatterをsystemdサービスとしてインストールします。起動にはデータベースのみが必要です。systemdを搭載した64ビットのDebian、Ubuntu、Fedora、またはRHEL互換サーバーでご利用ください。

パッケージがインストールする内容

パス内容
/opt/antimatterプログラム本体: bin/antimatter、bin/amctl、Webアプリ(client/、client-fusion/)、バンドルされたアプリ(prepackaged_plugins/)、テンプレート、翻訳ファイル、フォント。アップグレード時にこれらは置き換えられます。
/etc/antimatter/antimatter.envサービスの設定(AM_変数): データベース、サイトURL、GIFサービス。rootのみが読み取れます。アップグレード後も保持されます。
/etc/antimatter/config/config.json設定ファイル。サーバーがシステムコンソールで変更した設定を保存します。初回インストール時に /opt/antimatter/defaults/config.json から作成され、以降は置き換えられません。
/var/lib/antimatterアップロードされたファイル(data/)とインストールされたアプリ(plugins/、client-plugins/)。
/var/log/antimatterログファイル(ファイルログを有効にした場合)。デフォルトでは無効で、ログはジャーナルに出力されます。
/usr/lib/systemd/system/antimatter.serviceサービス。
/usr/bin/amctl/opt/antimatter/bin/amctl へのシンボリックリンク。

サーバーが /opt/antimatter 内に書き込むディレクトリ(config、data、plugins、client/plugins、logs)は、それぞれ /etc/antimatter、/var/lib/antimatter、/var/log/antimatter へのシンボリックリンクです。そのため、/opt/antimatter を置き換えるアップグレードでも、データには影響しません。パッケージは、サーバーを実行しこれらのディレクトリの所有者となるシステムユーザー antimatter も作成します。

パッケージは ca-certificates に依存します。PostgreSQL(DebianおよびUbuntuでは postgresql、FedoraおよびRHELでは postgresql-server)、media-types(.rpmの場合は mailcap)、GIFサービスである gifs-server(独自のリリースがあります。詳細は下記参照)を推奨しています。aptおよびdnfは、これらの推奨パッケージが見つかった場合にインストールします。また、poppler-utils、wv、unrtf、tidy(.rpmには wv は含まれません)を提案しています。これらはアップロードされたドキュメントからテキストを抽出し、検索時にその中の単語を見つけられるようにします。この機能が必要であれば、ご自身でインストールしてください。

1. パッケージのインストール

お使いのアーキテクチャに対応するAntimatterパッケージとGIFサービスパッケージをダウンロードし、上記の手順で検証したのち、gifs-server の推奨要件を満たすように(ディストリビューションのリポジトリには含まれていないため)、両方を1つのコマンドでインストールします:

# Debian, Ubuntu
sudo apt install ./antimatter_<version>-1_amd64.deb ./gifs-server_*_amd64.deb
# Fedora, RHEL
sudo dnf install ./antimatter-<version>-1.x86_64.rpm ./gifs-server-*.x86_64.rpm

./は保持してください。これにより、aptおよびdnfがローカルファイルをインストールすることが指示されます。GIFサービスなしでインストールする場合は、そのパッケージを除外してください。このパッケージはantimatterサービスを有効化しますが、起動は行わず、次の手順を表示します。

2. データベースの作成

Antimatterには、このサーバー上または別のサーバー上のPostgreSQL 15以降が必要です。psql --versionでディストリビューションのPostgreSQLのバージョンを確認してください。古いバージョンの場合は、PostgreSQLプロジェクトの公式リポジトリから新しいバージョンをインストールするか、別のサーバー上のデータベースを使用してください。DebianおよびUbuntuでは、postgresqlパッケージがデータベースを起動します。FedoraおよびRHELでは、まず作成して起動してください:

sudo postgresql-setup --initdb
sudo systemctl enable --now postgresql

次に、Antimatter用のユーザーとデータベースを作成します:

sudo -u postgres psql -c "CREATE USER antimatter WITH PASSWORD 'a-long-password'"
sudo -u postgres psql -c "CREATE DATABASE antimatter OWNER antimatter"

PostgreSQLは127.0.0.1からのパスワード認証接続を受け入れる必要があります。pg_hba.confファイルのhost行に、scram-sha-256メソッドを指定してください。

3. データベースとサイトURLの設定

/etc/antimatter/antimatter.envを編集します(sudoedit /etc/antimatter/antimatter.env)。使用する行の先頭の#を削除し、データベースとユーザーがアクセスするアドレスを設定します:

AM_SQLSETTINGS_DRIVERNAME=postgres
AM_SQLSETTINGS_DATASOURCE=postgres://antimatter:a-long-password@localhost:5432/antimatter?sslmode=disable&connect_timeout=10
AM_SERVICESETTINGS_SITEURL=https://chat.example.com

このファイルには、AM_<SECTION>_<SETTING>という形式で、設定の任意の項目を記述できます。例えば、SqlSettings.DataSourceはAM_SQLSETTINGS_DATASOURCEとなります。ここで設定された項目は、システムコンソールから変更できません。設定を参照してください。各変更後はサーバーを再起動してください:sudo systemctl restart antimatter。

サービスは一部のデフォルト値も設定しますが、antimatter.env内の行によって上書きできます。ファイルへのログ出力はオフ(AM_LOGSETTINGS_ENABLEFILE=false、AM_NOTIFICATIONLOGSETTINGS_ENABLEFILE=false)、ローカルモードはオン(AM_SERVICESETTINGS_ENABLELOCALMODE=true)に設定されており、これによりサーバー上でamctl --localが動作します。

4. 起動

sudo systemctl start antimatter
journalctl -u antimatter -f
sudo -u antimatter amctl --local system status

初回起動時、サーバーはテーブルを作成し、ポート8065でリッスンします。http://<server>:8065、またはリバースプロキシを設定した場合はドメイン名(ドメインとHTTPS)を開き、すぐに最初のアカウントを作成してください。このアカウントがシステム管理者になります。コマンドラインから作成する場合は、最初の管理者の作成のamctlコマンドを使用し、docker compose exec antimatter amctl --localの代わりにsudo -u antimatter amctl --localを使用します。

5. GIFを有効にする

GIFアプリはバンドルされており、すでに有効になっています。antimatter.envは、同じサーバー上のGIFサービス(AM_GIFS_SERVICE_URL=http://127.0.0.1:8080/v2)を指すよう設定されています。ただし、サービスのAPIキーが必要です。gifs-serverパッケージはインストール時に1つ生成しました:

sudo systemctl start gifs-server-stickers    # imports the sticker pack, about a minute and a half
sudo systemctl start gifs-server
sudo grep -v '^#' /etc/gifs-server/api-keys

キーをantimatter.envにAM_GIFS_API_KEY=<key>として設定しAntimatterを再起動するか、システムコンソール › プラグイン › GIFのAPIキー欄に入力してください。GIFサービスが別のサーバーで実行されている場合は、AM_GIFS_SERVICE_URLをそのアドレスに設定します。ユーザーが独自のGIFやステッカーを追加できるようにするには、GIFを参照してください。

サービス

  • サービスはantimatterユーザーとして/opt/antimatter内で実行され、/etc/antimatter/antimatter.envを読み込みます。systemdはサーバーが終了するたびに再起動し、新しいバージョンのデータベースマイグレーションに時間がかかる可能性があるため、最大1時間の起動猶予を与えます。
  • ログはジャーナルにあります:journalctl -u antimatter。
  • サービスは強化されています:/usrと/etcはサーバーに対して読み取り専用(/etc/antimatter/configを除く)であり、/home、/root、/run/userは参照できません。ファイルストレージ(FileSettings.Directory)を移動する場合は、これらのディレクトリ外にあり、antimatterが所有者であるディレクトリを選択してください。
  • アップグレード時にサービスファイルは置き換えられます。変更する場合は、sudo systemctl edit antimatterを使用してください。これにより、変更内容は別のファイルに保存されます。

パッケージのアップグレード

  1. バックアップを取得してください(バックアップとアップグレードを参照)。
  2. 新しいパッケージとSHA256SUMSをダウンロードし、検証してください。
  3. サーバーを停止し、古いパッケージの上に新しいパッケージをインストールして、再度起動します:
    sudo systemctl stop antimatter
    sudo apt install ./antimatter_<new version>-1_amd64.deb     # or: sudo dnf install ./antimatter-<new version>-1.x86_64.rpm
    sudo systemctl start antimatter
    journalctl -u antimatter -f

このパッケージはサーバー自体を再起動しません。アップグレード後、Antimatter was upgraded; restart it to run the new version: sudo systemctl restart antimatter が出力されます。事前にサーバーを停止していなかった場合は、すぐに再起動してください。アップグレードにより /opt/antimatter とサービスファイルが置き換えられ、antimatter.env、config.json、/var/lib/antimatter およびログは保持されます。サーバーが起動すると、データベースがアップグレードされ、バンドルされているアプリの新しいバージョンがインストールされます。

新しいバージョンでデフォルトの antimatter.env が変更された場合、apt は既存のバージョンを保持するかどうかを尋ねます。その場合は保持してください。dnf は既存のファイルを保持し、新しいファイルを /etc/antimatter/antimatter.env.rpmnew として保存します。アップグレードは前方互換のみです。新しいバージョンの上に古いバージョンをインストールしないでください。

パッケージの削除

sudo apt remove antimatter または sudo dnf remove antimatter を実行すると、サービスが停止・無効化され、プログラムが削除されます。データ(/var/lib/antimatter)、設定(/etc/antimatter)、データベース、および antimatter ユーザーは保持されます。Antimatter を完全に削除するには、これらを自分で削除してください。

パッケージとアーカイブに含まれるアプリ

パッケージとアーカイブには、prepackaged_plugins/ にこれらのアプリの最新署名済みリリースが含まれています:Agents、Calls、GIFs、Memes、Notes、Polls、Todo、Voice Channels、Whiteboard。サーバーリリースの構築時点でリリースがまだ行われていないアプリは除外されます:ls /opt/antimatter/prepackaged_plugins を実行すると、お使いのリリースに含まれるアプリを確認できます。Memes と Todo は含まれていますが、デフォルトでは無効化されています:Bundled apps で、それらのインストールと有効化の方法を説明しています。

Docker イメージに含まれる他のアプリは、パッケージやアーカイブには含まれません:Kanban、Playbooks、Mail、Calendar、GitHub、GitLab、Jira、Metrics。それぞれを個別のリリースからインストールしてください:

アプリリリースアプリID
Kanbanantimatter-plugin-boardsfocalboard
プレイブックantimatter-plugin-playbooksplaybooks
メールantimatter-plugin-mailcom.antimatterchat.mail
カレンダーantimatter-plugin-calendarcom.antimatterchat.calendar
GitHubantimatter-plugin-githubgithub
GitLabantimatter-plugin-gitlabcom.github.manland.mattermost-plugin-gitlab
Jiraantimatter-plugin-jirajira
メトリクスAntimatter-plugin-metricscom.mattermost.mattermost-plugin-metrics

各アプリのリリースには、アプリのバンドル(.tar.gz ファイル)、その署名(同名に .sig を付加したもの)、および SHA256SUMS ファイルが含まれます。アプリをインストールするには、アップロードを許可してから、amctl でバンドルを追加します。

# 1. In /etc/antimatter/antimatter.env, add this line, then restart Antimatter
AM_PLUGINSETTINGS_ENABLEUPLOADS=true
sudo systemctl restart antimatter
# 2. Download the bundle where the antimatter user can read it, and install it
cd /tmp
curl -fLO https://github.com/AntimatterChat/antimatter-plugin-boards/releases/download/v<version>/<bundle>.tar.gz
sudo -u antimatter amctl --local plugin add <bundle>.tar.gz
sudo -u antimatter amctl --local plugin enable focalboard

この方法でインストールしたアプリをアップグレードするには、plugin add --force で新しいバンドルを追加します。パッケージのアップグレードでは、バンドルされたアプリのみがアップグレードされます。その後、AM_PLUGINSETTINGS_ENABLEUPLOADS の行を削除できます。アプリをインストールする他の方法については、その他のアプリのインストール を参照してください。

アプリの署名

アプリのバンドルは Antimatter のアプリ署名キーで署名されています。各 .tar.gz.sig ファイルは、そのバンドルの分離型 GPG 署名です。サーバーは、バンドルされたアプリをインストールする前にこれらの署名を確認します。バンドルを自分で確認するには:

curl -fsSLO https://raw.githubusercontent.com/AntimatterChat/antimatter-docker/main/keys/antimatter-plugin-signing.asc
gpg --import antimatter-plugin-signing.asc
gpg --verify <bundle>.tar.gz.sig <bundle>.tar.gz

gpg は、Antimatter Plugin Signing からの正常な署名を報告する必要があります。フィンガープリントは 06C8 1032 4677 0F08 BBA7 78B9 E69B 05C3 92A6 9A45 です。また、キーが信頼できる署名で認証されていないという警告が表示されますが、これは自分で署名していないキーの場合に正常な現象です。.sig ファイルがないアプリのリリースは未署名であり、そのリリースノートにもその旨が記載されています。

リリースアーカイブからのインストール

アーカイブ antimatter-<version>-linux-<arch>.tar.gz(例:antimatter-0.9.0-linux-amd64.tar.gz)は、.deb または .rpm パッケージがないディストリビューション、または独自のレイアウトに適しています。単一の antimatter/ ディレクトリが含まれており、その中には bin/antimatter、bin/amctl、config/config.json、Web アプリ(client/ および client-fusion/)、バンドルされたアプリ(prepackaged_plugins/、上記を参照)、メールテンプレート、翻訳ファイルが含まれています。

1. PostgreSQL の準備

Antimatter は PostgreSQL のみサポートしており、バージョン 15 以降が必要です(古いバージョンでは起動できますが、ログにエラーが出力されます)。ユーザーとデータベースを作成します:

sudo -u postgres psql <<'EOF'
CREATE USER antimatter WITH PASSWORD 'a-long-password';
CREATE DATABASE antimatter OWNER antimatter;
EOF

2. 展開と設定

sudo tar -xzf antimatter-<version>-linux-amd64.tar.gz -C /opt
sudo useradd --system --user-group antimatter
sudo mkdir -p /opt/antimatter/data
sudo chown -R antimatter:antimatter /opt/antimatter

サーバーをデータベースに接続します。/opt/antimatter/config/config.json(SqlSettings.DataSource)または環境変数を使用します。また、サイト URL を設定します:

AM_SQLSETTINGS_DRIVERNAME=postgres
AM_SQLSETTINGS_DATASOURCE=postgres://antimatter:a-long-password@localhost:5432/antimatter?sslmode=disable&connect_timeout=10
AM_SERVICESETTINGS_SITEURL=https://chat.example.com

アーカイブ内の config.json は完全なデフォルト設定です。システムコンソールで変更した設定は、このファイルに保存されます。代わりにデータベースに設定を保存する場合は、設定を参照してください。

3. サービスとして実行

systemd ユニットを /etc/systemd/system/antimatter.service に配置します:

[Unit]
Description=Antimatter
After=network.target postgresql.service

[Service]
Type=notify
User=antimatter
Group=antimatter
WorkingDirectory=/opt/antimatter
ExecStart=/opt/antimatter/bin/antimatter
EnvironmentFile=-/etc/antimatter.env
TimeoutStartSec=3600
Restart=always
RestartSec=10
LimitNOFILE=49152

[Install]
WantedBy=multi-user.target

AM_ で始まる環境変数を /etc/antimatter.env に配置します(root のみ読み取り可能)。その後、以下を実行します:

sudo systemctl daemon-reload
sudo systemctl enable --now antimatter
journalctl -u antimatter -f

サーバーはポート 8065 で待ち受けています。http://<server>:8065 を開くか、リバースプロキシを設定した場合はドメイン名を使用します(ドメインと HTTPSを参照)。最初のアカウントを作成すると、それがシステム管理者になります。

bin/amctl はコマンドラインから実行中のサーバーを管理します。サーバー本体では、ローカルモードによりサインインなしで動作します:AM_SERVICESETTINGS_ENABLELOCALMODE=true を設定し、sudo -u antimatter /opt/antimatter/bin/amctl --local system status を実行します。

GIF の場合、GIF サービスをインストールし(下記を参照)、パッケージの手順 5 に従って AM_GIFS_SERVICE_URL と AM_GIFS_API_KEY を設定します。

GIF サービスとプッシュプロキシのパッケージ

GIFサービスとプッシュプロキシには、サーバーと同じルールでリリースが行われます。.tar.gzアーカイブ、amd64およびarm64向けの.debと.rpmパッケージ、そしてSHA256SUMSファイルです。ハイフンを含むバージョンはプレリリースです。サーバーと同様に、sha256sum --check --ignore-missing SHA256SUMSでダウンロードを確認してください。

GIFサービス (gifs-server)

リリース: github.com/AntimatterChat/gifs-server/releases。アーカイブはgifs-server-<version>-linux-<arch>.tar.gzです。パッケージ名はgifs-serverです。

sudo apt install ./gifs-server_*_amd64.deb      # Debian, Ubuntu
sudo dnf install ./gifs-server-*.x86_64.rpm     # Fedora, RHEL

パッケージには以下がインストールされます:

  • /usr/bin/gifs-server、およびgifs-serverサービス。このサービスはgifs-serverユーザーとして実行され、カタログを/var/lib/gifs-serverに保持します;
  • gifs-server-stickersサービス。起動時に/usr/share/gifs-server/stickers内のステッカーパックをインポートまたは更新し、その後停止します;
  • 設定ファイル/etc/gifs-server/gifs-server.env(AM_GIFS_変数。アップグレード時に保持されます)と/etc/gifs-server/api-keys(1行に1つのAPIキー。初回インストール時にランダムなキーが生成されます)。

デフォルトでは127.0.0.1:8080でリッスンするため、同じサーバー上のAntimatterのみがアクセスできます。Antimatterが別の場所で実行されている場合は、gifs-server.envにAM_GIFS_LISTEN=:8080を設定し、ファイアウォールでポートへのアクセスを制限してください。ファイルには他の設定もリストされています: AM_GIFS_UPLOAD_KEYS(GIFやステッカーの追加、およびそれらで追加されたものの削除を許可するキー)、AM_GIFS_PUBLIC_URL、AM_GIFS_TRUST_PROXY、AM_GIFS_LOG_LEVEL。パッケージはffmpeg、gifsicle、librsvg2-bin(.rpmの場合はlibrsvg2-tools)、DejaVuフォントを推奨しています。サービスはこれらを使用して、ファイルのインポートまたは受信時にGIF、動画、ステッカーの形式を作成しますが、これらがなくても動作します。

サーバーと同様に、サービスはインストール時に有効化されますが、起動はされません。パッケージの手順5に従って起動してください。アップグレード後は再起動してください: sudo systemctl restart gifs-server。パッケージを削除しても、/var/lib/gifs-server内のカタログは保持されます。

プッシュプロキシ

リリース: github.com/AntimatterChat/push-proxy/releases。アーカイブは antimatter-push-proxy-<version>-linux-<arch>.tar.gz、パッケージ名は antimatter-push-proxy です。パッケージは /usr/bin/antimatter-push-proxy と antimatter-push-proxy サービスをインストールします。このサービスは antimatter-push-proxy ユーザーとして実行され、/etc/antimatter-push-proxy/antimatter-push-proxy.json を読み込みます(アップグレード時にも保持されます)。Apple と Firebase の認証情報は /etc/antimatter-push-proxy/certs に配置します。取得方法は プッシュ通知 を参照してください。

sudo apt install ./antimatter-push-proxy_*_amd64.deb      # or: sudo dnf install ./antimatter-push-proxy-*.x86_64.rpm
sudo install -o root -g antimatter-push-proxy -m 0640 \
    AuthKey_ABCDE12345.p8 firebase-service-account.json /etc/antimatter-push-proxy/certs/
sudoedit /etc/antimatter-push-proxy/antimatter-push-proxy.json
sudo systemctl start antimatter-push-proxy
journalctl -u antimatter-push-proxy -f

設定ファイル内のパスは /etc/antimatter-push-proxy からの相対パスです。例えば "AppleAuthKeyFile": "./certs/AuthKey_ABCDE12345.p8" や "ServiceFileLocation": "./certs/firebase-service-account.json" のように指定します。その後、Antimatter の プッシュ通知サーバー を http://<proxy host>:8066 に設定します。アップグレード後は再起動してください: sudo systemctl restart antimatter-push-proxy。

プッシュプロキシはすべてのアドレスでポート 8066 をリッスンし、呼び出し元を確認しません。ポートをプライベートネットワーク内に限定するか、アクセスを制限するリバースプロキシの背後に配置してください。

その他のサーバーコマンド

サーバーの実行(antimatter または antimatter server)のほかに、このバイナリにはいくつかのメンテナンスコマンドがあります。これらはサーバーと同じ設定を読み取ります。

コマンド機能
antimatter versionバージョン、ビルド番号、ビルド日付、ビルドハッシュを出力します。
antimatter db pingデータベースに到達可能かどうかを確認します。
antimatter db initデータベースに設定を作成します(AM_CONFIG が postgres:// URL に設定されている場合)。
antimatter db migrateサーバーを起動せずにデータベースマイグレーションを適用します。
antimatter db versionデータベースに最後に適用されたマイグレーションを出力します。
antimatter import bulk, antimatter export bulkバルク形式でデータをインポートまたはエクスポートします(バックアップとアップグレードを参照)。