Antimatter installieren

Installieren Sie Antimatter mit der fertigen Compose-Datei, aus dem .deb- oder .rpm-Paket eines Releases oder aus einem Release-Archiv. Erstellen Sie anschließend das erste Administratorkonto.

Installation mit Docker Compose

Dies ist die empfohlene Methode. Eine Compose-Datei führt Antimatter, PostgreSQL, die Dateispeicherung und den GIF-Dienst aus. Sie benötigen einen Linux-Server mit Docker Engine und dem Compose-Plugin (docker compose), 2 CPU-Kerne und 4 GB Arbeitsspeicher oder mehr.

1. Compose-Datei herunterladen

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

2. .env-Datei erstellen

Die Compose-Datei liest ihre Einstellungen aus einer .env-Datei im selben Verzeichnis. Erstellen Sie diese mit zufälligen Geheimnissen:

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

Setzen Sie SITE_URL auf die Adresse, die Benutzer in ihrem Browser eingeben, zum Beispiel http://192.168.1.20:8065 im lokalen Netzwerk oder https://chat.example.com mit einer Domain. Bewahren Sie die .env-Datei auf: Die Datenbank und der Speicher verwenden diese Passwörter ab dem ersten Start, die API-Schlüssel der AI-Modell-Verbindungen werden mit AM_AI_ENCRYPTION_KEY verschlüsselt, und Sie benötigen dieselbe Datei, um ein Backup wiederherzustellen.

3. Starten

docker compose up -d
docker compose ps

Der erste Start dauert ein oder zwei Minuten: PostgreSQL erstellt die Datenbank, ein einmaliger bucket-Dienst erstellt das Speicher-Bucket, ein einmaliger gifs-stickers-Dienst importiert das Starter-Sticker-Pack und Antimatter erstellt seine Tabellen. Verfolgen Sie den Fortschritt mit docker compose logs -f antimatter.

Um von Anfang an einen Domainnamen und HTTPS zu verwenden, siehe Domain und HTTPS: Mit der Compose-Datei sind es zwei zusätzliche Zeilen in .env und das https-Profil.

Die .env-Variablen

VariableStandardFunktion
SITE_URLerforderlichDie öffentliche Adresse von Antimatter (ServiceSettings.SiteURL).
POSTGRES_PASSWORDerforderlichPasswort des antimatter-Datenbankbenutzers.
S3_SECRET_KEYerforderlichGeheimnis der Dateispeicherung.
GIFS_API_KEYerforderlichSchlüssel, den Antimatter verwendet, um den GIF-Dienst aufzurufen.
AM_AI_ENCRYPTION_KEYleerDer Schlüssel, der die API-Schlüssel der AI-Modell-Verbindungen verschlüsselt (openssl rand -base64 32). Leer: Der Server erstellt eine Schlüsseldatei im data-Volume. Siehe Der Verschlüsselungsschlüssel.
GIFS_UPLOAD_KEYleerErlaubt Benutzern, eigene GIFs und Sticker aus dem Auswahlmenü hinzuzufügen und zu löschen. Leer deaktiviert das Hochladen.
DOMAINleerIhr Domainname, für das https-Profil.
HTTP_PORT8065Host-Port des Webservers von Antimatter.
CALLS_PORT8443UDP- und TCP-Port für Audio- und Videoanrufe.
EDGE_SUBNET172.29.71.0/28Subnetz des Netzwerks zwischen Caddy und Antimatter. Ändern Sie es, wenn es mit einem Ihrer Netzwerke überschneidungsfrei ist.
TZUTCZeitzone der Container.
ANTIMATTER_IMAGEghcr.io/antimatterchat/antimatter-next:latestDas auszuführende Antimatter-Image (siehe unten).

Was ausgeführt wird

DienstImageRolle
antimatterghcr.io/antimatterchat/antimatter-nextDer Server, die Web-App und die mitgelieferten Apps. Veröffentlicht HTTP_PORT und CALLS_PORT. Das Verzeichnis für seine Daten ist das data-Volume.
postgrespostgres:17-alpineDie Datenbank, im postgres-Volume.
filesrustfs/rustfsS3-kompatibler Speicher für hochgeladene Dateien und installierte Apps im files-Volume.
bucketamazon/aws-cliErstellt den antimatter-Bucket und beendet sich anschließend.
gifsghcr.io/antimatterchat/gifs-serverDer GIF- und Sticker-Dienst im gifs-Volume.
gifs-stickersghcr.io/antimatterchat/gifs-serverImportiert das Starter-Sticker-Paket beim ersten Start und beendet sich anschließend.
httpscaddy:2-alpineNur mit dem https-Profil: HTTPS auf den Ports 80 und 443.

