Antimatter installeren

Installeer Antimatter met de kant-en-klare compose-bestand, vanaf het .deb- of .rpm-pakket van een release, of vanaf een releasearchief. Maak daarna het eerste beheerdersaccount aan.

Installeren met Docker Compose

Dit is de aanbevolen methode. Eén compose-bestand voert Antimatter, PostgreSQL, de opslag en de GIF-service uit. Je hebt een Linux-server nodig met Docker Engine en de Compose-plugin (docker compose), 2 CPU-kernen en 4 GB geheugen of meer.

1. Het compose-bestand downloaden

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

2. Het .env-bestand aanmaken

Het compose-bestand leest zijn instellingen uit een .env-bestand in dezelfde map. Maak dit aan met willekeurige geheimen:

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

Stel SITE_URL in op het adres dat mensen in hun browser invoeren, bijvoorbeeld http://192.168.1.20:8065 op een lokaal netwerk of https://chat.example.com met een domein. Houd het .env-bestand aan: de database en de opslag gebruiken deze wachtwoorden vanaf de eerste start, de API-sleutels van AI-modelverbindingen worden versleuteld met AM_AI_ENCRYPTION_KEY, en je hebt hetzelfde bestand nodig om een back-up te herstellen.

3. Starten

docker compose up -d
docker compose ps

De eerste start duurt een of twee minuten: PostgreSQL maakt de database aan, een eenmalige bucket-service maakt de opslagbucket aan, een eenmalige gifs-stickers-service importeert het beginstickerpakket en Antimatter maakt zijn tabellen aan. Volg dit met docker compose logs -f antimatter.

Zie Domein en HTTPS als je vanaf het begin een domeinnaam en HTTPS wilt gebruiken: met het compose-bestand zijn dat twee extra regels in .env en het https-profiel.

De .env-variabelen

VariabeleStandaardwaardeWat het doet
SITE_URLverplichtHet publieke adres van Antimatter (ServiceSettings.SiteURL).
POSTGRES_PASSWORDverplichtWachtwoord van de antimatter-databasegebruiker.
S3_SECRET_KEYverplichtGeheime sleutel van de opslag.
GIFS_API_KEYverplichtSleutel die Antimatter gebruikt om de GIF-service aan te roepen.
AM_AI_ENCRYPTION_KEYleegDe sleutel die de API-sleutels van AI-modelverbindingen versleutelt (openssl rand -base64 32). Leeg: de server maakt een sleutelbestand in de data-volume. Zie De versleutelingssleutel.
GIFS_UPLOAD_KEYleegLaat mensen hun eigen GIF’s en stickers toevoegen via de picker en ze verwijderen. Leeg schakelt uploads uit.
DOMAINleegJe domeinnaam, voor het https-profiel.
HTTP_PORT8065Hostpoort van de webserver van Antimatter.
CALLS_PORT8443UDP- en TCP-poort voor audiogesprekken en video.
EDGE_SUBNET172.29.71.0/28Subnet van het netwerk tussen Caddy en Antimatter. Wijzig dit als het overlapt met een van je netwerken.
TZUTCTijdzone van de containers.
ANTIMATTER_IMAGEghcr.io/antimatterchat/antimatter-next:latestHet Antimatter-image dat wordt uitgevoerd (zie hieronder).

Wat wordt uitgevoerd

ServiceImageRol
antimatterghcr.io/antimatterchat/antimatter-nextDe server, de webapp en de meegeleverde apps. Publiceert HTTP_PORT en CALLS_PORT. De datamap is de data-volume.
postgrespostgres:17-alpineDe database, in het postgres-volume.
filesrustfs/rustfsS3-compatibele opslag voor geüploade bestanden en geïnstalleerde apps, in het files-volume.
bucketamazon/aws-cliMaakt de antimatter-bucket aan en sluit zich daarna.
gifsghcr.io/antimatterchat/gifs-serverDe GIF- en stickerdienst, in het gifs-volume.
gifs-stickersghcr.io/antimatterchat/gifs-serverImporteert de beginstickerpack de eerste keer en sluit zich daarna.
httpscaddy:2-alpineAlleen met het https-profiel: HTTPS op poorten 80 en 443.

PostgreSQL, de opslag en de GIF-dienst zitten op een intern netwerk (private) zonder internettoegang, waaraan alleen Antimatter deelneemt. Geen van hen publiceert een poort.

