Installation d'Antimatter

Installez Antimatter avec le fichier compose prêt à l'emploi, à partir du paquet .deb ou .rpm d'une version, ou d'une archive de version. Créez ensuite le premier compte administrateur.

Installation avec Docker Compose

C'est la méthode recommandée. Un seul fichier compose exécute Antimatter, PostgreSQL, le stockage de fichiers et le service GIF. Il vous faut un serveur Linux avec Docker Engine et son plugin Compose (docker compose), 2 cœurs CPU et 4 Go de mémoire ou plus.

1. Télécharger le fichier compose

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

2. Créer le fichier .env

Le fichier compose lit ses paramètres dans un fichier .env situé dans le même répertoire. Créez-le avec des secrets aléatoires :

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

Définissez SITE_URL sur l'adresse que les utilisateurs saisiront dans leur navigateur, par exemple http://192.168.1.20:8065 sur un réseau local ou https://chat.example.com avec un nom de domaine. Conservez le fichier .env : la base de données et le stockage utilisent ces mots de passe dès le premier démarrage, les clés API des connexions aux modèles d'IA sont chiffrées avec AM_AI_ENCRYPTION_KEY, et vous avez besoin du même fichier pour restaurer une sauvegarde.

3. Démarrer

docker compose up -d
docker compose ps

Le premier démarrage prend une ou deux minutes : PostgreSQL crée la base de données, un service à exécution unique bucket crée le seau de stockage, un service à exécution unique gifs-stickers importe le pack d'autocollants de départ, et Antimatter crée ses tables. Suivez le processus avec docker compose logs -f antimatter.

Pour utiliser un nom de domaine et HTTPS dès le départ, consultez Nom de domaine et HTTPS : avec le fichier compose, il suffit d'ajouter deux lignes dans .env et d'activer le profil https.

Les variables du fichier .env

VariableValeur par défautFonction
SITE_URLobligatoireL'adresse publique d'Antimatter (ServiceSettings.SiteURL).
POSTGRES_PASSWORDobligatoireMot de passe de l'utilisateur de la base de données antimatter.
S3_SECRET_KEYobligatoireClé secrète du stockage de fichiers.
GIFS_API_KEYobligatoireClé qu'Antimatter utilise pour appeler le service GIF.
AM_AI_ENCRYPTION_KEYvideLa clé qui chiffre les clés API des connexions aux modèles d'IA (openssl rand -base64 32). Vide : le serveur crée un fichier de clé dans le volume data. Voir La clé de chiffrement.
GIFS_UPLOAD_KEYvidePermet aux utilisateurs d'ajouter leurs propres GIF et autocollants depuis le sélecteur, et de les supprimer. Vide : désactive les envois.
DOMAINvideVotre nom de domaine, pour le profil https.
HTTP_PORT8065Port hôte du serveur web d'Antimatter.
CALLS_PORT8443Port UDP et TCP de l'audio et de la vidéo des appels.
EDGE_SUBNET172.29.71.0/28Sous-réseau du réseau entre Caddy et Antimatter. Modifiez-le s'il chevauche l'un de vos réseaux.
TZUTCFuseau horaire des conteneurs.
ANTIMATTER_IMAGEghcr.io/antimatterchat/antimatter-next:latestL'image Antimatter à exécuter (voir ci-dessous).

Ce qui s'exécute

ServiceImageRôle
antimatterghcr.io/antimatterchat/antimatter-nextLe serveur, l'application web et les applications intégrées. Publie HTTP_PORT et CALLS_PORT. Son répertoire de données est le volume data.
postgrespostgres:17-alpineLa base de données, dans le volume postgres.
filesrustfs/rustfsStockage compatible S3 pour les fichiers envoyés et les applications installées, dans le volume files.
bucketamazon/aws-cliCrée le bucket antimatter, puis se termine.
gifsghcr.io/antimatterchat/gifs-serverService de GIF et de stickers, dans le volume gifs.
gifs-stickersghcr.io/antimatterchat/gifs-serverImporte le pack de stickers de démarrage la première fois, puis se termine.
httpscaddy:2-alpineUniquement avec le profil https : HTTPS sur les ports 80 et 443.

PostgreSQL, le stockage et le service de GIF sont sur un réseau interne (private) sans accès à Internet, auquel seul Antimatter se connecte. Aucun d'entre eux ne publie de port.