PostgreSQL, der Speicher und der GIF-Dienst befinden sich auf einem internen Netzwerk (private) ohne Internetzugang, dem nur Antimatter beitreten. Keiner von ihnen veröffentlicht einen Port.

Der Antimatter-Container speichert nichts auf der Festplatte: Seine Einstellungen befinden sich in der Datenbank (AM_CONFIG zeigt darauf) und seine Dateien und Apps im Speicherdienst. Sie können den Container jederzeit entfernen und neu erstellen. Sein data-Volume enthält nur die AI-Verschlüsselungsschlüsseldatei, die der Server erstellt, wenn AM_AI_ENCRYPTION_KEY leer ist. Alles, was gesichert werden muss, befindet sich in den Volumes postgres, files, gifs und data sowie in Ihrer .env-Datei.

Ein Image auswählen

Es werden zwei Antimatter-Images veröffentlicht, beide für linux/amd64 und linux/arm64, und beide aus dem main-Branch aller Repositorien erstellt:

ImageMitgelieferte AppsTags
ghcr.io/antimatterchat/antimatterKI-Chat, Anrufe, GitHub, GitLab, Jira und Metrics.latest, X.Y.Z für Releases, sha-<commit>
ghcr.io/antimatterchat/antimatter-nextDasselbe, plus Sprachkanäle, Umfragen, Mail, Kalender, Notizen, Whiteboard, GIFs, Zu erledigen und Memes. Wird jede Nacht neu erstellt.latest, nightly, nightly-<YYYYMMDD>, sha-<commit>

Die Image-Bundles enthalten weder Kanban noch Playbooks mehr: Installieren Sie diese bei Bedarf über den jeweiligen GitHub-Release (siehe unten). Ein Server, auf dem eine dieser Apps bereits installiert ist, behält diese auch nach einem Upgrade bei.

Die Compose-Datei der Website verwendet antimatter-next, da der GIF-Dienst und die meisten auf dieser Website beschriebenen Apps nur in diesem Image enthalten sind. Um das Image zu ändern, setzen Sie ANTIMATTER_IMAGE in .env und führen Sie docker compose up -d aus.

latest ändert sich unter Ihren Füßen. In der Produktion sollten Sie ein Tag wie nightly-20261015 oder sha-<commit> festlegen und es nur absichtlich ändern, wenn Sie ein Upgrade durchführen. Der Server aktualisiert seine Datenbank beim Start, daher können Sie nicht zu einem älteren Image oder von antimatter-next zu antimatter zurückkehren, ohne zuvor ein Backup wiederherzustellen. Siehe Backups und Upgrades.

Im Inneren des Images

  • Der Server befindet sich in /antimatter, mit den Binärdateien antimatter und amctl in /antimatter/bin (auf dem PATH).
  • Er wird als nicht privilegierte Benutzer antimatter (uid 2000) auf einer minimalen distroless-Basis ausgeführt, ohne Shell.
  • Ports: 8065 (Web und API), 8067 (Metriken), 8074 (Cluster), 8443 UDP und TCP (Anrufe).
  • Der lokale Modus (ServiceSettings.EnableLocalMode) ist aktiviert, sodass amctl --local innerhalb des Containers funktioniert. Der Health-Check führt amctl system status --local aus.
  • Die mitgelieferten Apps befinden sich in /antimatter/prepackaged_plugins und sind mit dem Antimatter-App-Signierungsschlüssel signiert.
  • Textextraktionswerkzeuge (pdftotext, wvText, unrtf, tidy) sind enthalten, sodass der Inhalt hochgeladener Dokumente durchsucht werden kann.

Weitere Compose-Dateien