De Antimatter-container bewaart niets op schijf: de instellingen staan in de database (AM_CONFIG wijst ernaar) en de bestanden en apps staan in de opslagservice. Je kunt de container op elk moment verwijderen en opnieuw aanmaken. De data-volume bevat alleen het AI-versleutelingssleutelbestand, dat de server maakt wanneer AM_AI_ENCRYPTION_KEY leeg is. Alles wat je moet back-uppen staat in de postgres, files, gifs en data-volumes, plus je .env.

Kies een image

Er zijn twee Antimatter-images gepubliceerd, beide voor linux/amd64 en linux/arm64, en beide gebouwd vanuit de main-tak van elke repository:

ImageInbegrepen appsTags
ghcr.io/antimatterchat/antimatterAgents, Calls, GitHub, GitLab, Jira, Kanban, Metrics en Playbooks.latest, X.Y.Z voor releases, sha-<commit>
ghcr.io/antimatterchat/antimatter-nextHetzelfde, plus Voice channels, Polls, Mail, Calendar, Notes, Whiteboard, GIFs, Todo en Memes. Elke nacht opnieuw gebouwd.latest, nightly, nightly-<YYYYMMDD>, sha-<commit>

Het compose-bestand van de site gebruikt antimatter-next, omdat de GIF-dienst en de meeste apps die op deze site worden beschreven alleen in dat image zitten. Om het image te wijzigen, stel je ANTIMATTER_IMAGE in .env in en voer je docker compose up -d uit.

latest verandert onder je voeten. In productie koppel je een tag vast, zoals nightly-20261015 of sha-<commit>, en wijzig je die bewust bij een upgrade. De server upgradet zijn database bij het opstarten, dus je kunt niet terug naar een ouder image, of van antimatter-next naar antimatter, zonder eerst een back-up te herstellen die vóór de upgrade is gemaakt. Zie Backups en upgrades.

In het image

  • De server staat in /antimatter, met de binaire bestanden antimatter en amctl in /antimatter/bin (op de PATH).
  • Het draait als de niet-geprivilegieerde gebruiker antimatter (uid 2000) op een minimale distroless-basis, zonder shell.
  • Poorten: 8065 (web en API), 8067 (metrics), 8074 (cluster), 8443 UDP en TCP (calls).
  • De lokale modus (ServiceSettings.EnableLocalMode) is ingeschakeld, zodat amctl --local binnen de container werkt. De gezondheidscontrole voert amctl system status --local uit.
  • De meegeleverde apps bevinden zich in /antimatter/prepackaged_plugins en zijn ondertekend met de Antimatter-app-ondertekeningsleutel.
  • Er zijn hulpmiddelen voor tekstextractie (pdftotext, wvText, unrtf, tidy) opgenomen, zodat de inhoud van geüploade documenten doorzocht kan worden.

Andere compose-bestanden

De antimatter-docker-repository bevat een productiesetup in deploy/compose/: nginx met eigen certificaten of Let's Encrypt (certbot), PostgreSQL, de optionele GIF-service (profiel gifs) en genoteerde volumes voor de configuratie, gegevens en logboeken van de server, zoals beschreven in de bijbehorende README. Standaard wordt het stabiele image gebruikt en worden bestanden op een lokaal volume opgeslagen in plaats van in S3-opslag. Gebruik dit als je de voorkeur geeft aan nginx boven Caddy, of als je al certificaten hebt.

De eerste beheerder aanmaken

Open SITE_URL in je browser en maak een account aan. Het eerste account dat op een nieuwe server wordt aangemaakt, wordt de systeembeheerder. Vervolgens leidt de installatie je door het aanmaken van je eerste community (de benaming van Antimatter voor een team of werkruimte).

Doe dit direct na de eerste start: tot die tijd wordt de eerste persoon die de server bereikt, de beheerder. Om het account in plaats daarvan via de opdrachtregel te maken, voordat de server van buitenaf bereikbaar is:

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

Log daarna in via SITE_URL. Begin de opdracht met een spatie om het wachtwoord uit je shellgeschiedenis te houden (met HISTCONTROL=ignorespace), of wijzig het wachtwoord zodra je bent ingelogd.

