ソースからのビルド
このページでは、Antimatterをソースコードからビルドして実行する方法を説明します。開発作業や独自のビルドを作成するために使用できます。サーバーとWebインターフェースは1つのリポジトリに収容されており、その後Dockerイメージとアプリについて説明します。
必要なもの
- 開始は、
server/go.modに記載されているバージョン(執筆時点では 1.26.7)を使用します。 - Node.jsとnpm:
.nvmrcとwebapp/package.jsonに記載されているバージョン(Node 24.11.1とnpm 11.6.2)。miseを使用する場合、リポジトリのmise.tomlが適切なNodeをインストールします。 - DockerとCompose: 開発環境では、PostgreSQLやその他のいくつかのサービスをコンテナ内で実行します。
- make、git、そしてLinuxまたはmacOSマシン。
- メモリ: Webインターフェースのビルドが最も負荷が高い部分です。16GBのRAMを確保してください。ビルドとメモリを参照してください。
git clone https://github.com/AntimatterChat/antimatter.git
cd antimatter
リポジトリには、server/にサーバー、webapp/にWebインターフェース(Fusionはwebapp/fusion、クラシックはwebapp/channels、共有パッケージはwebapp/platform)、e2e-tests/にエンドツーエンドテストが含まれています。
開発サーバーの実行
cd server
make run
make runを実行すると、開発コンテナ(PostgreSQL、Redis、メールキャッチャー、監視ツール)が起動し、Webアプリのビルドが配置され、go runでサーバーがバックグラウンドで起動し、Webアプリのウォッチャーが起動します。ウォッチャーは、クラシックインターフェースを編集するたびに再ビルドします。http://localhost:8065を開いてアカウントを作成してください。最初のアカウントがシステム管理者になります。
コマンド(server/内) | 機能 |
|---|---|
make run-server, make run-client | サーバーのみ、またはWebアプリのウォッチャーのみを起動します。 |
make restart-server | Goコードを変更した後にサーバーを再起動します。 |
make stop | サーバー、ウォッチャー、コンテナを停止します。 |
make debug-server | Delveデバッガーでサーバーを実行します。 |
make run-cli ARGS="-version" | サーバーコマンドを実行します。 |
make config-reset | config/config.jsonをデフォルト値にリセットします。 |
make clean, make nuke | ビルドファイルを削除します。nukeは開発データも削除します。 |
開発用データベースはpostgres://mmuser:mostest_password@localhost/mattermost_testで、サーバーのデフォルトデータソースです。server/config.override.mkファイルまたは環境変数(server/config.mkを参照)でENABLED_DOCKER_SERVICESを設定し、どのコンテナを起動するか選択できます。
Webインターフェース
webapp/内:
npm install # also builds the shared packages
npm run build # the classic interface, then Fusion
ビルド成果物は webapp/channels/dist(classic)と webapp/fusion/dist(Fusion)に出力されます。server/ ディレクトリで make client を実行すると、これらが server/client と server/client-fusion としてリンクされ、サーバーから配信されます。classic は /static/ 配下、Fusion は /static/fusion/ 配下から配信されます。
npm run run(またはwebapp/内のmake run)を実行すると、classic インターフェースを監視して再ビルドします。WATCH_FUSION=trueを追加すると、Fusion も再ビルドされます。npm run dev-server(make dev)を実行すると、代わりに webpack の開発サーバーが起動します。classic はポート 9005、Fusion はポート 9006 で提供されます。- ブラウザでどちらかのインターフェースを表示するには、任意のページの URL に
?webui=fusionまたは?webui=classicを追加してください。
テストとチェック
| コマンド | 設定場所 | 機能 |
|---|---|---|
make test-server | server/ | 開発コンテナに対するサーバーのテストスイートです。実行に長時間かかります。 |
make test-server-quick | server/ | 短いテストのみを実行します。 |
go test ./channels/app/... -run TestName | server/ | コンテナを起動した状態(make start-docker)で、特定のパッケージまたはテストを実行します。 |
make check-style | server/ | go vet、golangci-lint およびその他の Go チェックを実行します。 |
make test | webapp/ | Web アプリのユニットテスト(Jest)をすべてのパッケージで実行します。 |
npm run test -- <pattern> | webapp/fusion | Fusion の一部のテストを実行します。 |
make check-style, make check-types | webapp/ | ESLint と TypeScript のチェックを実行します。 |
make i18n-extract | server/ と webapp/ | 文字列を追加または変更した後に、英語の文字列ファイルを更新します(詳細は 翻訳 を参照)。 |
server/ 内で go mod tidy ではなく make modules-tidy を実行してください。
リリースアーカイブ
cd webapp && npm run build && cd ..
cd server
make build-linux # the antimatter and amctl binaries
make package-linux # dist/antimatter-linux-amd64.tar.gz and -arm64
make buildを実行すると、WebインターフェースとLinuxバイナリが一度にビルドされます。アーカイブにはbin/antimatter、bin/amctl、設定変更に関するREADME.mdを含むデフォルトのconfig/config.json、両方のWebインターフェース、テンプレート、フォント、翻訳が含まれています。その他のプラットフォーム: make package-osx、make package-windows、make package-freebsd。
バンドルアプリ
単にmake package-linuxを実行すると、アプリなしのアーカイブがビルドされます。公開されているリリースのようにアプリをバンドルするには、まず署名済みのアプリバンドルを取得し、そのフォルダを渡します:
build/package/fetch-apps.sh "$HOME/release-apps" # needs gh, python3 and gpg
make package-linux PREPACKAGED_PLUGINS_DIR="$HOME/release-apps"
fetch-apps.shは、antimatter-dockerのplugins.jsonにリストされている各アプリの最新のGitHubリリースを、その署名とともにダウンロードし、Antimatterのプラグインキーに対して署名を確認します。デフォルトでは、ホワイトボード、音声チャンネル、通話、エージェント、ToDo、投票、メモ、GIF、ミームを取得します。AM_BUNDLED_APPS(スペースで区切られたリポジトリ名)でリストを変更できます。リリースがない、または署名がないアプリは警告とともにスキップされます。バンドルはアーカイブのprepackaged_plugins/に配置されます。
.debおよび.rpmパッケージ
build/package/build-packages.sh <archive> <amd64|arm64> <version> <out-dir>は、リリースアーカイブを.debおよび.rpmのオールインワンパッケージに変換します。nfpmを使用します。管理者ガイドにはインストール内容が記載されています: .debまたは.rpmパッケージのインストールを参照してください。
リリースワークフロー
サーバーリポジトリのantimatter-release.ymlワークフローは、GitHub上でこれらすべてを実行します:v*タグが付けられたとき、amd64およびarm64向けのアーカイブとパッケージをSHA256SUMSとともにビルドし、そのタグのGitHubリリースとして公開します(バージョンに-が含まれる場合はプレリリース)。手動で実行した場合、ビルド番号は0.9.0-dev.<run>となり、ファイルはワークフロー成果物として保持されます。各アプリリポジトリには、同じ方法で署名済みバンドルを公開するrelease.ymlワークフローがあります。
Docker イメージ
antimatter-docker リポジトリは、公開されているイメージ(アプリを含むサーバー)を完全に Docker 内でビルドします:
git clone https://github.com/AntimatterChat/antimatter-docker.git
cd antimatter-docker
scripts/build-all.sh # from the main branches on GitHub
SOURCES=local scripts/build-all.sh # from your checkouts next to this folder
VARIANT=next scripts/build-all.sh # the "next" image, with every Antimatter app
Docker(buildx 対応)、Python 3、git、gpg、約 16 GB の RAM、30 GB のディスクスペースが必要です。生成されたイメージは ghcr.io/antimatterchat/antimatter:dev としてロードされ、ANTIMATTER_IMAGE=ghcr.io/antimatterchat/antimatter:dev docker compose -f compose.local.yml up -d で試すことができます。plugins.json にはビルドされたアプリとそのバージョンがリストされ、リポジトリの README にバリアントの説明があります。
build-all.sh はバンドルされたアプリに Antimatter 署名キーで署名を適用します。イメージビルドでは未署名のアプリは拒否されます。この秘密鍵はメンテナーのみが保持しているため、最初のステップのみを実行してください: scripts/fetch-sources.sh、scripts/build-plugins.sh(out/plugins/ にアプリバンドルを生成)、scripts/build-server.sh(out/server/ にサーバーアーカイブを生成)。ビルドとメモリ
Web インターフェースは大きな webpack ビルドであり、メモリ不足は最も一般的なビルド失敗の原因です。
npm run buildは、ピークメモリ使用量を低く抑えるために、クラシックインターフェースと Fusion を並列ではなく順次ビルドします。ご自身で並列実行しないでください。- ミニファイアはプロセッサごとにワーカーを1つ起動します。コア数が多いがメモリが少ないマシンでは、ビルドが見えるプロセッサ数を制限してください:
taskset -c 0-5 npm run build。 - Node がヒープを使い切った場合は、上限を引き上げてください:
NODE_OPTIONS=--max-old-space-size=6144。Docker ビルドはこの値を使用しています(build.env内のBUILD_NODE_OPTIONS)。 - 小規模なマシンで、サーバーの完全なテストスイート、Web ビルド、Docker ビルドを同時に実行することは避けてください。
アプリ
各アプリ(プラグイン)には独自のリポジトリと Makefile があり、make dist でそのバンドルをビルドします。詳細は ビルド、インストール、デバッグ を参照してください。
デスクトップアプリ
デスクトップアプリ は Electron アプリです。Node.js 24 以降を使用する場合:
npm install --allow-git=all
npm run build # development build, into dist/
npm start # run it
npm run package:linux # packages into release/ (also package:windows, package:mac)
サーバーの事前設定などのビルド時設定は src/common/config/buildConfig.ts にあります。Apple 証明書がない場合は、AM_MAC_ADHOC_SIGN=true を設定して macOS アプリをアドホック署名します(ノタリゼーションなし)。Apple シリコン搭載 Mac は未署名のコードを拒否するためです。リポジトリの release.yml ワークフローは、v* タグが付けられたときに Linux、Windows、macOS 用の未署名パッケージをビルドします。
モバイルアプリ
モバイルアプリ は React Native アプリです。その README にコマンド(npm run ios、npm run android)が記載されています。独自のビルドを作成するには、独自の署名キー、Android の通知用 Firebase プロジェクト、iOS 用 APNs キー、そしてそれらの認証情報を保持する プッシュプロキシ が必要です。リポジトリの release.yml ワークフローは、v* タグが付けられたときに、ストアアカウントなしで Android APK と AAB、および未署名の iOS .ipa をビルドします。その README には、Android ビルドを署名し Firebase を設定するためのシークレットが記載されています。