Das Repository antimatter-docker enthält eine Produktionsumgebung in deploy/compose/: nginx mit eigenen Zertifikaten oder Let's Encrypt (certbot), PostgreSQL, den optionalen GIF-Dienst (Profil gifs) und benannte Volumes für die Konfiguration, Daten und Protokolle des Servers, dokumentiert in der README. Standardmäßig wird das stabile Image verwendet und Dateien werden auf einem lokalen Volume statt in S3 gespeichert. Verwenden Sie diese Konfiguration, wenn Sie nginx gegenüber Caddy bevorzugen oder bereits Zertifikate besitzen.

Erstellen des ersten Administrators

Öffnen Sie SITE_URL in Ihrem Browser und erstellen Sie ein Konto. Das erste auf einem neuen Server erstellte Konto wird zum Systemadministrator. Anschließend führt die Einrichtung Sie durch die Erstellung Ihrer ersten Community (der Bezeichnung von Antimatter für ein Team oder einen Arbeitsbereich).

Führen Sie dies unmittelbar nach dem ersten Start aus: Bis dahin wird jede Person, die zuerst den Server erreicht, zu dessen Administrator. Um das Konto stattdessen über die Befehlszeile zu erstellen, bevor der Server von außen erreichbar ist:

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

Melden Sie sich anschließend unter SITE_URL an. Beginnen Sie den Befehl mit einem Leerzeichen, um das Passwort aus der Shell-Historie auszuschließen (mit HISTCONTROL=ignorespace), oder ändern Sie das Passwort nach der Anmeldung.

Nächste Schritte, nachdem Sie angemeldet sind:

  1. Legen Sie für ein Unternehmen oder eine Organisation Art der neuen Communities auf Arbeitsbereich fest und ändern Sie den Typ einer bereits erstellten Community in deren Einstellungen: Guild oder Arbeitsbereich.
  2. Bestimmen Sie, wer Konten erstellen darf: Anmeldung und Konten.
  3. Konfigurieren Sie die E-Mail, damit Einladungen und Passwort-Resets funktionieren: E-Mail- und Push-Benachrichtigungen.
  4. Öffnen Sie den Anruf-Port in Ihrer Firewall: Anrufe und Sprache.
  5. Prüfen Sie, welche Apps aktiviert sind: Mitgelieferte Apps.

Ein Release herunterladen

Ohne Docker installieren Sie Antimatter aus den Dateien eines Releases auf GitHub: github.com/AntimatterChat/antimatter/releases. Jedes Release hat eine Versionsnummer wie 0.9.0, und sein Tag ist dieselbe Zahl mit einem v davor (v0.9.0).

Antimatter befindet sich in der Beta-Phase: Die Versionen gehören zur 0.9.0-Serie. Eine Version, deren Bezeichnung nach einem Bindestrich einen Suffix enthält, wie 0.9.0-rc.1, ist auf GitHub als Pre-release markiert. Es handelt sich um eine Testversion, die vor der finalen Veröffentlichung erscheint.

Jede Version enthält die folgenden Dateien für amd64- und arm64-Server:

DateiBeschreibung
antimatter_<version>-1_amd64.deb, antimatter_<version>-1_arm64.debDas Paket für Debian, Ubuntu und darauf basierende Distributionen.
antimatter-<version>-1.x86_64.rpm, antimatter-<version>-1.aarch64.rpmDas Paket für Fedora, RHEL und mit RHEL kompatible Distributionen.
antimatter-<version>-linux-amd64.tar.gz, antimatter-<version>-linux-arm64.tar.gzDas Release-Archiv für jede Linux-Distribution, das manuell eingerichtet wird.
SHA256SUMSDie SHA-256-Prüfsumme aller Dateien der Version.

Die Pakete und das Archiv enthalten dasselbe Programm: den Server (antimatter), das Kommandozeilen-Tool (amctl), beide Web-Apps (die Standard- und die klassische Oberfläche), die mitgelieferten Apps, die E-Mail-Vorlagen und die Übersetzungen. Die Pakete fügen einen systemd-Dienst und eine Konfigurationsdatei hinzu, sodass es sich um eine All-in-One-Installation handelt: Sie müssen nur noch eine PostgreSQL-Datenbank hinzufügen. Es gibt keine separaten Binär-Downloads: Die Binärdateien befinden sich im Archiv unter antimatter/bin/. Da sie statisch sind, laufen sie auf jeder Linux-Distribution der jeweiligen Architektur.