Le conteneur Antimatter ne conserve rien sur le disque : ses paramètres sont dans la base de données (AM_CONFIG pointe vers elle) et ses fichiers et applications sont dans le service de stockage. Vous pouvez supprimer et recréer le conteneur à tout moment. Son volume data ne contient que le fichier de la clé de chiffrement IA, que le serveur crée lorsque AM_AI_ENCRYPTION_KEY est vide. Tout ce qu'il faut sauvegarder se trouve dans les volumes postgres, files, gifs et data, ainsi que dans votre .env.

Choisir une image

Deux images Antimatter sont publiées, toutes deux pour linux/amd64 et linux/arm64, et toutes deux construites à partir de la branche main de chaque dépôt :

ImageApplications intégréesÉtiquettes
ghcr.io/antimatterchat/antimatterAgents, Appels, GitHub, GitLab, Jira, Kanban, Métriques et Playbooks.latest, X.Y.Z pour les versions, sha-<commit>
ghcr.io/antimatterchat/antimatter-nextIdem, plus Canaux vocaux, Sondages, Mail, Calendrier, Notes, Tableau blanc, GIFs, À faire et Memes. Reconstruite chaque nuit.latest, nightly, nightly-<YYYYMMDD>, sha-<commit>

Le fichier compose du site utilise antimatter-next, car le service de GIF et la plupart des applications décrites sur ce site ne sont disponibles que dans cette image. Pour changer d'image, définissez ANTIMATTER_IMAGE dans .env et exécutez docker compose up -d.

latest évolue sous vos pieds. En production, fixez une étiquette telle que nightly-20261015 ou sha-<commit>, et modifiez-la intentionnellement lors d'une mise à niveau. Le serveur met à jour sa base de données au démarrage, il est donc impossible de revenir à une image plus ancienne, ou de passer d'antimatter-next à antimatter, sans restaurer une sauvegarde effectuée au préalable. Voir Sauvegardes et mises à niveau.

À l'intérieur de l'image

  • Le serveur se trouve dans /antimatter, avec les binaires antimatter et amctl dans /antimatter/bin (sur le PATH).
  • Il s'exécute en tant qu'utilisateur non privilégié antimatter (uid 2000) sur une base distroless minimale, sans shell.
  • Ports : 8065 (web et API), 8067 (métriques), 8074 (cluster), 8443 UDP et TCP (appels).
  • Le mode local (ServiceSettings.EnableLocalMode) est activé, donc amctl --local fonctionne à l'intérieur du conteneur. La vérification de l'état d'activité exécute amctl system status --local.
  • Les applications intégrées se trouvent dans /antimatter/prepackaged_plugins et sont signées avec la clé de signature des applications Antimatter.
  • Les outils d'extraction de texte (pdftotext, wvText, unrtf, tidy) sont inclus, ce qui permet de rechercher dans le contenu des documents envoyés.

Autres fichiers compose

Le dépôt antimatter-docker propose une configuration de production dans deploy/compose/ : nginx avec vos propres certificats ou Let's Encrypt (certbot), PostgreSQL, le service GIF facultatif (profil gifs) et des volumes nommés pour la configuration, les données et les journaux du serveur, le tout documenté dans son README. Il utilise par défaut l'image stable et stocke les fichiers sur un volume local au lieu d'un stockage S3. Utilisez-la si vous préférez nginx à Caddy, ou si vous disposez déjà de certificats.

Créer le premier administrateur

Ouvrez SITE_URL dans votre navigateur et créez un compte. Le premier compte créé sur un nouveau serveur devient administrateur système, puis l'installation vous guide pour créer votre première communauté (le nom donné par Antimatter à une équipe ou à un espace de travail).

Effectuez cette opération juste après le premier démarrage : jusqu'à ce moment, quiconque accède au serveur en premier devient son administrateur. Pour créer le compte depuis la ligne de commande, avant que le serveur ne soit accessible de l'extérieur :

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

Connectez-vous ensuite sur SITE_URL. Commencez la commande par un espace pour éviter que le mot de passe ne soit enregistré dans l'historique de votre shell (avec HISTCONTROL=ignorespace), ou modifiez le mot de passe une fois connecté.