Volgende stappen zodra je bent ingelogd:

  1. Voor een bedrijf of organisatie, stel Type nieuwe gemeenschappen in op Werkplek, en wijzig het type van een gemeenschap die je al hebt aangemaakt in de instellingen ervan: Werkplek of gemeenschap.
  2. Bepaal wie accounts kan aanmaken: Inloggen en accounts.
  3. Configureer e-mail, zodat uitnodigingen en wachtwoordreset werken: E-mail- en pushmeldingen.
  4. Open de poort voor gesprekken in je firewall: Gesprekken en spraak.
  5. Controleer welke apps zijn ingeschakeld: Meegeleverde apps.

Een release downloaden

Zonder Docker, installeer Antimatter vanaf de bestanden van een release op GitHub: github.com/AntimatterChat/antimatter/releases. Elke release heeft een versienummer zoals 0.9.0, en de tag is hetzelfde nummer met een v ervoor (v0.9.0).

Antimatter is in bèta: de releases zijn in de 0.9.0-serie. Een release waarvan de versie een achtervoegsel na een koppelteken heeft, zoals 0.9.0-rc.1, is op GitHub gemarkeerd als Pre-release. Het is een testversie, gepubliceerd vóór de definitieve release.

Elke release bevat de volgende bestanden, voor amd64- en arm64-servers:

BestandWat het is
antimatter_<version>-1_amd64.deb, antimatter_<version>-1_arm64.debHet pakket voor Debian, Ubuntu en de distributies die daarop zijn gebaseerd.
antimatter-<version>-1.x86_64.rpm, antimatter-<version>-1.aarch64.rpmHet pakket voor Fedora, RHEL en de distributies die compatibel zijn met RHEL.
antimatter-<version>-linux-amd64.tar.gz, antimatter-<version>-linux-arm64.tar.gzHet releasearchief, voor elke Linuxdistributie, handmatig geïnstalleerd.
SHA256SUMSDe SHA-256-controlesom van elk bestand van de release.

De pakketten en het archief bevatten hetzelfde programma: de server (antimatter), het command-line-tool (amctl), beide webapps (de standaardinterface en de klassieke), de ingebouwde apps, de e-maltemplates en de vertalingen. De pakketten voegen een systemd-service en een instellingenbestand toe, zodat elk een alles-in-één-installatie is: u voegt alleen een PostgreSQL-database toe. Er zijn geen aparte binair downloads: de binaires bevinden zich in het archief, in antimatter/bin/. Ze zijn statisch, dus ze werken op elke Linuxdistributie van hun architectuur.

In de pakketnamen wordt het koppelteken van een pre-release-versie een tilde, zodat de pakketbeheerder een pre-release sorteer vóór de definitieve release: versie 0.9.0-rc.1 geeft antimatter_0.9.0~rc.1-1_amd64.deb en antimatter-0.9.0~rc.1-1.x86_64.rpm. Het archief behoudt het koppelteken.

antimatter version toont de releaseversie als Compilatienummer, met de commit waaruit het is gebouwd als Compilatiehash. De Versie-regel is de versie van de Mattermost-lijn waar Antimatter op is gebaseerd.

De download controleren

Download het bestand dat u nodig heeft en SHA256SUMS in dezelfde map, van de releasepagina of met curl, en controleer het bestand:

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

Elk bestand dat u hebt gedownload, moet met OK worden vermeld. Een ander resultaat betekent dat het bestand beschadigd of onvolledig is: download het opnieuw en installeer het niet. SHA256SUMS is niet ondertekend: het detecteert een beschadigde download en bewijst niets anders dan de HTTPS-download van GitHub.

Het .deb- of .rpm-pakket installeren

Het pakket installeert Antimatter als een systemd-service, die alleen een database nodig heeft om te starten. Gebruik het op een 64-bits Debian-, Ubuntu-, Fedora- of RHEL-compatibele server met systemd.

Wat het pakket installeert