In den Paketnamen wird der Bindestrich einer Pre-Release-Version durch ein Tildenzeichen ersetzt, damit der Paketmanager die Pre-Release vor der finalen Version einsortiert: Die Version 0.9.0-rc.1 ergibt antimatter_0.9.0~rc.1-1_amd64.deb und antimatter-0.9.0~rc.1-1.x86_64.rpm. Das Archiv behält den Bindestrich bei.

antimatter version gibt die Versionsnummer als Build-Nummer aus, mit dem Commit, aus dem sie gebaut wurde, als Build Hashwert. Die Zeile Version zeigt die Version der Mattermost-Basis, auf der Antimatter aufbaut.

Download überprüfen

Laden Sie die benötigte Datei und SHA256SUMS in dasselbe Verzeichnis herunter, entweder von der Release-Seite oder mit curl, und prüfen Sie die Datei anschließend:

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

Jede heruntergeladene Datei muss mit OK aufgelistet sein. Jedes andere Ergebnis bedeutet, dass die Datei beschädigt oder unvollständig ist: Laden Sie sie erneut herunter und installieren Sie sie nicht. SHA256SUMS ist nicht signiert: Es erkennt beschädigte Downloads, beweist aber nichts weiter als der HTTPS-Download von GitHub.

.deb- oder .rpm-Paket installieren

Das Paket installiert Antimatter als systemd-Dienst, der zum Starten nur eine Datenbank benötigt. Verwenden Sie es auf einem 64-Bit-Server mit Debian, Ubuntu, Fedora oder einer mit RHEL kompatiblen Distribution, die systemd unterstützt.

Was das Paket installiert

PfadInhalt
/opt/antimatterDas Programm: bin/antimatter, bin/amctl, die Web-Apps (client/, client-fusion/), die mitgelieferten Apps (prepackaged_plugins/), die Vorlagen, Übersetzungen und Schriftarten. Jeder Upgrade ersetzt sie.
/etc/antimatter/antimatter.envDie Einstellungen des Dienstes als AM_-Variablen: die Datenbank, die Site-URL, der GIF-Dienst. Nur für root lesbar. Upgrades behalten sie bei.
/etc/antimatter/config/config.jsonDie Konfigurationsdatei, in der der Server die in der Systemkonsole geänderten Einstellungen speichert. Sie wird bei der ersten Installation aus /opt/antimatter/defaults/config.json erstellt und danach nie ersetzt.
/var/lib/antimatterHochgeladene Dateien (data/) und installierte Apps (plugins/, client-plugins/).
/var/log/antimatterProtokolldateien, falls Sie das Protokollieren in Dateien aktivieren. Standardmäßig ist es deaktiviert: Die Protokolle gehen an das Journal.
/usr/lib/systemd/system/antimatter.serviceDer Dienst.
/usr/bin/amctlEin Link zu /opt/antimatter/bin/amctl.

Die Verzeichnisse, in die der Server unter /opt/antimatter schreibt (config, data, plugins, client/plugins und logs), sind Links zu /etc/antimatter, /var/lib/antimatter und /var/log/antimatter. Ein Upgrade, das /opt/antimatter ersetzt, berührt Ihre Daten daher nie. Das Paket erstellt außerdem den Systembenutzer antimatter, der den Server ausführt und diese Verzeichnisse besitzt.

Das Paket hängt von ca-certificates ab. Es empfiehlt PostgreSQL (postgresql auf Debian und Ubuntu, postgresql-server auf Fedora und RHEL), media-types (mailcap für das .rpm) und gifs-server, den GIF-Dienst, der eine eigene Version hat (siehe unten). apt und dnf installieren empfohlene Pakete, wenn sie diese finden. Es schlägt poppler-utils, wv, unrtf und tidy vor (kein wv für das .rpm): Sie extrahieren den Text hochgeladener Dokumente, damit die Suche Wörter darin findet. Installieren Sie sie selbst, wenn Sie das möchten.

1. Pakete installieren

Laden Sie das Antimatter-Paket und das GIF-Dienst-Paket für Ihre Architektur herunter, prüfen Sie sie wie oben gezeigt und installieren Sie beide in einem einzigen Befehl, damit die Empfehlung für gifs-server erfüllt wird (es ist nicht in den Repositories der Distributionen):

# 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