Étapes suivantes une fois connecté :

  1. Pour une entreprise ou une organisation, définissez Type de nouvelles communautés sur Entreprise, et modifiez le type d'une communauté déjà créée dans ses paramètres : Entreprise ou communauté.
  2. Décidez qui peut créer des comptes : Connexion et comptes.
  3. Configurez l'e-mail pour que les invitations et les réinitialisations de mot de passe fonctionnent : E-mails et notifications push.
  4. Ouvrez le port des appels dans votre pare-feu : Appels et voix.
  5. Vérifiez quelles applications sont activées : Applications intégrées.

Télécharger une version

Sans Docker, installez Antimatter à partir des fichiers d'une version sur GitHub : github.com/AntimatterChat/antimatter/releases. Chaque version a un numéro de version tel que 0.9.0, et son étiquette est le même numéro précédé d'un v (v0.9.0).

Antimatter est en version bêta : ses versions publiées appartiennent à la série 0.9.0. Une version dont le numéro est suivi d'un suffixe après un tiret, par exemple 0.9.0-rc.1, est marquée Pré-version sur GitHub. Il s'agit d'une version de test, publiée avant la version finale.

Chaque version publiée contient ces fichiers, pour les serveurs amd64 et arm64 :

FichierDescription
antimatter_<version>-1_amd64.deb, antimatter_<version>-1_arm64.debLe paquet pour Debian, Ubuntu et les distributions dérivées.
antimatter-<version>-1.x86_64.rpm, antimatter-<version>-1.aarch64.rpmLe paquet pour Fedora, RHEL et les distributions compatibles avec RHEL.
antimatter-<version>-linux-amd64.tar.gz, antimatter-<version>-linux-arm64.tar.gzL'archive de la version, pour toute distribution Linux, à installer manuellement.
SHA256SUMSLa somme de contrôle SHA-256 de tous les fichiers de la version.

Les paquets et l'archive contiennent le même programme : le serveur (antimatter), l'outil en ligne de commande (amctl), les deux applications web (l'interface par défaut et l'interface classique), les applications intégrées, les modèles d'e-mails et les traductions. Les paquets ajoutent un service systemd et un fichier de configuration, ce qui en fait une installation tout-en-un : il ne reste qu'à ajouter une base de données PostgreSQL. Il n'y a pas de téléchargements de binaires séparés : les binaires se trouvent dans l'archive, dans antimatter/bin/. Ils sont statiques, ce qui permet de les exécuter sur toute distribution Linux de leur architecture.

Dans les noms des paquets, le tiret de la version de pré-version est remplacé par un tilde, afin que le gestionnaire de paquets classe la pré-version avant la version finale : la version 0.9.0-rc.1 donne antimatter_0.9.0~rc.1-1_amd64.deb et antimatter-0.9.0~rc.1-1.x86_64.rpm. L'archive conserve le tiret.

antimatter version affiche la version de la publication en tant que Numéro de compilation, avec l'identifiant de commit utilisé pour la compilation en tant que Hash de version. La ligne Version indique la version de la ligne Mattermost sur laquelle Antimatter est basé.

Vérifier le téléchargement

Téléchargez le fichier dont vous avez besoin ainsi que SHA256SUMS dans le même répertoire, depuis la page de publication ou avec curl, puis vérifiez le fichier :

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

Chaque fichier téléchargé doit être listé avec OK. Tout autre résultat signifie que le fichier est endommagé ou incomplet : téléchargez-le à nouveau et ne l'installez pas. SHA256SUMS n'est pas signé : il détecte un téléchargement endommagé, mais ne prouve rien de plus que le téléchargement HTTPS depuis GitHub.

Installer le paquet .deb ou .rpm

Le paquet installe Antimatter en tant que service systemd, qui n'a besoin que d'une base de données pour démarrer. Utilisez-le sur un serveur 64 bits Debian, Ubuntu, Fedora ou compatible RHEL avec systemd.

Contenu du paquet