PadInhoud
/opt/antimatterHet programma: bin/antimatter, bin/amctl, de webapps (client/, client-fusion/), de ingebouwde apps (prepackaged_plugins/), de sjablonen, vertalingen en lettertypen. Elke upgrade vervangt dit.
/etc/antimatter/antimatter.envDe instellingen van de service, als AM_-variabelen: de database, de site-URL en de GIF-service. Alleen leesbaar door root. Upgrades behouden dit.
/etc/antimatter/config/config.jsonHet configuratiebestand, waarin de server de instellingen opslaat die zijn gewijzigd in de Systeemconsole. Het wordt bij de eerste installatie aangemaakt vanuit /opt/antimatter/defaults/config.json en wordt daarna nooit meer vervangen.
/var/lib/antimatterGeüploade bestanden (data/) en geïnstalleerde apps (plugins/, client-plugins/).
/var/log/antimatterLogbestanden, als u het loggen naar bestanden inschakelt. Dit is uit: de logs gaan naar het journal.
/usr/lib/systemd/system/antimatter.serviceDe service.
/usr/bin/amctlEen koppeling naar /opt/antimatter/bin/amctl.

De mappen waarnaar de server schrijft in /opt/antimatter (config, data, plugins, client/plugins en logs) zijn koppelingen naar /etc/antimatter, /var/lib/antimatter en /var/log/antimatter. Een upgrade, die /opt/antimatter vervangt, raakt uw gegevens dus nooit aan. Het pakket maakt ook de systeemgebruiker antimatter aan, die de server uitvoert en eigenaar is van deze mappen.

Het pakket is afhankelijk van ca-certificates. Het beveelt PostgreSQL aan (postgresql op Debian en Ubuntu, postgresql-server op Fedora en RHEL), media-types (mailcap voor de .rpm) en gifs-server, de GIF-service, die een eigen release heeft (zie hieronder). apt en dnf installeren aanbevolen pakketten als ze ze vinden. Het suggereert poppler-utils, wv, unrtf en tidy (geen wv voor de .rpm): ze extraheren de tekst van geüploade documenten, zodat zoeken woorden daarin vindt. Installeer ze zelf als u dit wilt.

1. Installeer de pakketten

Download het Antimatter-pakket en het pakket van de GIF-service voor uw architectuur, controleer ze zoals hierboven getoond en installeer beide in één opdracht, zodat de aanbeveling voor gifs-server wordt voldaan (het zit niet in de pakketbronnen van de distributies):

# 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

Houd de ./ aan: dit vertelt apt en dnf om een lokaal bestand te installeren. Om te installeren zonder de GIF-service, laat het bijbehorende pakket weg. Het pakket activeert de antimatter-service, maar start deze niet, en toont de volgende stappen.

2. Maak de database aan

Antimatter heeft PostgreSQL 15 of nieuwer nodig, op deze server of op een andere. Controleer de versie van PostgreSQL van uw distributie met psql --version. Als deze ouder is, installeer een nieuwere versie uit de eigen repositories van het PostgreSQL-project, of gebruik een database op een andere server. Op Debian en Ubuntu start het postgresql-pakket de database. Op Fedora en RHEL moet u deze eerst aanmaken en starten:

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

Maak vervolgens een gebruiker en een database voor Antimatter aan:

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

PostgreSQL moet wachtwoordverbindingen van 127.0.0.1 accepteren: de host-regels in het pg_hba.conf-bestand, met de scram-sha-256-methode.

3. Stel de database en de site-URL in

Bewerk /etc/antimatter/antimatter.env (sudoedit /etc/antimatter/antimatter.env). Verwijder het # voor de regels die u gebruikt, en stel de database en het adres in dat mensen zullen openen:

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

Elke instelling van de configuratie kan in dit bestand worden opgenomen als AM_<SECTION>_<SETTING>: bijvoorbeeld is SqlSettings.DataSource AM_SQLSETTINGS_DATASOURCE. Een instelling die hier is gezet, kan niet worden gewijzigd in de Systeemconsole. Zie Configuratie. Herstart de server na elke wijziging: sudo systemctl restart antimatter.

De service stelt ook enkele standaardwaarden in, die een regel in antimatter.env overschrijft: loggen naar bestanden is uit (AM_LOGSETTINGS_ENABLEFILE=false, AM_NOTIFICATIONLOGSETTINGS_ENABLEFILE=false), en lokale modus is aan (AM_SERVICESETTINGS_ENABLELOCALMODE=true), zodat amctl --local op de server werkt.

4. Start het

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