Behalte das ./ bei: Es weist apt und dnf an, eine lokale Datei zu installieren. Um die Installation ohne den GIF-Dienst durchzuführen, lass dessen Paket einfach weg. Das Paket aktiviert den antimatter-Dienst, startet ihn aber nicht und zeigt die nächsten Schritte an.

2. Datenbank erstellen

Antimatter benötigt PostgreSQL 15 oder neuer, auf diesem Server oder auf einem anderen. Prüfe die Version des PostgreSQL-Pakets deiner Distribution mit psql --version. Ist sie älter, installiere eine neuere Version aus den eigenen Repositorien des PostgreSQL-Projekts oder verwende eine Datenbank auf einem anderen Server. Auf Debian und Ubuntu startet das postgresql-Paket die Datenbank. Auf Fedora und RHEL erstelle und starte sie zuerst:

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

Erstelle dann einen Benutzer und eine Datenbank für 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 muss Passwort-Verbindungen von 127.0.0.1 akzeptieren: die host-Zeilen in der pg_hba.conf-Datei mit der Methode scram-sha-256.

3. Datenbank und Site-URL festlegen

Bearbeite /etc/antimatter/antimatter.env (sudoedit /etc/antimatter/antimatter.env). Entferne das # vor den Zeilen, die du verwendest, und lege die Datenbank sowie die Adresse fest, die die Nutzer öffnen:

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

Jede Einstellung der Konfiguration kann in dieser Datei als AM_<SECTION>_<SETTING> angegeben werden: zum Beispiel ist SqlSettings.DataSource AM_SQLSETTINGS_DATASOURCE. Eine hier festgelegte Einstellung kann in der Systemkonsole nicht geändert werden. Siehe Konfiguration. Starte den Server nach jeder Änderung neu: sudo systemctl restart antimatter.

Der Dienst setzt auch einige Standardwerte, die durch eine Zeile in antimatter.env überschrieben werden: Protokollierung in Dateien ist deaktiviert (AM_LOGSETTINGS_ENABLEFILE=false, AM_NOTIFICATIONLOGSETTINGS_ENABLEFILE=false), und der lokale Modus ist aktiviert (AM_SERVICESETTINGS_ENABLELOCALMODE=true), damit amctl --local auf dem Server funktioniert.

4. Starten

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

Beim ersten Start erstellt der Server seine Tabellen und lauscht dann auf Port 8065. Öffnen Sie http://<server>:8065 oder Ihre Domain, sobald ein Reverse Proxy eingerichtet ist (siehe Domain und HTTPS), und erstellen Sie sofort das erste Konto: Es wird zum Systemadministrator. Um es stattdessen von der Kommandozeile aus zu erstellen, verwenden Sie die amctl-Befehle aus Ersten Administrator erstellen, wobei sudo -u antimatter amctl --local anstelle von docker compose exec antimatter amctl --local steht.

5. GIFs aktivieren