CheminContenu
/opt/antimatterLe programme : bin/antimatter, bin/amctl, les applications web (client/, client-fusion/), les applications intégrées (prepackaged_plugins/), les modèles, les traductions et les polices. Chaque mise à niveau le remplace.
/etc/antimatter/antimatter.envLes paramètres du service, sous forme de variables AM_ : la base de données, l'URL du site, le service GIF. Lisible uniquement par root. Les mises à niveau les conservent.
/etc/antimatter/config/config.jsonLe fichier de configuration, où le serveur enregistre les paramètres modifiés dans la Console système. Il est créé à partir de /opt/antimatter/defaults/config.json lors de la première installation, et n'est jamais remplacé par la suite.
/var/lib/antimatterLes fichiers envoyés (data/) et les applications installées (plugins/, client-plugins/).
/var/log/antimatterLes fichiers journaux, si vous activez la journalisation sur fichier. Elle est désactivée par défaut : les journaux sont envoyés au journal système.
/usr/lib/systemd/system/antimatter.serviceLe service.
/usr/bin/amctlUn lien vers /opt/antimatter/bin/amctl.

Les répertoires vers lesquels le serveur écrit dans /opt/antimatter (config, data, plugins, client/plugins et logs) sont des liens vers /etc/antimatter, /var/lib/antimatter et /var/log/antimatter. Ainsi, une mise à niveau, qui remplace /opt/antimatter, ne touche jamais à vos données. Le paquet crée également l'utilisateur système antimatter, qui exécute le serveur et possède ces répertoires.

Le paquet dépend de ca-certificates. Il recommande PostgreSQL (postgresql sur Debian et Ubuntu, postgresql-server sur Fedora et RHEL), media-types (mailcap pour le .rpm) et gifs-server, le service GIF, qui a sa propre version de publication (voir ci-dessous). apt et dnf installent les paquets recommandés s'ils les trouvent. Il suggère poppler-utils, wv, unrtf et tidy (pas de wv pour le .rpm) : ils extraient le texte des documents envoyés, afin que la recherche trouve les mots à l'intérieur. Installez-les vous-même si vous souhaitez cette fonctionnalité.

1. Installer les paquets