Bij de eerste start maakt de server zijn tabellen en luistert daarna op poort 8065. Open http://<server>:8065, of uw domein zodra een reverse proxy is geconfigureerd (zie Domein en HTTPS), en maak direct het eerste account aan: dit wordt de systeembeheerder. Als u het account liever via de opdrachtregel maakt, gebruikt u de amctl-opdrachten van De eerste beheerder aanmaken, waarbij sudo -u antimatter amctl --local in de plaats komt van docker compose exec antimatter amctl --local.

5. GIF's inschakelen

De GIF's-app is ingebouwd en staat aan, en antimatter.env verwijst al naar de GIF-service op dezelfde server (AM_GIFS_SERVICE_URL=http://127.0.0.1:8080/v2). Er is nog wel een API-sleutel van de service nodig. Het gifs-server-pakket heeft er een gegenereerd bij de installatie:

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

Voeg de sleutel toe aan antimatter.env als AM_GIFS_API_KEY=<key> en herstart Antimatter, of voer deze in als API-sleutel in Systeemconsole › Plugins › GIF's. Als de GIF-service op een andere server draait, stel dan AM_GIFS_SERVICE_URL in op het adres van die server. Zie GIF's als u wilt dat mensen hun eigen GIF's en stickers kunnen toevoegen.

De service

  • De service draait als de antimatter-gebruiker, in /opt/antimatter, en leest /etc/antimatter/antimatter.env. systemd herstart de server telkens wanneer deze stopt en geeft hem tot een uur de tijd om te starten, omdat de databasemigraties van een nieuwe versie lang kunnen duren.
  • De logboeken staan in het journal: journalctl -u antimatter.
  • De service is versterkt: /usr en /etc zijn voor de server alleen-lezen, behalve /etc/antimatter/config, en hij kan /home, /root of /run/user niet inzien. Als u de opslag voor bestanden verplaatst (FileSettings.Directory), kiest u een map buiten deze mappen, eigendom van antimatter.
  • Bij upgrades wordt het servicebestand vervangen. Als u het wilt aanpassen, gebruikt u sudo systemctl edit antimatter, waardoor uw wijzigingen in een apart bestand worden bewaard.

Een pakket upgraden

  1. Maak een back-up (zie Back-ups en upgrades).
  2. Download het nieuwe pakket en SHA256SUMS, en controleer ze.
  3. Stop de server, installeer het nieuwe pakket bovenop het oude en start de server opnieuw:
    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

Het pakket herstart de server niet zelf. Na een upgrade toont het Antimatter was upgraded; restart it to run the new version: sudo systemctl restart antimatter: als je de server eerst niet hebt gestopt, herstart je deze onmiddellijk. De upgrade vervangt /opt/antimatter en het servicestandpunt, en behoudt antimatter.env, config.json, /var/lib/antimatter en de logbestanden. Bij het opstarten upgrade de server de database en installeert de nieuwere versies van de ingebouwde apps.

Als een nieuwe versie de standaard antimatter.env wijzigt, vraagt apt of je je versie wilt behouden: behoud deze. dnf behoudt de jouwe en bewaart de nieuwe als /etc/antimatter/antimatter.env.rpmnew. Upgrades gaan alleen vooruit: installeer geen oudere versie bovenop een nieuwere.

Een pakket verwijderen

sudo apt remove antimatter of sudo dnf remove antimatter stopt en schakelt het service uit en verwijdert het programma. Het behoudt de gegevens (/var/lib/antimatter), de configuratie (/etc/antimatter), de database en de antimatter-gebruiker: verwijder deze zelf om Antimatter volledig te verwijderen.

Apps in de pakketten en het archief

De pakketten en het archief bevatten de laatste ondertekende release van deze apps, in prepackaged_plugins/: Agents, Calls, GIFs, Memes, Notes, Polls, Todo, Voice Channels en Whiteboard. Een app die nog geen release had toen de server-release werd gebouwd, wordt niet meegenomen: ls /opt/antimatter/prepackaged_plugins toont wat je release bevat. Memes en Todo zijn opgenomen maar niet ingeschakeld: Bundled apps legt uit hoe je ze installeert en inschakelt.

De andere apps van de Docker-images zitten niet in de pakketten of het archief: Kanban, Playbooks, Mail, Calendar, GitHub, GitLab, Jira en Metrics. Installeer elk van hen vanuit hun eigen releases:

AppReleasesApp-id
Kanbanantimatter-plugin-boardsfocalboard
Playbooksantimatter-plugin-playbooksplaybooks
E-mailantimatter-plugin-mailcom.antimatterchat.mail
Agendaantimatter-plugin-calendarcom.antimatterchat.calendar
GitHubantimatter-plugin-githubgithub
GitLabantimatter-plugin-gitlabcom.github.manland.mattermost-plugin-gitlab
Jiraantimatter-plugin-jirajira
MetriekenAntimatter-plugin-metricscom.mattermost.mattermost-plugin-metrics

Elke apprelease bevat het bundle van de app (een .tar.gz-bestand), de handtekening (dezelfde naam met .sig erachter) en een SHA256SUMS-bestand. Om een app te installeren, staat uploads toe en voeg je het bundle toe met 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

Om een op deze manier geïnstalleerde app te upgraden, voeg je het nieuwe bundle toe met plugin add --force: pakket-upgrades upgraden alleen de gebundelde apps. Je kunt de regel AM_PLUGINSETTINGS_ENABLEUPLOADS daarna weer verwijderen. Zie Andere apps installeren voor de andere manieren om apps te installeren.

App-handtekeningen

De appbundles zijn ondertekend met de Antimatter-appondertekeningsleutel: elk .tar.gz.sig-bestand is een losse GPG-handtekening van het bijbehorende bundle. De server controleert deze handtekeningen voordat het een gebundelde app installeert. Om een bundle zelf te controleren:

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 moet een goede handtekening rapporteren van Antimatter Plugin Signing, met de vingerafdruk 06C8 1032 4677 0F08 BBA7 78B9 E69B 05C3 92A6 9A45. Het waarschuwt ook dat de sleutel niet is gecertificeerd met een vertrouwde handtekening: dat is normaal voor een sleutel die je zelf niet hebt ondertekend. Een apprelease zonder .sig-bestanden is niet ondertekend, en dat staat in de release notes.

Installeren uit een releasearchief

Het archief, antimatter-<version>-linux-<arch>.tar.gz (bijvoorbeeld antimatter-0.9.0-linux-amd64.tar.gz), is geschikt voor een distributie zonder .deb- of .rpm-pakketten, of voor een eigen opzet. Het bevat een enkele antimatter/-map met bin/antimatter, bin/amctl, config/config.json, de webapps (client/ en client-fusion/), de gebundelde apps (prepackaged_plugins/, zie hierboven), de e-mailtemplates en de vertalingen.

1. PostgreSQL voorbereiden

Antimatter ondersteunt alleen PostgreSQL, versie 15 of nieuwer (oudere versies starten wel, maar met een foutmelding in het logboek). Maak een gebruiker en een database aan:

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

2. Uitpakken en configureren

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

Wijs de server naar de database, ofwel in /opt/antimatter/config/config.json (SqlSettings.DataSource) of met omgevingsvariabelen, en stel de site-URL in:

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

De config.json in het archief is een complete standaardconfiguratie: instellingen die u in de Systeemconsole wijzigt, worden daar weer in opgeslagen. Als u de configuratie liever in de database wilt bewaren, zie Configuratie.

3. Als service uitvoeren

Een systemd-unit, 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

Plaats uw AM_-variabelen in /etc/antimatter.env (alleen leesbaar door root), en voer daarna het volgende uit:

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

De server luistert op poort 8065. Open http://<server>:8065, of uw domein zodra een reverse proxy is geïmplementeerd (zie Domein en HTTPS), en maak het eerste account aan: dit wordt de systeembeheerder.

bin/amctl beheert de draaiende server vanuit de opdrachtregel. Op de server zelf werkt het zonder inloggen via de lokale modus: stel AM_SERVICESETTINGS_ENABLELOCALMODE=true in en voer sudo -u antimatter /opt/antimatter/bin/amctl --local system status uit.

Voor GIFs, installeer de GIF-service (zie hieronder) en stel AM_GIFS_SERVICE_URL en AM_GIFS_API_KEY in zoals in stap 5 van de pakketten.

De GIF-service- en push-proxy-pakketten

De GIF-service en de push-proxy hebben hun eigen releases, met dezelfde regels als die van de server: een .tar.gz-archief, een .deb- en een .rpm-pakket voor amd64 en arm64, en een SHA256SUMS-bestand. Versies met een koppelteken zijn pre-releases. Controleer de downloads met sha256sum --check --ignore-missing SHA256SUMS, net als voor de server.