Die GIFs-App ist enthalten und aktiviert, und antimatter.env verweist bereits auf den GIF-Dienst auf demselben Server (AM_GIFS_SERVICE_URL=http://127.0.0.1:8080/v2). Es fehlt noch der API-Schlüssel des Dienstes. Das Paket gifs-server hat bei der Installation einen generiert:

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

Tragen Sie den Schlüssel in antimatter.env als AM_GIFS_API_KEY=<key> ein und starten Sie Antimatter neu, oder geben Sie ihn in der Systemkonsole › Plugins › GIFs als API-Schlüssel ein. Wenn der GIF-Dienst auf einem anderen Server läuft, setzen Sie AM_GIFS_SERVICE_URL auf dessen Adresse. Um es Personen zu ermöglichen, eigene GIFs und Sticker hinzuzufügen, siehe GIFs.

Der Dienst

  • Er läuft als Benutzer antimatter in /opt/antimatter und liest /etc/antimatter/antimatter.env. systemd startet den Server neu, wenn er beendet wird, und gibt ihm bis zu eine Stunde Zeit für den Start, da die Datenbank-Migrationen einer neuen Version lange dauern können.
  • Die Protokolle befinden sich im Journal: journalctl -u antimatter.
  • Er ist gehärtet: /usr und /etc sind für den Server schreibgeschützt, mit Ausnahme von /etc/antimatter/config, und er kann /home, /root oder /run/user nicht sehen. Wenn Sie den Dateispeicher (FileSettings.Directory) verschieben, wählen Sie ein Verzeichnis außerhalb dieser, das von antimatter besessen wird.
  • Upgrades ersetzen die Dienstdatei. Um sie zu ändern, verwenden Sie sudo systemctl edit antimatter, was Ihre Änderungen in einer separaten Datei bewahrt.

Ein Paket aktualisieren

  1. Erstellen Sie ein Backup (siehe Backups und Upgrades).
  2. Laden Sie das neue Paket und SHA256SUMS herunter und prüfen Sie sie.
  3. Stoppen Sie den Server, installieren Sie das neue Paket über das alte und starten Sie es erneut:
    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

Das Paket startet den Server nicht selbst neu. Nach einem Upgrade wird die Meldung Antimatter was upgraded; restart it to run the new version: sudo systemctl restart antimatter ausgegeben: Wenn Sie den Server vorher nicht gestoppt haben, starten Sie ihn sofort neu. Das Upgrade ersetzt /opt/antimatter und die Service-Datei, behält aber antimatter.env, config.json, /var/lib/antimatter und die Protokolle bei. Beim Start aktualisiert der Server die Datenbank und installiert die neueren Versionen der mitgelieferten Apps.

Wenn eine neue Version die Standard-antimatter.env ändert, fragt apt, ob Sie Ihre Version behalten sollen: Behalten Sie sie. dnf behält Ihre Version bei und speichert die neue als /etc/antimatter/antimatter.env.rpmnew. Upgrades erfolgen nur in die Zukunft: Installieren Sie keine ältere Version über eine neuere.

Ein Paket entfernen

sudo apt remove antimatter oder sudo dnf remove antimatter stoppt und deaktiviert den Service und entfernt das Programm. Die Daten (/var/lib/antimatter), die Konfiguration (/etc/antimatter), die Datenbank und der Benutzer antimatter bleiben erhalten: Löschen Sie diese selbst, um Antimatter vollständig zu entfernen.

Apps in den Paketen und dem Archiv

Die Pakete und das Archiv enthalten die neueste signierte Version dieser Apps im Verzeichnis prepackaged_plugins/: KI-Chat, Anrufe, GIFs, Memes, Notizen, Umfragen, Zu erledigen, Sprachkanäle und Whiteboard. Eine App, für die zum Zeitpunkt der Serververöffentlichung noch kein Release vorlag, ist nicht enthalten: ls /opt/antimatter/prepackaged_plugins zeigt an, welche Apps in Ihrer Version enthalten sind. Memes und Zu erledigen sind enthalten, aber nicht aktiviert: Bundled apps erklärt, wie Sie diese installieren und aktivieren.

Kanban und Playbooks werden nicht mehr mit dem Server oder einem der Docker-Images gebündelt: Ein Server, auf dem eine dieser Apps bereits installiert ist, behält diese auch nach einem Upgrade bei. Alle anderen installieren sie über das jeweilige eigene Release, wie unten bei den Apps beschrieben. Die anderen Apps der Docker-Images sind weder in den Paketen noch im Archiv enthalten: Mail, Kalender, GitHub, GitLab, Jira und Metrics. Installieren Sie jede App, einschließlich Kanban und Playbooks, über ihre jeweiligen Releases:

AppReleasesApp-ID
Kanbanantimatter-plugin-boardsfocalboard
Playbooksantimatter-plugin-playbooksplaybooks
E-Mailantimatter-plugin-mailcom.antimatterchat.mail
Kalenderantimatter-plugin-calendarcom.antimatterchat.calendar
GitHubantimatter-plugin-githubgithub
GitLabantimatter-plugin-gitlabcom.github.manland.mattermost-plugin-gitlab
Jiraantimatter-plugin-jirajira
MetrikenAntimatter-plugin-metricscom.mattermost.mattermost-plugin-metrics

Jede App-Version enthält das App-Bundle (eine .tar.gz-Datei), ihre Signatur (gleicher Name mit .sig am Ende) und eine SHA256SUMS-Datei. Um eine App zu installieren, erlauben Sie zunächst Uploads und fügen Sie dann das Bundle mit amctl hinzu:

# 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

Um eine auf diese Weise installierte App zu aktualisieren, fügen Sie das neue Bundle mit plugin add --force hinzu: Paket-Updates aktualisieren nur die mitgelieferten Apps. Sie können die Zeile AM_PLUGINSETTINGS_ENABLEUPLOADS danach wieder entfernen. Weitere Möglichkeiten zur Installation von Apps finden Sie unter Andere Apps installieren.

App-Signaturen

Die App-Bundles sind mit dem Antimatter-App-Signierungsschlüssel signiert: Jede .tar.gz.sig-Datei ist eine getrennte GPG-Signatur des jeweiligen Bundles. Der Server prüft diese Signaturen, bevor er ein mitgeliefertes App-Bundle installiert. Um ein Bundle selbst zu prüfen:

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 muss eine gültige Signatur von Antimatter Plugin Signing mit dem Fingerabdruck 06C8 1032 4677 0F08 BBA7 78B9 E69B 05C3 92A6 9A45 melden. Es warnt auch, dass der Schlüssel nicht mit einer vertrauenswürdigen Signatur zertifiziert ist: Das ist normal für einen Schlüssel, den Sie selbst nicht signiert haben. Eine App-Version ohne .sig-Dateien ist nicht signiert; dies wird in den Versionshinweisen angegeben.

Installation aus einem Release-Archiv

Das Archiv antimatter-<version>-linux-<arch>.tar.gz (z. B. antimatter-0.9.0-linux-amd64.tar.gz) eignet sich für Distributionen ohne .deb- oder .rpm-Pakete oder für ein eigenes Layout. Es enthält ein einzelnes antimatter/-Verzeichnis mit bin/antimatter, bin/amctl, config/config.json, den Web-Apps (client/ und client-fusion/), den mitgelieferten Apps (prepackaged_plugins/, siehe oben), den E-Mail-Vorlagen und den Übersetzungen.

1. PostgreSQL vorbereiten

Antimatter unterstützt nur PostgreSQL, Version 15 oder neuer (ältere Versionen starten mit einem Fehler in der Protokolldatei). Erstellen Sie einen Benutzer und eine Datenbank:

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

2. Entpacken und konfigurieren

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

Verweisen Sie den Server auf die Datenbank, entweder in /opt/antimatter/config/config.json (SqlSettings.DataSource) oder über Umgebungsvariablen, und setzen Sie die Site-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

Die config.json im Archiv ist eine vollständige Standardkonfiguration: Einstellungen, die Sie in der Systemkonsole ändern, werden darin gespeichert. Um die Konfiguration stattdessen in der Datenbank zu speichern, siehe Konfiguration.

3. Als Dienst ausführen

Eine systemd-Einheit in /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

Legen Sie Ihre AM_-Variablen in /etc/antimatter.env (nur für root lesbar) ab, dann:

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

Der Server lauscht auf Port 8065. Öffnen Sie http://<server>:8065 oder Ihre Domain, sobald ein Reverse Proxy eingerichtet ist (siehe Domain und HTTPS), und erstellen Sie das erste Konto: Es wird zum Systemadministrator.

bin/amctl verwaltet den laufenden Server von der Kommandozeile. Auf dem Server selbst funktioniert es ohne Anmeldung über den lokalen Modus: Setzen Sie AM_SERVICESETTINGS_ENABLELOCALMODE=true und führen Sie dann sudo -u antimatter /opt/antimatter/bin/amctl --local system status aus.

Für GIFs installieren Sie den GIF-Dienst (siehe unten) und setzen Sie AM_GIFS_SERVICE_URL und AM_GIFS_API_KEY wie in Schritt 5 der Pakete.

Pakete für den GIF-Dienst und den Push-Proxy

Der GIF-Dienst und der Push-Proxy haben eigene Releases, die denselben Regeln folgen wie der Server: ein .tar.gz-Archiv, ein .deb- und ein .rpm-Paket für amd64 und arm64 sowie eine SHA256SUMS-Datei. Versionen mit einem Bindestrich sind Vorabversionen. Prüfen Sie die Downloads mit sha256sum --check --ignore-missing SHA256SUMS, wie beim Server.

Der GIF-Dienst (gifs-server)

Releases: github.com/AntimatterChat/gifs-server/releases. Das Archiv heißt gifs-server-<version>-linux-<arch>.tar.gz; die Pakete tragen den Namen gifs-server.

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

Das Paket installiert:

  • /usr/bin/gifs-server sowie den gifs-server-Dienst, der als Benutzer gifs-server ausgeführt wird und sein Verzeichnis in /var/lib/gifs-server speichert;
  • den gifs-server-stickers-Dienst, der beim Start das Sticker-Paket in /usr/share/gifs-server/stickers importiert oder aktualisiert und danach gestoppt wird;
  • seine Einstellungen in /etc/gifs-server/gifs-server.env (AM_GIFS_-Variablen, die bei Upgrades erhalten bleiben) und /etc/gifs-server/api-keys, mit einem API-Schlüssel pro Zeile; bei der ersten Installation wird ein zufälliger Schlüssel generiert.

Er lauscht auf 127.0.0.1:8080, sodass nur Antimatter auf demselben Server darauf zugreifen kann. Wenn Antimatter woanders läuft, setzen Sie AM_GIFS_LISTEN=:8080 in gifs-server.env und beschränken Sie den Zugriff auf den Port über Ihre Firewall. Die Datei listet die weiteren Einstellungen auf: AM_GIFS_UPLOAD_KEYS (die Schlüssel, die zum Hinzufügen von GIFs und Stickern sowie zum Löschen der damit hinzugefügten Elemente berechtigt sind), AM_GIFS_PUBLIC_URL, AM_GIFS_TRUST_PROXY und AM_GIFS_LOG_LEVEL. Das Paket empfiehlt ffmpeg, gifsicle, librsvg2-bin (librsvg2-tools für das .rpm) und eine DejaVu-Schrift: Der Dienst verwendet sie, um beim Import oder Empfang von Dateien die Formate für GIFs, Videos und Sticker zu erstellen, und funktioniert auch ohne sie.

Wie beim Server wird der Dienst bei der Installation aktiviert, aber nicht gestartet. Starten Sie ihn wie in Schritt 5 der Pakete beschrieben. Nach einem Upgrade neu starten: sudo systemctl restart gifs-server. Beim Entfernen des Pakets bleibt das Verzeichnis in /var/lib/gifs-server erhalten.

Der Push-Proxy

Veröffentlichungen: github.com/AntimatterChat/push-proxy/releases. Das Archiv heißt antimatter-push-proxy-<version>-linux-<arch>.tar.gz; die Pakete tragen den Namen antimatter-push-proxy. Das Paket installiert /usr/bin/antimatter-push-proxy sowie den Dienst antimatter-push-proxy, der als Benutzer antimatter-push-proxy ausgeführt wird und /etc/antimatter-push-proxy/antimatter-push-proxy.json liest (bleibt bei Upgrades erhalten). Die Apple- und Firebase-Zugangsdaten werden in /etc/antimatter-push-proxy/certs abgelegt: Push-Benachrichtigungen erklärt, woher sie stammen.

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

In der Einstellungsdatei sind Pfade relativ zu /etc/antimatter-push-proxy: zum Beispiel "AppleAuthKeyFile": "./certs/AuthKey_ABCDE12345.p8" und "ServiceFileLocation": "./certs/firebase-service-account.json". Setzen Sie anschließend Push-Benachrichtigungs-Server in Antimatter auf http://<proxy host>:8066. Starten Sie den Dienst nach einem Upgrade neu: sudo systemctl restart antimatter-push-proxy.

Der Push-Proxy lauscht auf Port 8066 an jeder Adresse und prüft nicht, wer ihn aufruft. Halten Sie den Port in einem privaten Netzwerk oder hinter einem Reverse-Proxy, der den Zugriff einschränkt.

Weitere Serverbefehle

Neben dem Ausführen des Servers (antimatter oder antimatter server) bietet die Binärdatei einige Wartungsbefehle. Sie lesen dieselbe Konfiguration wie der Server.

BefehlFunktion
antimatter versionGibt die Version, die Build-Nummer, das Baudatum und den Build-Hash aus.
antimatter db pingPrüft, ob die Datenbank erreichbar ist.
antimatter db initErstellt die Konfiguration in der Datenbank (mit AM_CONFIG auf eine postgres://-URL gesetzt).
antimatter db migrateWendet die Datenbankmigrationen an, ohne den Server zu starten.
antimatter db versionGibt die zuletzt auf die Datenbank angewendete Migration aus.
antimatter import bulk, antimatter export bulkImportiert oder exportiert Daten im Bulk-Format (siehe Backups und Upgrades).