Téléchargez le paquet Antimatter et le paquet du service GIF de votre architecture, vérifiez-les comme indiqué ci-dessus, et installez-les tous les deux dans une seule commande, afin que la recommandation de gifs-server soit satisfaite (il n'est pas dans les dépôts des distributions) :

# 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

Conservez le ./ : il indique à apt et dnf d’installer un fichier local. Pour installer sans le service GIF, omettez son paquet. Le paquet active le service antimatter sans le démarrer, et affiche les étapes suivantes.

2. Créer la base de données

Antimatter nécessite PostgreSQL 15 ou une version plus récente, sur ce serveur ou sur un autre. Vérifiez la version de PostgreSQL de votre distribution avec psql --version. Si elle est plus ancienne, installez une version plus récente depuis les dépôts officiels du projet PostgreSQL, ou utilisez une base de données sur un autre serveur. Sur Debian et Ubuntu, le paquet postgresql démarre la base de données. Sur Fedora et RHEL, créez-la et démarrez-la d’abord :

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

Puis créez un utilisateur et une base de données pour 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 doit accepter les connexions par mot de passe depuis 127.0.0.1 : les lignes host de son fichier pg_hba.conf, avec la méthode scram-sha-256.

3. Configurer la base de données et l’URL du site

Modifiez /etc/antimatter/antimatter.env (sudoedit /etc/antimatter/antimatter.env). Supprimez le # devant les lignes que vous utilisez, et définissez la base de données et l’adresse que les utilisateurs ouvriront :

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

Toute paramètre de la configuration peut être placé dans ce fichier, sous la forme AM_<SECTION>_<SETTING> : par exemple, SqlSettings.DataSource devient AM_SQLSETTINGS_DATASOURCE. Un paramètre défini ici ne peut pas être modifié dans la Console système. Voir Configuration. Redémarrez le serveur après chaque modification : sudo systemctl restart antimatter.

Le service définit également quelques valeurs par défaut, qui peuvent être remplacées par une ligne dans antimatter.env : la journalisation dans des fichiers est désactivée (AM_LOGSETTINGS_ENABLEFILE=false, AM_NOTIFICATIONLOGSETTINGS_ENABLEFILE=false), et le mode local est activé (AM_SERVICESETTINGS_ENABLELOCALMODE=true), afin que amctl --local fonctionne sur le serveur.

4. Démarrer

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

Au premier démarrage, le serveur crée ses tables, puis écoute sur le port 8065. Ouvrez http://<server>:8065, ou votre domaine une fois un reverse proxy en place (voir Domaine et HTTPS), et créez immédiatement le premier compte : il devient administrateur système. Pour le créer depuis la ligne de commande, utilisez les commandes amctl de Créer le premier administrateur, en remplaçant docker compose exec antimatter amctl --local par sudo -u antimatter amctl --local.

5. Activer les GIF

L'application GIF est incluse et activée, et antimatter.env pointe déjà vers le service GIF sur le même serveur (AM_GIFS_SERVICE_URL=http://127.0.0.1:8080/v2). Il reste à fournir la clé API du service. Le paquet gifs-server en a généré une lors de son installation :

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

Placez la clé dans antimatter.env sous la forme AM_GIFS_API_KEY=<key> et redémarrez Antimatter, ou saisissez-la en tant que Clé API dans Console système › Plugins › GIF. Si le service GIF est exécuté sur un autre serveur, définissez AM_GIFS_SERVICE_URL sur son adresse. Pour permettre aux utilisateurs d'ajouter leurs propres GIF et autocollants, voir GIF.

Le service

  • Il s'exécute en tant qu'utilisateur antimatter, dans /opt/antimatter, et lit /etc/antimatter/antimatter.env. systemd redémarre le serveur à chaque arrêt, et lui accorde jusqu'à une heure pour démarrer, car les migrations de base de données d'une nouvelle version peuvent être longues.
  • Ses journaux se trouvent dans le journal : journalctl -u antimatter.
  • Il est durci : /usr et /etc sont en lecture seule pour le serveur, à l'exception de /etc/antimatter/config, et il ne peut pas voir /home, /root ou /run/user. Si vous déplacez le stockage des fichiers (FileSettings.Directory), choisissez un répertoire situé en dehors de ces chemins, appartenant à antimatter.
  • Les mises à niveau remplacent le fichier de service. Pour le modifier, utilisez sudo systemctl edit antimatter, ce qui conserve vos modifications dans un fichier séparé.

Mettre à niveau un paquet

  1. Effectuez une sauvegarde (voir Sauvegardes et mises à niveau).
  2. Téléchargez le nouveau paquet et SHA256SUMS, puis vérifiez-les.
  3. Arrêtez le serveur, installez le nouveau paquet par-dessus l'ancien, puis redémarrez-le :
    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

Le paquet ne redémarre pas le serveur lui-même. Après une mise à niveau, il affiche Antimatter was upgraded; restart it to run the new version: sudo systemctl restart antimatter : si vous n'avez pas arrêté le serveur au préalable, redémarrez-le immédiatement. La mise à niveau remplace /opt/antimatter et le fichier de service, et conserve antimatter.env, config.json, /var/lib/antimatter ainsi que les journaux. Au démarrage, le serveur met à niveau la base de données et installe les versions plus récentes des applications intégrées.

Si une nouvelle version modifie le fichier antimatter.env par défaut, apt vous demande si vous souhaitez conserver votre version : conservez-la. dnf conserve la vôtre et enregistre la nouvelle sous /etc/antimatter/antimatter.env.rpmnew. Les mises à niveau ne se font que vers l'avant : n'installez pas une version plus ancienne par-dessus une version plus récente.

Supprimer un paquet

sudo apt remove antimatter ou sudo dnf remove antimatter arrête et désactive le service, et supprime le programme. Il conserve les données (/var/lib/antimatter), la configuration (/etc/antimatter), la base de données et l'utilisateur antimatter : supprimez-les vous-même pour retirer Antimatter complètement.

Applications dans les paquets et l'archive

Les paquets et l'archive incluent la dernière version signée de ces applications, dans prepackaged_plugins/ : Agents, Calls, GIFs, Memes, Notes, Polls, Todo, Voice Channels et Whiteboard. Une application qui n'avait pas encore de version publiée au moment de la création de la version du serveur est exclue : ls /opt/antimatter/prepackaged_plugins montre ce que votre version inclut. Memes et Todo sont inclus mais non activés : Bundled apps explique comment les installer et les activer.

Les autres applications des images Docker ne sont pas dans les paquets ou l'archive : Kanban, Playbooks, Mail, Calendar, GitHub, GitLab, Jira et Metrics. Installez chacune d'elles depuis ses propres versions :

ApplicationVersionsIdentifiant de l'application
Kanbanantimatter-plugin-boardsfocalboard
Playbooksantimatter-plugin-playbooksplaybooks
Courrielantimatter-plugin-mailcom.antimatterchat.mail
Calendrierantimatter-plugin-calendarcom.antimatterchat.calendar
GitHubantimatter-plugin-githubgithub
GitLabantimatter-plugin-gitlabcom.github.manland.mattermost-plugin-gitlab
Jiraantimatter-plugin-jirajira
MétriquesAntimatter-plugin-metricscom.mattermost.mattermost-plugin-metrics

Chaque version d'application contient le bundle de l'application (un fichier .tar.gz), sa signature (le même nom avec .sig ajouté) et un fichier SHA256SUMS. Pour installer une application, autorisez les envois, puis ajoutez le bundle avec 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

Pour mettre à jour une application installée de cette manière, ajoutez le nouveau bundle avec plugin add --force : les mises à jour de paquets ne mettent à jour que les applications intégrées. Vous pouvez supprimer la ligne AM_PLUGINSETTINGS_ENABLEUPLOADS par la suite. Consultez Installation d'autres applications pour les autres méthodes d'installation.

Signatures des applications

Les bundles d'applications sont signés avec la clé de signature des applications Antimatter : chaque fichier .tar.gz.sig est une signature GPG détachée de son bundle. Le serveur vérifie ces signatures avant d'installer une application intégrée. Pour vérifier un bundle vous-même :

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 doit signaler une bonne signature de Antimatter Plugin Signing, avec l'empreinte 06C8 1032 4677 0F08 BBA7 78B9 E69B 05C3 92A6 9A45. Il émet également un avertissement indiquant que la clé n'est pas certifiée par une signature de confiance : c'est normal pour une clé que vous n'avez pas signée vous-même. Une version d'application sans fichiers .sig est non signée, et ses notes de version l'indiquent.

Installation à partir d'une archive de version

L'archive, antimatter-<version>-linux-<arch>.tar.gz (par exemple antimatter-0.9.0-linux-amd64.tar.gz), convient à une distribution sans paquets .deb ou .rpm, ou à une organisation de votre choix. Elle contient un unique répertoire antimatter/ avec bin/antimatter, bin/amctl, config/config.json, les applications web (client/ et client-fusion/), les applications intégrées (prepackaged_plugins/, voir ci-dessus), les modèles d'e-mails et les traductions.

1. Préparer PostgreSQL

Antimatter ne prend en charge que PostgreSQL, version 15 ou plus récente (les versions antérieures démarrent, mais avec une erreur dans le journal). Créez un utilisateur et une base de données :

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

2. Décompresser et configurer

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

Indiquez au serveur la base de données, soit dans /opt/antimatter/config/config.json (SqlSettings.DataSource), soit avec des variables d'environnement, et définissez l'URL du site :

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

Le fichier config.json de l'archive est une configuration par défaut complète : les paramètres modifiés dans la Console système sont enregistrés à nouveau dans ce fichier. Pour conserver la configuration dans la base de données à la place, voir Configuration.

3. L'exécuter en tant que service

Une unité systemd, dans /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

Placez vos variables AM_ dans /etc/antimatter.env (lisible uniquement par root), puis :

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

Le serveur écoute sur le port 8065. Ouvrez http://<server>:8065, ou votre domaine une fois un proxy inverse en place (voir Domaine et HTTPS), et créez le premier compte : il devient administrateur système.

bin/amctl gère le serveur en cours d'exécution depuis la ligne de commande. Sur le serveur lui-même, il fonctionne sans connexion via le mode local : définissez AM_SERVICESETTINGS_ENABLELOCALMODE=true, puis exécutez sudo -u antimatter /opt/antimatter/bin/amctl --local system status.

Pour les GIF, installez le service GIF (voir ci-dessous) et définissez AM_GIFS_SERVICE_URL et AM_GIFS_API_KEY comme dans l'étape 5 des paquets.

Paquets du service GIF et du proxy de notifications

Le service GIF et le proxy de notifications push ont chacun leurs propres versions, avec les mêmes règles que celles du serveur : une archive .tar.gz, des paquets .deb et .rpm pour amd64 et arm64, ainsi qu'un fichier SHA256SUMS. Les versions contenant un tiret sont des versions préliminaires. Vérifiez les téléchargements avec sha256sum --check --ignore-missing SHA256SUMS, comme pour le serveur.

Le service GIF (gifs-server)

Versions : github.com/AntimatterChat/gifs-server/releases. L'archive est gifs-server-<version>-linux-<arch>.tar.gz ; les paquets sont nommés gifs-server.

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

Le paquet installe :

  • /usr/bin/gifs-server, ainsi que le service gifs-server, qui s'exécute en tant que l'utilisateur gifs-server et conserve son catalogue dans /var/lib/gifs-server ;
  • le service gifs-server-stickers, qui importe ou met à jour le pack de stickers dans /usr/share/gifs-server/stickers au démarrage, puis s'arrête ;
  • ses paramètres, /etc/gifs-server/gifs-server.env (variables AM_GIFS_, conservées lors des mises à niveau) et /etc/gifs-server/api-keys, avec une clé API par ligne, une clé aléatoire étant générée lors de la première installation.

Il écoute sur 127.0.0.1:8080, de sorte que seul Antimatter sur le même serveur puisse y accéder. Si Antimatter est exécuté ailleurs, définissez AM_GIFS_LISTEN=:8080 dans gifs-server.env et restreignez l'accès au port avec votre pare-feu. Le fichier liste les autres paramètres : AM_GIFS_UPLOAD_KEYS (les clés autorisées à ajouter des GIF et des stickers, et à supprimer ceux ajoutés avec elles), AM_GIFS_PUBLIC_URL, AM_GIFS_TRUST_PROXY et AM_GIFS_LOG_LEVEL. Le paquet recommande ffmpeg, gifsicle, librsvg2-bin (librsvg2-tools pour le .rpm) et une police DejaVu : le service les utilise pour créer les formats GIF, vidéo et sticker lors de l'importation ou de la réception de fichiers, et fonctionne sans eux.

Comme pour le serveur, le service est activé mais pas démarré lors de l'installation. Démarrez-le comme indiqué à l'étape 5 des paquets. Après une mise à niveau, redémarrez-le : sudo systemctl restart gifs-server. La suppression du paquet conserve le catalogue dans /var/lib/gifs-server.

Le proxy de notifications push

Versions : github.com/AntimatterChat/push-proxy/releases. L'archive est antimatter-push-proxy-<version>-linux-<arch>.tar.gz ; les paquets sont nommés antimatter-push-proxy. Le paquet installe /usr/bin/antimatter-push-proxy et le service antimatter-push-proxy, qui s'exécute en tant que l'utilisateur antimatter-push-proxy et lit /etc/antimatter-push-proxy/antimatter-push-proxy.json (conservé lors des mises à niveau). Les identifiants Apple et Firebase sont placés dans /etc/antimatter-push-proxy/certs : Notifications push explique d'où ils proviennent.

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

Dans le fichier de configuration, les chemins sont relatifs à /etc/antimatter-push-proxy : par exemple "AppleAuthKeyFile": "./certs/AuthKey_ABCDE12345.p8" et "ServiceFileLocation": "./certs/firebase-service-account.json". Ensuite, définissez Serveur de notifications push dans Antimatter sur http://<proxy host>:8066. Après une mise à niveau, redémarrez-le : sudo systemctl restart antimatter-push-proxy.

Le proxy push écoute sur le port 8066 sur toutes les adresses et ne vérifie pas qui l'appelle. Maintenez le port sur un réseau privé, ou derrière un proxy inverse qui restreint l'accès.

Autres commandes du serveur

En plus de l'exécution du serveur (antimatter, ou antimatter server), le binaire dispose de quelques commandes de maintenance. Elles lisent la même configuration que le serveur.

CommandeFonction
antimatter versionAffiche la version, le numéro de build, la date de build et l'empreinte de build.
antimatter db pingVérifie que la base de données est accessible.
antimatter db initCrée la configuration dans la base de données (avec AM_CONFIG défini sur une URL postgres://).
antimatter db migrateApplique les migrations de la base de données sans démarrer le serveur.
antimatter db versionAffiche la dernière migration appliquée à la base de données.
antimatter import bulk, antimatter export bulkImporte ou exporte des données au format par lot (voir Sauvegardes et mises à niveau).