De GIF-service (gifs-server)

Releases: github.com/AntimatterChat/gifs-server/releases. Het archief heet gifs-server-<version>-linux-<arch>.tar.gz; de pakketten heten gifs-server.

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

Het pakket installeert:

  • /usr/bin/gifs-server en de gifs-server-service, die draait als de gifs-server-gebruiker en zijn catalogus bewaart in /var/lib/gifs-server;
  • de gifs-server-stickers-service, die bij het starten het stickerpakket in /usr/share/gifs-server/stickers importeert of bijwerkt en daarna stopt;
  • de instellingen, /etc/gifs-server/gifs-server.env (AM_GIFS_-variabelen, die behouden blijven bij upgrades) en /etc/gifs-server/api-keys, met één API-sleutel per regel, waarbij bij de eerste installatie een willekeurige sleutel wordt gegenereerd.

De service luistert op 127.0.0.1:8080, zodat alleen Antimatter op dezelfde server er toegang toe heeft. Als Antimatter ergens anders draait, stel dan AM_GIFS_LISTEN=:8080 in in gifs-server.env en beperk de toegang tot de poort met je firewall. Het bestand bevat de overige instellingen: AM_GIFS_UPLOAD_KEYS (de sleutels die GIF's en stickers mogen toevoegen en de daarmee toegevoegde items verwijderen), AM_GIFS_PUBLIC_URL, AM_GIFS_TRUST_PROXY en AM_GIFS_LOG_LEVEL. Het pakket beveelt ffmpeg, gifsicle, librsvg2-bin (librsvg2-tools voor het .rpm-pakket) en een DejaVu-lettertype aan: de service gebruikt deze om GIF-, video- en stickerbestanden te maken bij het importeren of ontvangen van bestanden, maar kan er ook zonder draaien.

Net als de server is de service bij installatie ingeschakeld maar niet gestart. Start deze zoals beschreven in stap 5 van de pakketten. Herstart de service na een upgrade: sudo systemctl restart gifs-server. Bij het verwijderen van het pakket blijft de catalogus in /var/lib/gifs-server behouden.

De push-proxy

Releases: github.com/AntimatterChat/push-proxy/releases. Het archief is antimatter-push-proxy-<version>-linux-<arch>.tar.gz; de pakketten heten antimatter-push-proxy. Het pakket installeert /usr/bin/antimatter-push-proxy en de antimatter-push-proxy-service, die draait als de antimatter-push-proxy-gebruiker en /etc/antimatter-push-proxy/antimatter-push-proxy.json leest (bewaard bij upgrades). De Apple- en Firebase-gegevens komen in /etc/antimatter-push-proxy/certs: Pushmeldingen legt uit waar deze vandaan komen.

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 het instellingenbestand zijn paden relatief ten opzichte van /etc/antimatter-push-proxy: bijvoorbeeld "AppleAuthKeyFile": "./certs/AuthKey_ABCDE12345.p8" en "ServiceFileLocation": "./certs/firebase-service-account.json". Stel daarna Push Notificatie Server in Antimatter in op http://<proxy host>:8066. Herstart de service na een upgrade: sudo systemctl restart antimatter-push-proxy.

De push-proxy luistert op poort 8066 op elk adres en controleert niet wie hem aanroept. Houd de poort binnen een privénetwerk, of plaats hem achter een reverse proxy die de toegang beperkt.

Andere serveropdrachten

Naast het uitvoeren van de server (antimatter, of antimatter server) heeft het binair bestand een aantal onderhoudsopdrachten. Deze lezen dezelfde configuratie als de server.

OpdrachtWat het doet
antimatter versionToont de versie, het bouwnummer, de bouwdatum en de bouwhash.
antimatter db pingControleert of de database bereikbaar is.
antimatter db initMaakt de configuratie in de database aan (met AM_CONFIG ingesteld op een postgres://-URL).
antimatter db migratePast de databasemigraties toe zonder de server te starten.
antimatter db versionToont de laatste migratie die is toegepast op de database.
antimatter import bulk, antimatter export bulkImporteert of exporteert gegevens in het bulkformaat (zie Backups en upgrades).